其它可选定义宏
概要:
以宏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函数后再进行转换的情况,而不是分别执行乘法、加法和转换操作。
主要参考资料: