Common mathematical functions | |||||||||||||||||||||||||||||||
Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray ) | |||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||
Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
Nearest integer floating point operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Floating point manipulation functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Classification and comparison | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Types | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Macro constants | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Defined in header <cmath> | ||
(1) | ||
bool isinf(float num); bool isinf(double num); | (since C++11) (until C++23) | |
constexprbool isinf(/*floating-point-type*/ num); | (since C++23) | |
SIMD overload(since C++26) | ||
Defined in header <simd> | ||
template</*math-floating-point*/ V> constexprtypename/*deduced-simd-t*/<V>::mask_type | (S) | (since C++26) |
Defined in header <cmath> | ||
template<class Integer> bool isinf( Integer num); | (A) | (since C++11) (constexpr since C++23) |
S) The SIMD overload performs an element-wise std::isinf onv_num.
| (since C++26) |
Contents |
num | - | floating-point or integer value |
v_num | - | a data-parallel object ofstd::basic_simd specialization where its element type is a floating-point type |
[
0,
v_num.size())
.GCC andClang support a-ffinite-math
option (additionally implied by-ffast-math
), which allows the respective compiler to assume the nonexistence of special IEEE-754 floating point values such as NaN, infinity, or negative zero. In other words,std::isinf
is assumed to always returnfalse under this option.
The additional overloads are not required to be provided exactly as(A). They only need to be sufficient to ensure that for their argumentnum of integer type,std::isinf(num) has the same effect asstd::isinf(static_cast<double>(num)).
#include <cfloat>#include <cmath>#include <iostream>#include <limits> int main(){constdouble max=std::numeric_limits<double>::max();constdouble inf=std::numeric_limits<double>::infinity(); std::cout<<std::boolalpha<<"isinf(NaN) = "<< std::isinf(NAN)<<'\n'<<"isinf(Inf) = "<< std::isinf(INFINITY)<<'\n'<<"isinf(max) = "<< std::isinf(max)<<'\n'<<"isinf(inf) = "<< std::isinf(inf)<<'\n'<<"isinf(0.0) = "<< std::isinf(0.0)<<'\n'<<"isinf(exp(800)) = "<< std::isinf(std::exp(800))<<'\n'<<"isinf(DBL_MIN/2.0) = "<< std::isinf(DBL_MIN/2.0)<<'\n';}
Output:
isinf(NaN) = falseisinf(Inf) = trueisinf(max) = falseisinf(inf) = trueisinf(0.0) = falseisinf(exp(800)) = trueisinf(DBL_MIN/2.0) = false
(C++11) | categorizes the given floating-point value (function)[edit] |
(C++11) | checks if the given number has finite value (function)[edit] |
(C++11) | checks if the given number is NaN (function)[edit] |
(C++11) | checks if the given number is normal (function)[edit] |
C documentation forisinf |