名稱空間
變體
操作

浮點擴充套件第1部分:二進位制浮點算術

來自 cppreference.com

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 引數導致抑制 qNaN 的函式(如 hypotfmax)引發 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> 中定義
使用指定的 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
(宏常量)
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)
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 全序關係對兩個浮點值進行排序
(函式)
使用 ISO 60559 全序關係對兩個浮點值的幅值進行排序
(函式)
獲取給定浮點值的 ISO 60559 規範二進位制編碼
(函式)
從給定的 NaN 值中提取負載
(函式)
建立帶有指定負載的靜默 NaN
(函式)
建立帶有指定負載的信令 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 函式在設定了靜態舍入模式時,會優先遵循靜態舍入模式而非動態舍入模式。