Skip to main content

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 (since C++23).

Additional Overloads are provided for all integer types, which are treated as double.

Declarations

// 1)
constexpr bool signbit( /* floating-point-type */ num );
Additional Overloads
// 2)
template< class Integer >
constexpr 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 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 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'
}

Result
signbit(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true

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 (since C++23).

Additional Overloads are provided for all integer types, which are treated as double.

Declarations

// 1)
constexpr bool signbit( /* floating-point-type */ num );
Additional Overloads
// 2)
template< class Integer >
constexpr 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 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 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'
}

Result
signbit(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true