浮動小数点拡張パート1: 二進浮動小数点演算
From cppreference.com
< c | experimental
C 用浮動小数点拡張 - パート 1: 二進浮動小数点演算、ISO/IEC TS 18661-1:2014 は、ISO/IEC/IEEE 60559:2011 (IEEE-754 の現在の改訂版) の推奨に基づき、C 標準ライブラリに以下の新しいコンポーネントを定義しています。
| __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_WIDTHSHRT_WIDTH USHRT_WIDTHINT_WIDTH UINT_WIDTHLONG_WIDTH ULONG_WIDTHLLONG_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 引数が hypot や fmax のように qNaN を抑制する関数に FE_INVALID を発生させ、qNaN を返す場合に定義されます (整数定数 1 として) (マクロ定数) |
| (FP Ext 1 TS) |
指定された浮動小数点例外フラグを設定しますが、それらが発生することによる副作用は引き起こしません (関数) |
| (FP Ext 1 TS) |
与えられたフラグが浮動小数点例外フラグの保存された表現にあるかどうかをテストします (関数) |
| (FP Ext 1 TS) |
実装のすべての動的浮動小数点制御モードをまとめて取得および設定します (関数) |
| ヘッダー
<stdint.h> で定義 | |
| INTn_WIDTH UINTn_WIDTHINT_LEASTn_WIDTH UINT_LEASTn_WIDTHINT_FASTn_WIDTH UINT_FASTn_WIDTHINTPTR_WIDTH UINTPTR_WIDTHINTMAX_WIDTH UINTMAX_WIDTHPTRDIFF_WIDTHSIG_ATOMIC_WIDTHSIZE_WIDTHWCHAR_WIDTH WINT_WIDTH (FP Ext 1 TS) |
対応する型のビット単位の幅 (マクロ定数) |
| ヘッダー
<stdlib.h> で定義 | |
| (FP Ext 1 TS) |
指定された snprintf 形式を使用して、単一の浮動小数点数を文字列に変換します (関数) |
| ヘッダー
<math.h> で定義 | |
| FP_INT_UPWARDFP_INT_DOWNWARDFP_INT_TOWARDZERO FP_INT_TONEARESTFROMZEROFP_INT_TONEAREST (FP Ext 1 TS) |
fromfp 系関数で使用するのに適した、ceil、floor、trunc、round、roundeven 関数の丸め方向 (マクロ定数) |
| FP_LLOGB0 (FP Ext 1 TS) |
引数がゼロの場合に llogb が返す値 (マクロ定数) |
| FP_LLOGBNAN (FP Ext 1 TS) |
引数が NaN の場合に llogb が返す値 (マクロ定数) |
| (FP Ext 1 TS) |
それぞれ float、double、long double のシグナリング NaN を表します (マクロ定数) |
| FP_FAST_FADD FP_FAST_FADDL FP_FAST_DADDLFP_FAST_FSUB FP_FAST_FSUBL FP_FAST_DSUBLFP_FAST_FMUL FP_FAST_FMULL FP_FAST_DMULLFP_FAST_FDIV FP_FAST_FDIVL FP_FAST_DDIVLFP_FAST_FFMA FP_FAST_FFMAL FP_FAST_DFMALFP_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) |
指定された丸め方向を使用して符号付き整数に丸めます (関数) |
| (FP Ext 1 TS) |
指定された丸め方向を使用して符号なし整数に丸めます (関数) |
| (FP Ext 1 TS) |
指定された丸め方向を使用して符号付き整数に丸め、不正確さを報告します (関数) |
| (FP Ext 1 TS) |
指定された丸め方向を使用して符号なし整数に丸め、不正確さを報告します (関数) |
| (FP Ext 1 TS) |
最も近い偶数に丸めます (関数) |
| (FP Ext 1 TS) |
戻り値の型が long であることを除いて logb と同等です (関数) |
| (FP Ext 1 TS) |
最大絶対値を持つ引数の値を返します (関数) |
| (FP Ext 1 TS) |
最小絶対値を持つ引数の値を返します (関数) |
| (FP Ext 1 TS) |
次に大きい表現可能な浮動小数点値を返します (関数) |
| (FP Ext 1 TS) |
次に小さい表現可能な浮動小数点値を返します (関数) |
| (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 と同じように計算し、一度だけターゲット型に丸めます (関数) |
| (FP Ext 1 TS) |
ISO 60559 の全順序関係を使用して2つの浮動小数点値を順序付けします (関数) |
| (FP Ext 1 TS) |
ISO 60559 の全順序関係を使用して2つの浮動小数点値の絶対値を順序付けします (関数) |
| (FP Ext 1 TS) |
与えられた浮動小数点値の ISO 60559 正準二進エンコーディングを取得します (関数) |
| (FP Ext 1 TS) |
与えられた NaN 値からペイロードを抽出します (関数) |
| (FP Ext 1 TS) |
指定されたペイロードを持つ静かな NaN を作成します (関数) |
| (FP Ext 1 TS) |
指定されたペイロードを持つシグナリング NaN を作成します (関数) |
| ヘッダー
<tgmath.h> で定義 | |
| roundeven (FP Ext 1 TS) |
roundeven の汎用オーバーロード (関数) |
| llogb (FP Ext 1 TS) |
llogb の汎用オーバーロード (関数) |
| fmaxmag (FP Ext 1 TS) |
fmaxmag の汎用オーバーロード (関数) |
| fminmag (FP Ext 1 TS) |
fminmag の汎用オーバーロード (関数) |
| nextup (FP Ext 1 TS) |
nextup の汎用オーバーロード (関数) |
| nextdown (FP Ext 1 TS) |
nextdown の汎用オーバーロード (関数) |
| fromfp (FP Ext 1 TS) |
fromfp の汎用オーバーロード (関数) |
| ufromfp (FP Ext 1 TS) |
ufromfp の汎用オーバーロード (関数) |
| fromfpx (FP Ext 1 TS) |
fromfpx の汎用オーバーロード (関数) |
| ufromfpx (FP Ext 1 TS) |
ufromfpx の汎用オーバーロード (関数) |
| nextdown (FP Ext 1 TS) |
nextdown の汎用オーバーロード (関数) |
| totalorder (FP Ext 1 TS) |
totalorder の汎用オーバーロード (関数) |
| totalordermag (FP Ext 1 TS) |
totalordermag の汎用オーバーロード (関数) |
| fadd (FP Ext 1 TS) |
fadd の汎用オーバーロード (関数) |
| dadd (FP Ext 1 TS) |
dadd の汎用オーバーロード (関数) |
| fsub (FP Ext 1 TS) |
fsub の汎用オーバーロード (関数) |
| dsub (FP Ext 1 TS) |
dsub の汎用オーバーロード (関数) |
| fmul (FP Ext 1 TS) |
fmul の汎用オーバーロード (関数) |
| dmul (FP Ext 1 TS) |
dmul の汎用オーバーロード (関数) |
| fdiv (FP Ext 1 TS) |
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 のほとんどの関数は、設定されている場合、動的丸めモードよりも静的丸めモードを尊重します。
| このセクションは未完成です 理由: pragma ページに追加するか、ここで pragma を完全に説明するか? |