Namespaces
Variants

Floating-point extensions part 1: binary floating-point arithmetic

From cppreference.net

C言語の浮動小数点拡張 - 第1部: 2進浮動小数点演算、ISO/IEC TS 18661-1:2014は、ISO/IEC/IEEE 60559:2011(IEEE-754の現行改訂版)で推奨される、C標準ライブラリの以下の新しい構成要素を定義しています。

変更点の説明: - `integer constant of type` → `型の整数定数で` - `and value` → `値は` - `replaces` → `を置き換える` - `(macro constant)` → `(マクロ定数)` HTMLタグ、属性、コード内のテキスト(`__STDC_IEC_60559_BFP__`、`long`、`201ymmL`、`__STDC_IEC_559__`)は翻訳せず、元のまま保持しています。
__STDC_IEC_60559_BFP__
long 型の整数定数で値は 201ymmL __STDC_IEC_559__ を置き換える
(マクロ定数)
__STDC_IEC_60559_COMPLEX__
long 型の整数定数で値は 201ymmL __STDC_IEC_559_COMPLEX__ を置き換える
(マクロ定数)
ヘッダーで定義 <limits.h>
CHAR_WIDTH SCHAR_WIDTH UCHAR_WIDTH SHRT_WIDTH USHRT_WIDTH INT_WIDTH UINT_WIDTH LONG_WIDTH ULONG_WIDTH LLONG_WIDTH ULLONG_WIDTH
(FP Ext 1 TS)
対応する型のビット幅
(マクロ定数)
ヘッダーで定義 <float.h>
(FP Ext 1 TS)
すべてのサポートされているバイナリ浮動小数点型と、最大CR_DECIMAL_DIG桁の有効十進数字を持つ文字シーケンスとの間の変換は正しく丸められる(これは少なくともDECIMAL_DIG + 3である)
(マクロ定数)
ヘッダーで定義 <fenv.h>
femode_t
(FP Ext 1 TS)
実装によってサポートされる動的浮動小数点制御モードの集合、動的な丸め方向モードを含む
(typedef)
FE_DFL_MODE
(FP Ext 1 TS)
デフォルトのfemode_tへのポインタ
(マクロ定数)
FE_SNANS_ALWAYS_SIGNAL
(FP Ext 1 TS)
sNaN引数がqNaNを抑制する関数( hypot fmax など)でFE_INVALIDを発生させ、qNaNを返す場合に定義される(整数定数1として)
(マクロ定数)
(FP Ext 1 TS)
指定された浮動小数点例外フラグを設定するが、それらを発生させることで生じる副作用を引き起こさない
(関数)
(FP Ext 1 TS)
指定されたフラグが浮動小数点例外フラグの保存された表現に含まれているかどうかをテストする
(関数)
(FP Ext 1 TS)
実装のすべての動的浮動小数点制御モードをまとめて取得および設定する
(関数)
ヘッダーで定義 <stdint.h>
INTn_WIDTH UINTn_WIDTH INT_LEASTn_WIDTH UINT_LEASTn_WIDTH INT_FASTn_WIDTH UINT_FASTn_WIDTH INTPTR_WIDTH UINTPTR_WIDTH INTMAX_WIDTH UINTMAX_WIDTH PTRDIFF_WIDTH SIG_ATOMIC_WIDTH SIZE_WIDTH WCHAR_WIDTH WINT_WIDTH
(FP Ext 1 TS)
対応する型のビット幅
(マクロ定数)
ヘッダーで定義 <stdlib.h>
単一の浮動小数点数を指定されたsnprintfフォーマットを使用して文字列に変換する
(関数)
ヘッダーで定義 <math.h>
FP_INT_UPWARD FP_INT_DOWNWARD FP_INT_TOWARDZERO FP_INT_TONEARESTFROMZERO FP_INT_TONEAREST
(FP Ext 1 TS)
ceil、floor、trunc、round、roundeven関数の丸め方向。fromfpファミリー関数での使用に適する
(マクロ定数)
FP_LLOGB0
(FP Ext 1 TS)
llogbが引数ゼロの場合に返す値
(マクロ定数)
FP_LLOGBNAN
(FP Ext 1 TS)
llogbが引数NaNの場合に返す値
(マクロ定数)
(FP Ext 1 TS)
float、double、long double それぞれのシグナリングNaNを表す
(マクロ定数)
FP_FAST_FADD FP_FAST_FADDL FP_FAST_DADDL FP_FAST_FSUB FP_FAST_FSUBL FP_FAST_DSUBL FP_STAST_FMUL FP_FAST_FMULL FP_FAST_DMULL FP_FAST_FDIV FP_FAST_FDIVL FP_FAST_DDIVL FP_FAST_FFMA FP_FAST_FFMAL FP_FAST_DFMAL FP_FAST_FSQRT FP_FAST_FSQRTL FP_FAST_DSQRTL
(FP Ext 1 TS)
定義されている場合、対応する関数がより大きな型での同等の関数を実行し、その後ターゲット型へのキャストを行うよりも高速に実行されることを示す
(マクロ定数)
iseqsig
(FP Ext 1 TS)

