Skip to main content

Isfinite

Defined in header <cmath>.

Description​

Determines if the given floating point number num has finite value i.e. it is normal, subnormal or zero, but not infinite or NaN.
​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 isfinite( /* floating-point-type */ num );
Additional Overloads
// 2)
template< class Integer >
constexpr bool isfinite( Integer num );

Parameters​

​num - floating-point or integer value

Return value​

true if num has finite value, false otherwise.

Notes​

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::isfinite(num) has the same effect as std::isfinite(static_cast<double>(num)).

Examples​

#include <cfloat>
#include <cmath>
#include <iostream>

int main()
{
std::cout
<< std::boolalpha
<< "isfinite(NaN) = "
<< std::isfinite(NAN) << '\n'
<< "isfinite(Inf) = "
<< std::isfinite(INFINITY) << '\n'
<< "isfinite(-Inf) = "
<< std::isfinite(-INFINITY) << '\n'
<< "isfinite(HUGE_VAL) = "
<< std::isfinite(HUGE_VAL) << '\n'
<< "isfinite(0.0) = "
<< std::isfinite(0.0) << '\n'
<< "isfinite(exp(800)) = "
<< std::isfinite(std::exp(800)) << '\n'
<< "isfinite(DBL_MIN/2.0) = "
<< std::isfinite(DBL_MIN / 2.0) << '\n';
}

Result
isfinite(NaN) = false
isfinite(Inf) = false
isfinite(-Inf) = false
isfinite(HUGE_VAL) = false
isfinite(0.0) = true
isfinite(exp(800)) = false
isfinite(DBL_MIN/2.0) = true

Isfinite

Defined in header <cmath>.

Description​

Determines if the given floating point number num has finite value i.e. it is normal, subnormal or zero, but not infinite or NaN.
​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 isfinite( /* floating-point-type */ num );
Additional Overloads
// 2)
template< class Integer >
constexpr bool isfinite( Integer num );

Parameters​

​num - floating-point or integer value

Return value​

true if num has finite value, false otherwise.

Notes​

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::isfinite(num) has the same effect as std::isfinite(static_cast<double>(num)).

Examples​

#include <cfloat>
#include <cmath>
#include <iostream>

int main()
{
std::cout
<< std::boolalpha
<< "isfinite(NaN) = "
<< std::isfinite(NAN) << '\n'
<< "isfinite(Inf) = "
<< std::isfinite(INFINITY) << '\n'
<< "isfinite(-Inf) = "
<< std::isfinite(-INFINITY) << '\n'
<< "isfinite(HUGE_VAL) = "
<< std::isfinite(HUGE_VAL) << '\n'
<< "isfinite(0.0) = "
<< std::isfinite(0.0) << '\n'
<< "isfinite(exp(800)) = "
<< std::isfinite(std::exp(800)) << '\n'
<< "isfinite(DBL_MIN/2.0) = "
<< std::isfinite(DBL_MIN / 2.0) << '\n';
}

Result
isfinite(NaN) = false
isfinite(Inf) = false
isfinite(-Inf) = false
isfinite(HUGE_VAL) = false
isfinite(0.0) = true
isfinite(exp(800)) = false
isfinite(DBL_MIN/2.0) = true