• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    <cfloat>

    cfloat

    <cfloat>ヘッダでは、浮動小数点数に関連する定数値マクロを定義する。これは、C言語の標準ライブラリ<float.h>と同じである。

    本ヘッダはフリースタンディング環境でも提供される。

    浮動小数点数 x は以下のようにモデル化される。

    x=sbek=1pfkbk,emineemax

    各パラメータは以下の通り。

    s符号(±1)b指数表現の基数(1 より大きい整数)e指数(最小 emin 最大 emax の整数)p精度(基数 b での仮数部の桁数)fkb より小さい非負整数(仮数部の有効数字)

    浮動小数点型で表される値としては、ゼロと f1>0 である正規化数の他に、e=emin かつ f1=0 である非正規化数(subnormal numbers)、e>emin かつ f1=0 である正規化されていない数(unnormalized numbers)、および、浮動小数点数ではない無限大や NaN 等が含まれているかもしれない(実装によっては含まれていないかもしれない)。
    NaN とは非数(Not-a-Number)を表し、ほとんど全ての演算で浮動小数点例外を起こさず結果に伝播する quiet NaN(quiet:静かな)と、演算のオペランドに使用されると浮動小数点例外を引き起こす signaling NaN(signaling:信号を発する)がある。
    ゼロと浮動小数点数ではない値(無限大や NaN 等)には符号があるかもしれない(実装によっては無いかもしれない)。

    本ヘッダで提供される整数値を表すマクロは、FLT_ROUNDS を除いて #if プリプロセッサディレクティブに使用可能な定数式である。

    丸め

    マクロ 説明 対応バージョン
    FLT_ROUNDS 浮動小数点加算の丸めモード

    基数

    マクロ 説明 対応バージョン
    FLT_RADIX 指数表現の基数。
    上記モデルでは、b

    浮動小数点の評価方法

    マクロ 説明 対応バージョン
    FLT_EVAL_METHOD 浮動小数点数がどのように評価されるかを表す整数値 C++11

    桁数

    マクロ 説明 対応バージョン
    FLT_DIG floatで正確に表現可能な10進数の最大の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、(p1)log10b
    DBL_DIG doubleで正確に表現可能な10進数の最大の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、(p1)log10b
    LDBL_DIG long doubleで正確に表現可能な10進数の最大の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、(p1)log10b
    FLT_DECIMAL_DIG floatの数値を10進数で正確に表すのに必要な有効数字の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、1+plog10b
    C++17
    DBL_DECIMAL_DIG doubleの数値を10進数で正確に表すのに必要な有効数字の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、1+plog10b
    C++17
    LDBL_DECIMAL_DIG long doubleの数値を10進数で正確に表すのに必要な有効数字の桁数。
    上記モデルでは、b10 の累乗の場合、plog10b、それ以外の場合、1+plog10b
    C++17
    DECIMAL_DIG 精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数。
    上記モデルでは、pmax を精度が一番高い浮動小数点型の p とすると、b10 の累乗の場合、pmaxlog10b、それ以外の場合、1+pmaxlog10b
    C++11
    FLT_MANT_DIG floatを基数 FLT_RADIX で表現した際の仮数部の桁数。
    上記モデルでは、p
    DBL_MANT_DIG doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。
    上記モデルでは、p
    LDBL_MANT_DIG long doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。
    上記モデルでは、p

    機械イプシロン

    マクロ 説明 対応バージョン
    FLT_EPSILON floatにおける、11 より大きい最小の数との差。(機械イプシロン)
    上記モデルでは、b1p
    DBL_EPSILON doubleにおける、11 より大きい最小の数との差。(機械イプシロン)
    上記モデルでは、b1p
    LDBL_EPSILON long doubleにおける、11 より大きい最小の数との差。(機械イプシロン)
    上記モデルでは、b1p

    非正規化数

    マクロ 説明 対応バージョン
    FLT_HAS_SUBNORM floatにおける非正規化数のサポート状況を判定する C++17
    DBL_HAS_SUBNORM doubleにおける非正規化数のサポート状況を判定する C++17
    LDBL_HAS_SUBNORM long doubleにおける非正規化数のサポート状況を判定する C++17

    最大値

    マクロ 説明 対応バージョン
    FLT_MAX floatの最大の有限値。
    上記モデルでは、(1bp)bemax
    DBL_MAX doubleの最大の有限値。
    上記モデルでは、(1bp)bemax
    LDBL_MAX long doubleの最大の有限値。
    上記モデルでは、(1bp)bemax
    FLT_MAX_10_EXP 10n 乗が、floatの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、log10((1bp)bemax)
    DBL_MAX_10_EXP 10n 乗が、doubleの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、log10((1bp)bemax)
    LDBL_MAX_10_EXP 10n 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、log10((1bp)bemax)
    FLT_MAX_EXP FLT_RADIXn1 乗が、floatの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、emax
    DBL_MAX_EXP FLT_RADIXn1 乗が、doubleの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、emax
    LDBL_MAX_EXP FLT_RADIXn1 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 n
    上記モデルでは、emax

    最小値

    マクロ 説明 対応バージョン
    FLT_MIN floatの正の正規化数のうち最小のもの。
    上記モデルでは、bemin1
    DBL_MIN doubleの正の正規化数のうち最小のもの。
    上記モデルでは、bemin1
    LDBL_MIN long doubleの正の正規化数のうち最小のもの。
    上記モデルでは、bemin1
    FLT_TRUE_MIN floatの正の最小値 C++17
    DBL_TRUE_MIN doubleの正の最小値 C++17
    LDBL_TRUE_MIN long doubleの正の最小値 C++17
    FLT_MIN_10_EXP 10n 乗がfloatの正の正規化数であるような最小の負の整数値 n
    上記モデルでは、log10bemin1
    DBL_MIN_10_EXP 10n 乗がdoubleの正の正規化数であるような最小の負の整数値 n
    上記モデルでは、log10bemin1
    LDBL_MIN_10_EXP 10n 乗がlong doubleの正の正規化数であるような最小の負の整数値 n
    上記モデルでは、log10bemin1
    FLT_MIN_EXP FLT_RADIXn1 乗がfloatの正規化数として表現可能な最小の負の整数値 n
    上記モデルでは、emin
    DBL_MIN_EXP FLT_RADIXn1 乗がdoubleの正規化数として表現可能な最小の負の整数値 n
    上記モデルでは、emin
    LDBL_MIN_EXP FLT_RADIXn1 乗がlong doubleの正規化数として表現可能な最小の負の整数値 n
    上記モデルでは、emin

    参照