Spec-Zone.ru › C++

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)
1) Определяет, является ли заданное число с плавающей точкой num положительной или отрицательной бесконечностью. Библиотека предоставляет перегрузки для всех типов чисел с плавающей точкой без квалификаторов cv как тип параметра num.(с C++23)
A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые рассматриваются как 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

См. также

fpclassify
(C++11)
категоризирует заданное значение с плавающей точкой
(функция)
isfinite
(C++11)
проверяет, имеет ли заданное число конечное значение
(функция)
isnan
(C++11)
проверяет, является ли заданное число NaN
(функция)
isnormal
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API