名前空間
変種
操作

std::isinf

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
ヘッダー <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から)
ヘッダー <simd> で定義
template< /*math-floating-point*/ V >

constexpr typename /*deduced-simd-t*/<V>::mask_type

  isinf ( const V& v_num );
(S) (C++26以降)
ヘッダー <cmath> で定義
template< class Integer >
bool isinf( Integer num );
(A) (C++11以降)
(C++23 以降 constexpr)
1) 指定された浮動小数点数 num が正または負の無限大であるかどうかを判定します。ライブラリは、パラメータ num の型として、すべての cv-修飾されていない浮動小数点型に対するオーバーロードを提供します。(C++23以降)
S) SIMD オーバーロードは、v_num に対して要素ごとの std::isinf を実行します。
(定義については、math-floating-point および deduced-simd-t を参照してください。)
(C++26以降)
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。

目次

[編集] パラメータ

num - 浮動小数点数または整数値
v_num - 要素型が浮動小数点型である std::basic_simd の特殊化のデータ並列オブジェクト

[編集] 戻り値

1) true: num が無限大の場合。false: それ以外の場合。
S) i番目 の要素が、v_num[i] が無限大の場合は true、それ以外の場合は false となる、データ並列マスクオブジェクト。これは、i が範囲 [0v_num.size()) のすべての値について当てはまります。

[編集] 注記

GCC および Clang は、-ffinite-math オプション(-ffast-math によって暗黙的に有効になる場合もあります)をサポートしています。これにより、それぞれのコンパイラは NaN、無限大、または負ゼロなどの IEEE-754 浮動小数点値の非存在を想定できます。つまり、このオプションの下では 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)
与えられた数値が NaN かチェックする
(関数) [編集]
(C++11)
与えられた数値が正規化数かチェックする
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)