名前空間
変種
操作

fpclassify

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
fpclassify
(C99)
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <math.h> で定義
#define fpclassify(arg) /* 実装定義 */
(C99以降)

浮動小数点値 arg を、ゼロ、非正規数、正規数、無限大、NaN、または実装定義のカテゴリに分類します。マクロは整数値を返します。

FLT_EVAL_METHOD は無視されます。引数がその型よりも広い範囲と精度で評価されたとしても、まずその意味論的な型に変換され、その結果に基づいて分類が行われます。たとえば、正規な long double 値は、double に変換されると非正規数になり、float に変換されるとゼロになる可能性があります。

目次

[編集] パラメータ

arg - floating-point value

[編集] 戻り値

FP_INFINITEFP_NANFP_NORMALFP_SUBNORMALFP_ZERO、または実装定義の型。これは arg のカテゴリを指定します。

[編集]

#include <float.h>
#include <math.h>
#include <stdio.h>
 
const char* show_classification(double x)
{
    switch(fpclassify(x))
    {
        case FP_INFINITE:  return "Inf";
        case FP_NAN:       return "NaN";
        case FP_NORMAL:    return "normal";
        case FP_SUBNORMAL: return "subnormal";
        case FP_ZERO:      return "zero";
        default:           return "unknown";
    }
}
 
int main(void)
{
    printf("1.0/0.0 is %s\n", show_classification(1 / 0.0));
    printf("0.0/0.0 is %s\n", show_classification(0.0 / 0.0));
    printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN / 2));
    printf("-0.0 is %s\n", show_classification(-0.0));
    printf("1.0 is %s\n", show_classification(1.0));
}

出力

1.0/0.0 is Inf
0.0/0.0 is NaN
DBL_MIN/2 is subnormal
-0.0 is zero
1.0 is normal

[編集] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.12.3.1 The fpclassify macro (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.12.3.1 The fpclassify macro (p: TBD)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.12.3.1 The fpclassify macro (p: 235)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.12.3.1 The fpclassify macro (p: 216)

[編集] 関連項目

与えられた数値が有限値かチェックする
(関数マクロ) [編集]
(C99)
与えられた数値が無限大かチェックする
(関数マクロ) [編集]
(C99)
与えられた数値が NaN かチェックする
(関数マクロ) [編集]
与えられた数値が正規化数かチェックする
(関数マクロ) [編集]
C++ ドキュメント for fpclassify
English 日本語 中文(简体) 中文(繁體)