当前位置: C语言 -- 标准库 -- <math.h> -- 其它可选定义宏

其它可选定义宏


概要:

以宏FP_FAST_FADD为例:

#include <math.h>
#define FP_FAST_FADD 1

描述:

下表中的宏都是可选定义宏;如果实现定义了该宏,将扩展为整型常量1,表示对应函数在执行速度上通常与执行相应操作或者函数(函数的结果类型与实参类型相同,随后转换成较窄类型。)相当或者更快。

可选定义宏
宏 对应函数
FP_FAST_FADD fadd
FP_FAST_FADDL faddl
FP_FAST_DADDL daddl
FP_FAST_FSUB fsub
FP_FAST_FSUBL fsubl
FP_FAST_DSUBL dsubl
FP_FAST_FMUL fmul
FP_FAST_FMULL fmull
FP_FAST_DMULL dmull
FP_FAST_FDIV fdiv
FP_FAST_FDIVL fdivl
FP_FAST_DDIVL ddivl
FP_FAST_FSQRT fsqrt
FP_FAST_FSQRTL fsqrtl
FP_FAST_DSQRTL dsqrtl
FP_FAST_FFMA ① ffma
FP_FAST_FFMAL ① ffmal
FP_FAST_DFMAL ① dfmal
FP_FAST_D32ADDD64 d32addd64
FP_FAST_D32ADDD128 d32addd128
FP_FAST_D64ADDD128 d64addd128
FP_FAST_D32SUBD64 d32subd64
FP_FAST_D32SUBD128 d32subd128
FP_FAST_D64SUBD128 d64subd128
FP_FAST_D32MULD64 d32muld64
FP_FAST_D32MULD128 d32muld128
FP_FAST_D64MULD128 d64muld128
FP_FAST_D32DIVD64 d32divd64
FP_FAST_D32DIVD128 d32divd128
FP_FAST_D64DIVD128 d64divd128
FP_FAST_D32SQRTD64 d32sqrtd64
FP_FAST_D32SQRTD128 d32sqrtd128
FP_FAST_D64SQRTD128 d64sqrtd128
FP_FAST_D32FMAD64 ② d32fmad64
FP_FAST_D32FMAD128 ② d32fmad128
FP_FAST_D64FMAD128 ② d64fmad128

① 对于宏FP_FAST_FFMA、FP_FAST_FFMAL和FP_FAST_DFMAL,比较的是调用fma或者fmal函数后再进行转换的情况,而不是分别执行乘法、加法和转换操作。

② 对于宏FP_FAST_D32FMAD64、FP_FAST_D32FMAD128和FP_FAST_D64FMAD128,比较的是调用fmad64或者fmad128函数后再进行转换的情况,而不是分别执行乘法、加法和转换操作。



主要参考资料:

1、ISO/IEC 9899:2024