浮点扩展第 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__ 已被此技术规范废弃。
只有在包含相应的头文件之前定义了宏 __STDC_WANT_IEC_60559_BFP_EXT__ 时,才会声明此扩展添加到 C 库中的所有函数和宏。
除了添加到标准库之外,ISO/IEC TS 18661-1:2014 还对核心语言进行了一些更改,特别是将浮点控制分为静态控制(由新的 #pragma STDC FENV_ROUND 控制)和动态控制(由 fesetround 控制)。大多数 math.h 函数都遵循静态舍入模式(如果已设置),而不是动态舍入模式。
本节尚不完整 原因:添加到 pragma 页面还是在此处完整描述 pragma? |