std::isinf
Определено в заголовке <cmath> | ||
|---|---|---|
| (1) | ||
bool isinf( float num ); bool isinf( double num ); bool isinf( long double num ); |
(с C++11) (до C++23) | |
constexpr bool isinf( /* floating-point-type */ num ); | (с C++23) | |
| Дополнительные перегрузки | ||
Определено в заголовке <cmath> | ||
template< class Integer > bool isinf( Integer num ); | (A) | (с C++11) (constexpr с C++23) |
num положительной или отрицательной бесконечностью. Библиотека предоставляет перегрузки для всех типов чисел с плавающей точкой без квалификаторов cv как тип параметра num.(с C++23)
double.Параметры
| num | - | значение с плавающей точкой или целое число |
Возвращаемое значение
true , если num является бесконечным, false в противном случае.
Примечания
GCC и Clang поддерживают -ffinite-math опцию (дополнительно подразумеваемую -ffast-math), которая позволяет соответствующему компилятору предполагать отсутствие специальных значений чисел с плавающей точкой IEEE-754, таких как NaN, бесконечность или отрицательный ноль. Другими словами, std::isinf предполагается, что всегда возвращает false при использовании этой опции.
Дополнительные перегрузки не обязательно должны предоставляться точно как (A). Они должны быть достаточными для обеспечения того, что для своего аргумента num целочисленного типа, std::isinf(num) имеет тот же эффект, что и std::isinf(static_cast<double>(num)).
Пример
#include <cfloat>
#include <cmath>
#include <iostream>
#include <limits>
int main()
{
const double max = std::numeric_limits<double>::max();
const double 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';
}Вывод:
isinf(NaN) = false isinf(Inf) = true isinf(max) = false isinf(inf) = true isinf(0.0) = false isinf(exp(800)) = true isinf(DBL_MIN/2.0) = false
См. также
|
(C++11) | категоризирует заданное значение с плавающей точкой (функция) |
|
(C++11) | проверяет, имеет ли заданное число конечное значение (функция) |
|
(C++11) | проверяет, является ли заданное число NaN (функция) |
|
(C++11) | проверяет, является ли заданное число нормальным (функция) |
Документация C для isinf |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/isinf