(関数マクロ)
iscanonical
(FP Ext 1 TS)
浮動小数点値が正規表現であるかどうかをテストする
(関数マクロ)
issignaling
(FP Ext 1 TS)
浮動小数点値がシグナリングNaNかどうかをテストする
(関数マクロ)
issubnormal
(FP Ext 1 TS)
浮動小数点値が非正規化数かどうかをテストする
(関数マクロ)
iszero
(FP Ext 1 TS)
浮動小数点値がゼロ(正、負、符号なし)であるかどうかをテストする
(関数マクロ)
指定された丸め方向を使用して符号付き整数に丸める
(関数)
指定された丸め方向を使用して符号なし整数に丸める
(関数)
指定された丸め方向を使用して符号付き整数に丸め、不正確さを報告する
(関数)
指定された丸め方向を使用して符号なし整数に丸め、不正確さを報告する
(関数)
最も近い値に丸め、中間値は偶数方向に丸める
(関数)
(FP Ext 1 TS)
logb と同等だが、戻り値の型が long である
(関数)
引数のうち絶対値が最大の値を返す
(関数)
引数の最小絶対値を返す
(関数)
次に大きい表現可能な浮動小数点値を返す
(関数)
次に小さい表現可能な浮動小数点値を返す
(関数)
(FP Ext 1 TS)
無限精度で計算し、一度だけ対象型に丸めた x+y を計算する
(関数)
(FP Ext 1 TS)
無限精度で計算し、一度だけ対象型に丸めた x-y を計算する
(関数)
(FP Ext 1 TS)
無限精度で計算し、ターゲット型に一度だけ丸めた x*y を計算する
(関数)
(FP Ext 1 TS)
無限精度で計算し、ターゲット型に一度だけ丸めた x/y を計算する
(関数)
(FP Ext 1 TS)
無限精度で計算し、一度だけ対象の型に丸めた場合と同じ値を fma として計算する
(関数)
(FP Ext 1 TS)
無限精度で計算し、一度だけ対象の型に丸めた場合の sqrt と同じ値を計算する
(関数)
ISO 60559 全順序関係を使用して2つの浮動小数点値を順序付けする
(関数)
2つの浮動小数点値の大きさをISO 60559の全順序関係を使用して順序付けする
(関数)
指定された浮動小数点値のISO 60559正規バイナリエンコーディングを取得する
(関数)
指定されたNaN値からペイロードを抽出する
(関数)
指定されたペイロードを持つquiet NaNを生成する
(関数)
指定されたペイロードを持つシグナリングNaNを生成する
(関数)
ヘッダーで定義 <tgmath.h>
roundeven
(FP Ext 1 TS)
roundevenのジェネリックオーバーロード roundeven
(関数)
llogb
(FP Ext 1 TS)
llogbのジェネリックオーバーロード llogb
(関数)
fmaxmag
(FP Ext 1 TS)
fmaxmagのジェネリックオーバーロード fmaxmag
(関数)
fminmag
(FP Ext 1 TS)
fminmagのジェネリックオーバーロード fminmag
(関数)
nextup
(FP Ext 1 TS)
nextupのジェネリックオーバーロード nextup
(関数)
nextdown
(FP Ext 1 TS)
nextdown のジェネリックオーバーロード
(関数)
fromfp
(FP Ext 1 TS)
fromfpのジェネリックオーバーロード fromfp
(関数)
ufromfp
(FP Ext 1 TS)
ufromfpのジェネリックオーバーロード ufromfp
(関数)
fromfpx
(FP Ext 1 TS)
fromfpxのジェネリックオーバーロード fromfpx
(関数)
ufromfpx
(FP Ext 1 TS)
ufromfpxのジェネリックオーバーロード ufromfpx
(関数)
nextdown
(FP Ext 1 TS)
nextdown のジェネリックオーバーロード
(関数)
totalorder
(FP Ext 1 TS)
totalorderのジェネリックオーバーロード totalorder
(関数)
totalordermag
(FP Ext 1 TS)
totalordermagのジェネリックオーバーロード totalordermag
(関数)
fadd
(FP Ext 1 TS)
faddのジェネリックオーバーロード fadd
(関数)
dadd
(FP Ext 1 TS)
dadd のジェネリックオーバーロード
(関数)
fsub
(FP Ext 1 TS)
fsubのジェネリックオーバーロード fsub
(関数)
dsub
(FP Ext 1 TS)
dsubのジェネリックオーバーロード dsub
(関数)
fmul
(FP Ext 1 TS)
fmul のジェネリックオーバーロード
(関数)
dmul
(FP Ext 1 TS)
dmul のジェネリックオーバーロード
(関数)
fdiv
(FP Ext 1 TS)
fdivのジェネリックオーバーロード fdiv
(関数)
ddiv
(FP Ext 1 TS)
ddiv のジェネリックオーバーロード
(関数)
ffma
(FP Ext 1 TS)
ffma のジェネリックオーバーロード
(関数)
dfma
(FP Ext 1 TS)
dfma の汎用オーバーロード
(関数)
fsqrt
(FP Ext 1 TS)
fsqrt の汎用オーバーロード
(関数)
dsqrt
(FP Ext 1 TS)
dsqrt のジェネリックオーバーロード
(関数)

注記

標準Cマクロ __STDC_IEC_559__ および __STDC_IEC_559_COMPLEX__ は、この技術仕様によって廃止予定となりました。

この拡張によってCライブラリに追加されるすべての関数とマクロは、 マクロ __STDC_WANT_IEC_60559_BFP_EXT__ が対応するヘッダーがインクルードされる前に定義されている場合にのみ宣言されます。

標準ライブラリへの追加に加えて、ISO/IEC TS 18661-1:2014はコア言語にもいくつかの変更を加えており、特に浮動小数点制御を静的(新しい #pragma STDC FENV_ROUND で制御)と動的( fesetround で制御)に分割しています。ほとんどのmath.h関数は、静的丸めモードが設定されている場合、動的丸めモードよりも優先します。