浮点扩展第1部分:二进制浮点算术
来自 cppreference.cn
< 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 参数导致抑制 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 (宏常量) |
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) |
与 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 值中提取负载 (函数) |
(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? |