Skip to content

Files

Latest commit

6c3bfff · Nov 15, 2015

History

History
61 lines (53 loc) · 8.39 KB

cfloat.md

File metadata and controls

61 lines (53 loc) · 8.39 KB

#cfloat

  • cfloat[meta header]
  • [mathjax enable]

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

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

x = s b e k = 1 p f k b k , e m i n e e m a x

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

s 符号( ± 1 ) b 指数表現の基数(1 より大きい整数) e 指数(最小  e m i n  最大  e m a x  の整数) p 精度(基数  b  での仮数部の桁数) f k b  より小さい非負整数(仮数部の有効数字)

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

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

マクロ 説明 対応バージョン
DBL_DIG doubleで正確に表現可能な10進数の最大の桁数。
上記モデルでは、$b$ が 10 の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
DBL_EPSILON doubleにおける、$1$ と 1 より大きい最小の数との差。(機械イプシロン)
上記モデルでは、$b^{1-p}$
DBL_MANT_DIG doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。
上記モデルでは、$p$
DBL_MAX doubleの最大の有限値。
上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
DBL_MAX_10_EXP 10 n 乗が、doubleの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
DBL_MAX_EXP FLT_RADIX n 1 乗が、doubleの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$e_{\rm max}$
DBL_MIN doubleの正の正規化数のうち最小のもの。
上記モデルでは、$b^{e_{\rm min} - 1}$
DBL_MIN_10_EXP 10 n 乗がdoubleの正の正規化数であるような最小の負の整数値 n
上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
DBL_MIN_EXP FLT_RADIX n 1 乗がdoubleの正規化数として表現可能な最小の負の整数値 n
上記モデルでは、$e_{\rm min}$
DECIMAL_DIG 精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数。
上記モデルでは、$p_{\rm max}$ を精度が一番高い浮動小数点型の p とすると、$b$ が 10 の累乗の場合、$p_{\rm max} \log_{10} b$、それ以外の場合、$\lceil 1 + p_{\rm max}\log_{10} b\rceil$
C++11
FLT_DIG floatで正確に表現可能な10進数の最大の桁数。
上記モデルでは、$b$ が 10 の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
FLT_EPSILON floatにおける、$1$ と 1 より大きい最小の数との差。(機械イプシロン)
上記モデルでは、$b^{1-p}$
FLT_EVAL_METHOD 浮動小数点数がどのように評価されるかを表す整数値 C++11
FLT_MANT_DIG floatを基数 FLT_RADIX で表現した際の仮数部の桁数。
上記モデルでは、$p$
FLT_MAX floatの最大の有限値。
上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
FLT_MAX_10_EXP 10 n 乗が、floatの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
FLT_MAX_EXP FLT_RADIX n 1 乗が、floatの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$e_{\rm max}$
FLT_MIN floatの正の正規化数のうち最小のもの。
上記モデルでは、$b^{e_{\rm min} - 1}$
FLT_MIN_10_EXP 10 n 乗がfloatの正の正規化数であるような最小の負の整数値 n
上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
FLT_MIN_EXP FLT_RADIX n 1 乗がfloatの正規化数として表現可能な最小の負の整数値 n
上記モデルでは、$e_{\rm min}$
FLT_RADIX 指数表現の基数。
上記モデルでは、$b$
FLT_ROUNDS 浮動小数点加算の丸めモード
LDBL_DIG long doubleで正確に表現可能な10進数の最大の桁数。
上記モデルでは、$b$ が 10 の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
LDBL_EPSILON long doubleにおける、$1$ と 1 より大きい最小の数との差。(機械イプシロン)
上記モデルでは、$b^{1-p}$
LDBL_MANT_DIG long doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。
上記モデルでは、$p$
LDBL_MAX long doubleの最大の有限値。
上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
LDBL_MAX_10_EXP 10 n 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
LDBL_MAX_EXP FLT_RADIX n 1 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 n
上記モデルでは、$e_{\rm max}$
LDBL_MIN long doubleの正の正規化数のうち最小のもの。
上記モデルでは、$b^{e_{\rm min} - 1}$
LDBL_MIN_10_EXP 10 n 乗がlong doubleの正の正規化数であるような最小の負の整数値 n
上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
LDBL_MIN_EXP FLT_RADIX n 1 乗がlong doubleの正規化数として表現可能な最小の負の整数値 n
上記モデルでは、$e_{\rm min}$