std::ceil,s...f,std::ceill(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::ceil,s...f,std::ceill(3) β€” C++ Standard Libary πŸ’–

okay bestie, welcome to the group chat for std::ceil, std::ceilf, and std::ceill from the C++ Standard Libary manual, section (3). it’s giving math but make it fashion ✨


πŸŽ€ NAME πŸŽ€

std::ceil,std::ceilf,std::ceill - std::ceil,std::ceilf,std::ceill

yes, the name is literally the same as the one-liner, no cap πŸ’€


✨ Synopsis ✨

Defined in header <cmath>
float       ceil ( float num );

double      ceil ( double num );                            (until C++23)

long double ceil ( long double num );
constexpr /* floating-point-type */                         (since C++23)
            ceil ( /* floating-point-type */ num );
float       ceilf( float num );                     (1) (2) (since C++11)
                                                            (constexpr since C++23)
long double ceill( long double num );                   (3) (since C++11)
                                                            (constexpr since C++23)
Additional overloads (since C++11)
Defined in header <cmath>
template< class Integer >                               (A)
(constexpr since C++23)
double      ceil ( Integer num );

1-3) Computes the least integer value not less than num.

The library provides overloads of std::ceil for all cv-unqualified floating-point types as the type of the parameter. (since C++23)

A) Additional overloads are provided for all integer types, which are treated as double. (since C++11)


🌸 Parameters 🌸

  • num β€” floating point or integer value

πŸ¦‹ Return value πŸ¦‹

If no errors occur, the smallest integer value not less than num, that is ⌈numβŒ‰, is returned.

πŸ¦‹ Return value πŸ¦‹ <small>(yes, again, the page really does this πŸ’€)</small>

the diagram bits are math-ceil.svg and num 🫢


πŸ’… Error handling πŸ’…

Errors are reported as specified in math_errhandling.

If the implementation supports IEEE floating-point arithmetic (IEC 60559), then:

  • The current rounding mode has no effect.
  • If num is ±∞, it is returned unmodified.
  • If num is Β±0, it is returned, unmodified.
  • If num is NaN, NaN is returned.

πŸ”₯ Notes πŸ”₯

FE_INEXACT may be (but is not required to be) raised when rounding a non-integer finite value.

The largest representable floating-point values are exact integers in all standard floating-point formats, so this function never overflows on its own; however the result may overflow any integer type (including std::intmax_t), when stored in an integer variable. It is for this reason that the return type is floating-point not integral.

This function (for double argument) behaves as if (except for the freedom to not raise FE_INEXACT) implemented by the following code:

#include <cfenv>
#include <cmath>
#pragma STDC FENV_ACCESS ON

double ceil(double x)
{
    int save_round = std::fegetround();
    std::fesetround(FE_UPWARD);
    double result = std::rint(x); // or std::nearbyint
    std::fesetround(save_round);
    return result;
}

The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that for their argument num of integer type, std::ceil(num) has the same effect as std::ceil(static_cast<double>(num)).


πŸ“ Example πŸ“

Original page says // Run this code β€” so here’s the code, bestie:

#include <cmath>
#include <iostream>

int main()
{
    std::cout << std::fixed
              << "ceil(+2.4) = " << std::ceil(+2.4) << '\n'
              << "ceil(-2.4) = " << std::ceil(-2.4) << '\n'
              << "ceil(-0.0) = " << std::ceil(-0.0) << '\n'
              << "ceil(-Inf) = " << std::ceil(-INFINITY) << '\n';
}

Output:

ceil(+2.4) = 3.000000
ceil(-2.4) = -2.000000
ceil(-0.0) = -0.000000
ceil(-Inf) = -inf

🌈 See also 🌈

  • floor, floorf (C++11), floorl (C++11) β€” nearest integer not greater than the given value (function)
  • trunc (C++11), truncf (C++11), truncl (C++11) β€” nearest integer not greater in magnitude than the given value (function)
  • round (C++11), roundf (C++11), roundl (C++11), lround (C++11), lroundf (C++11), lroundl (C++11), llround (C++11), llroundf (C++11), llroundl (C++11) β€” nearest integer, rounding away from zero in halfway cases (function)
  • nearbyint (C++11), nearbyintf (C++11), nearbyintl (C++11) β€” nearest integer using current rounding mode (function)
  • rint (C++11), rintf (C++11), rintl (C++11), lrint (C++11), lrintf (C++11), lrintl (C++11), llrint (C++11), llrintf (C++11), llrintl (C++11) β€” nearest integer using current rounding mode with exception if the result differs (function)
  • C documentation for ceil

  • Fast ceiling of an integer division β€” StackOverflow

that’s the page, bestie πŸ’– source: http://cppreference.com Β· date: 2024.06.10 Β· page: std::ceil,s...f,std::ceill(3) β€” bye! 🫢

πŸ“¦ where this page comes from