std::signbit(3)

NAME
std::signbit - std::signbit

Synopsis
   Defined in header <cmath>
   bool signbit( float num );
                        (since C++11)
   bool signbit( double num ); (until C++23)
   bool signbit( long double num );
   constexpr bool signbit( /* floating-point-type */ (1) (since C++23)
   num );
   Additional overloads
   Defined in header <cmath>
   template< class Integer > (A) (since C++11)
   bool signbit( Integer num ); (constexpr since C++23)
   1) Determines if the given floating point number num is negative.
   The library provides overloads for all cv-unqualified floating-point types as the
   type of the parameter num.
   (since C++23)
   A) Additional overloads are provided for all integer types, which are treated as
   double.

Parameters
   num - floating-point or integer value

Return value
   true if num is negative, false otherwise.

Notes
   This function detects the sign bit of zeroes, infinities, and NaNs. Along with
   std::copysign, std::signbit is one of the only two portable ways to examine the sign
   of a NaN.
   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::signbit(num) has the same effect as std::signbit(static_cast<double>(num)).

Example
// Run this code
 #include <cmath>
 #include <iostream>
 int main()
 {
     std::cout << std::boolalpha
               << "signbit(+0.0) = " << std::signbit(+0.0) << '\n'
               << "signbit(-0.0) = " << std::signbit(-0.0) << '\n'
               << "signbit(+nan) = " << std::signbit(+NAN) << '\n'
               << "signbit(-nan) = " << std::signbit(-NAN) << '\n'
               << "signbit(+inf) = " << std::signbit(+INFINITY) << '\n'
               << "signbit(-inf) = " << std::signbit(-INFINITY) << '\n';
 }

Output:
 signbit(+0.0) = false
 signbit(-0.0) = true
 signbit(+nan) = false
 signbit(-nan) = true
 signbit(+inf) = false
 signbit(-inf) = true

See also
   abs(float)
   fabs
   fabsf absolute value of a floating point value (\(\small{|x|}\)|x|)
   fabsl (function)
   (C++11)
   (C++11)
   copysign
   copysignf
   copysignl copies the sign of a floating point value
   (C++11) (function)
   (C++11)
   (C++11)
   C documentation for
   signbit