浮點數擴充第 1 部分:二進位浮點算術
出自 cppreference.com
C 語言浮點數擴充 - 第 1 部分:二進位浮點算術,ISO/IEC TS 18661-1:2014,定義了下列 C 標準函式庫的新元件,如 ISO/IEC/IEEE 60559:2011(IEEE-754 的當前修訂版)所建議
| __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 引數導致抑制 qNaN 的函式(如 hypot 或 fmax)引發 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) |
ceil、floor、trunc、round 與 roundeven 函式的捨入方向,適用於搭配 fromfp 系列函式使用 (巨集常數) |
| FP_LLOGB0 (FP Ext 1 TS) |
若引數為零,由 llogb 回傳的值 (巨集常數) |
| FP_LLOGBNAN (FP Ext 1 TS) |
若引數為 NaN,由 llogb 回傳的值 (巨集常數) |
| (FP Ext 1 TS) |
分別代表 float、double、long double 的信號 NaN (signalling 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) |
測試浮點值是否為正則值 (canonical) (函式巨集) |
| issignaling (FP Ext 1 TS) |
測試浮點值是否為信號 NaN (函式巨集) |
| issubnormal (FP Ext 1 TS) |
測試浮點值是否為次正規化數 (subnormal) (函式巨集) |
| 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) |
等同於 logb,但回傳類型為 long (函式) |
| (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 全序關係排列兩個浮點值 (函式) |
| (FP Ext 1 TS) |
使用 ISO 60559 全序關係排列兩個浮點值的絕對值 (函式) |
| (FP Ext 1 TS) |
獲取給定浮點值的 ISO 60559 正則二進位編碼 (函式) |
| (FP Ext 1 TS) |
從給定的 NaN 值中提取負載 (payload) (函式) |
| (FP Ext 1 TS) |
建立具有指定負載的靜默 NaN (quiet NaN) (函式) |
| (FP Ext 1 TS) |
建立具有指定負載的信號 NaN (signalling 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? |