Signbit
Defined in header <cmath>
.
Description
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
(od C++23).
Additional Overloads are provided for all integer types, which are treated as double.
Declarations
- C++23
- C++11
// 1)
constexpr bool signbit( /* floating-point-type */ num );
// 2)
template< class Integer >
constexpr bool signbit( Integer num );
// 1)
bool signbit( float num );
// 2)
bool signbit( double num );
// 3)
bool signbit( long double num );
// 4)
template< class Integer >
bool signbit( Integer num );
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 NaN
s.
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 Additional Overloads.
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))
.
Examples
#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(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true