当前位置: C语言 -- 标准库 -- <math.h>

<math.h>头文件

<math.h>头文件声明了多个类型和数学函数,并定义了多个宏。<math.h>头文件存在多个函数组,这些函数组由一个主函数和相同函数名后缀为f或者l的函数组成。主函数存在一个或者多个double类型的参数,double类型的返回值,或者两者兼而有之;后缀为f的函数存在一个或者多个float类型的参数,float类型的返回值,或者两者兼而有之;后缀为l的函数存在一个或者多个long double类型的参数,long double类型的返回值,或者两者兼而有之。


<math.h>头文件中声明的类型、函数以及定义的宏具体如下:

编译提示(pragma):
FP_CONTRACT 表示是否允许收缩表达式的编译提示。

类型(type):
float_t 表示至少与float类型一样宽的浮点类型。
double_t 表示至少与double类型一样宽的浮点类型。
_Decimal32_t 表示至少与_Decimal32类型一样宽的十进制浮点类型。
_Decimal64_t 表示至少与_Decimal64类型一样宽的十进制浮点类型。

功能测试宏(feature test macro):
__STDC_VERSION_MATH_H__ 表示<math.h>头文件版本的宏。

宏(macro):
HUGE_VAL 表示double类型巨大值的宏。
HUGE_VALF 表示float类型巨大值的宏。
HUGE_VALL 表示long double类型巨大值的宏。
HUGE_VAL_D32 表示_Decimal32类型正无穷大的宏。
HUGE_VAL_D64 表示_Decimal64类型正无穷大的宏。
HUGE_VAL_D128 表示_Decimal128类型正无穷大的宏。
INFINITY 表示float类型无穷大的宏。
DEC_INFINITY 表示_Decimal32类型无穷大的宏。
NAN 表示非数值的宏。
DEC_NAN 表示_Decimal32类型安静非数值的宏。
FP_INFINITE 表示浮点类别无穷大的宏。
FP_NAN 表示浮点类别非数值的宏。
FP_NORMAL 表示浮点类别规格化数的宏。
FP_SUBNORMAL 表示浮点类别次规格化数的宏。
FP_ZERO 表示浮点类别0的宏。
FP_INT_UPWARD 表示向上舍入的数学舍入方向宏。
FP_INT_DOWNWARD 表示向下舍入的数学舍入方向宏。
FP_INT_TOWARDZERO 表示向0舍入的数学舍入方向宏。
FP_INT_TONEARESTFROMZERO 表示向远离0的方向就近舍入的数学舍入方向宏。
FP_INT_TONEAREST 表示向偶数方向就近舍入的数学舍入方向宏。
FP_FAST_FMA 表示fma函数执行不慢于对应类型执行相应操作的宏。
FP_FAST_FMAF 表示fmaf函数执行不慢于对应类型执行相应操作的宏。
FP_FAST_FMAL 表示fmal函数执行不慢于对应类型执行相应操作的宏。
FP_FAST_FMAD32 表示fmad32函数执行不慢于对应类型执行相应操作的宏。
FP_FAST_FMAD64 表示fmad64函数执行不慢于对应类型执行相应操作的宏。
FP_FAST_FMAD128 表示fmad128函数执行不慢于对应类型执行相应操作的宏。
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_ILOGB0 表示函数ilogb(0)返回值的宏。
FP_ILOGBNAN 表示函数ilogb(NaN)返回值的宏。
FP_LLOGB0 表示函数llogb(0)返回值的宏。
FP_LLOGBNAN 表示函数llogb(NaN)返回值的宏。
MATH_ERRNO 表示通过errno报告错误的宏。
MATH_ERREXCEPT 表示通过引发浮点异常报告错误的宏。
math_errhandling 表示通过errno和引发浮点异常报告错误的宏。
分类宏:
fpclassify 对参数按浮点类别进行分类的宏。
iscanonical 判断参数是否具有规范表示形式的宏。
isfinite 判断参数是否为有限值的宏。
isinf 判断参数是否为无穷大的宏。
isnan 判断参数是否为非数值的宏。
isnormal 判断参数是否为规格化数的宏。
signbit 判断参数符号是否为负号的宏。
issignaling 判断参数是否为信号非数值的宏。
issubnormal 判断参数是否为次规格化数的宏。
iszero 判断参数是否为0的宏。
比较宏:
isgreater 判断第一个参数是否大于第二个参数的宏。
isgreaterequal 判断第一个参数是否大于等于第二个参数的宏。
isless 判断第一个参数是否小于第二个参数的宏。
islessequal 判断第一个参数是否小于等于第二个参数的宏。
islessgreater 判断第一个参数是否小于或者大于第二个参数的宏。
isunordered 判断参数是否无序的宏。
iseqsig 判断参数是否相等的宏。

函数(function):
三角函数:
acos
acosf
acosl
acosd32
acosd64
acosd128
反余弦函数。
asin
asinf
asinl
asind32
asind64
asind128
反正弦函数。
atan
atanf
atanl
atand32
atand64
atand128
反正切函数。
atan2
atan2f
atan2l
atan2d32
atan2d64
atan2d128
y/x的反正切函数。
cos
cosf
cosl
cosd32
cosd64
cosd128
余弦函数。
sin
sinf
sinl
sind32
sind64
sind128
正弦函数。
tan
tanf
tanl
tand32
tand64
tand128
正切函数。
acospi
acospif
acospil
acospid32
acospid64
acospid128
反余弦值除以π的函数。
asinpi
asinpif
asinpil
asinpid32
asinpid64
asinpid128
反正弦值除以π的函数。
atanpi
atanpif
atanpil
atanpid32
atanpid64
atanpid128
反正切值除以π的函数。
atan2pi
atan2pif
atan2pil
atan2pid32
atan2pid64
atan2pid128
y/x的反正切值除以π的函数。
cospi
cospif
cospil
cospid32
cospid64
cospid128
π×x的余弦函数。
sinpi
sinpif
sinpil
sinpid32
sinpid64
sinpid128
π×x的正弦函数。
tanpi
tanpif
tanpil
tanpid32
tanpid64
tanpid128
π×x的正切函数。
双曲线函数:
acosh
acoshf
acoshl
acoshd32
acoshd64
acoshd128
反双曲余弦函数。
asinh
asinhf
asinhl
asinhd32
asinhd64
asinhd128
反双曲正弦函数。
atanh
atanhf
atanhl
atanhd32
atanhd64
atanhd128
反双曲正切函数。
cosh
coshf
coshl
coshd32
coshd64
coshd128
双曲余弦函数。
sinh
sinhf
sinhl
sinhd32
sinhd64
sinhd128
双曲正弦函数。
tanh
tanhf
tanhl
tanhd32
tanhd64
tanhd128
双曲正切函数。
指数和对数函数:
exp
expf
expl
expd32
expd64
expd128
自然指数函数。
exp10
exp10f
exp10l
exp10d32
exp10d64
exp10d128
以10为基数的指数函数。
exp10m1
exp10m1f
exp10m1l
exp10m1d32
exp10m1d64
exp10m1d128
返回(10x-1)的函数。
exp2
exp2f
exp2l
exp2d32
exp2d64
exp2d128
以2为基数的指数函数。
exp2m1
exp2m1f
exp2m1l
exp2m1d32
exp2m1d64
exp2m1d128
返回(2x-1)的函数。
expm1
expm1f
expm1l
expm1d32
expm1d64
expm1d128
返回(ex-1)的函数。
frexp
frexpf
frexpl
将标准浮点数分解为规格化小数和整数幂的函数。
frexpd32
frexpd64
frexpd128
将十进制浮点数分解为规格化小数和整数幂的函数。
ilogb
ilogbf
ilogbl
ilogbd32
ilogbd64
ilogbd128
提取int类型指数的函数。
ldexp
ldexpf
ldexpl
返回(x×2p)的函数。
ldexpd32
ldexpd64
ldexpd128
返回(x×10p)的函数。
llogb
llogbf
llogbl
llogbd32
llogbd64
llogbd128
提取long int类型指数的函数。
log
logf
logl
logd32
logd64
logd128
自然对数函数。
log10
log10f
log10l
log10d32
log10d64
log10d128
以10为底数的对数函数。
log10p1
log10p1f
log10p1l
log10p1d32
log10p1d64
log10p1d128
返回log10(1+x)的函数。
log1p
log1pf
log1pl
log1pd32
log1pd64
log1pd128
返回loge(1+x)的函数。
logp1
logp1f
logp1l
logp1d32
logp1d64
logp1d128
返回loge(1+x)的函数。
log2
log2f
log2l
log2d32
log2d64
log2d128
以2为底数的对数函数。
log2p1
log2p1f
log2p1l
log2p1d32
log2p1d64
log2p1d128
返回log2(1+x)的函数。
logb
logbf
logbl
logbd32
logbd64
logbd128
提取浮点格式指数的函数。
modf
modff
modfl
modfd32
modfd64
modfd128
将参数分解成整数部分和小数部分的函数。
scalbn
scalbnf
scalbnl
scalbnd32
scalbnd64
scalbnd128
返回x×FLT_RADIXn的函数。
scalbln
scalblnf
scalblnl
scalblnd32
scalblnd64
scalblnd128
返回x×FLT_RADIXn的函数。
幂和绝对值函数:
cbrt
cbrtf
cbrtl
cbrtd32
cbrtd64
cbrtd128
立方根函数。
compoundn
compoundnf
compoundnl
compoundnd32
compoundnd64
compoundnd128
返回(1+x)n的函数。
fabs
fabsf
fabsl
fabsd32
fabsd64
fabsd128
绝对值函数。
hypot
hypotf
hypotl
hypotd32
hypotd64
hypotd128
返回x2+y2的函数。
pow
powf
powl
powd32
powd64
powd128
幂函数。
pown
pownf
pownl
pownd32
pownd64
pownd128
返回xn的函数。
powr
powrf
powrl
powrd32
powrd64
powrd128
返回eylogex的函数。
rootn
rootnf
rootnl
rootnd32
rootnd64
rootnd128
返回x1/n的函数。
rsqrt
rsqrtf
rsqrtl
rsqrtd32
rsqrtd64
rsqrtd128
返回1/x 的函数。
sqrt
sqrtf
sqrtl
sqrtd32
sqrtd64
sqrtd128
平方根函数。
误差和伽玛函数:
erf
erff
erfl
erfd32
erfd64
erfd128
误差函数。
erfc
erfcf
erfcl
erfcd32
erfcd64
erfcd128
互补误差函数。
lgamma
lgammaf
lgammal
lgammad32
lgammad64
lgammad128
计算参数伽玛绝对值的自然对数的函数。
tgamma
tgammaf
tgammal
tgammad32
tgammad64
tgammad128
伽玛函数。
最近整数函数:
ceil
ceilf
ceill
ceild32
ceild64
ceild128
向上取整函数。
floor
floorf
floorl
floord32
floord64
floord128
向下取整函数。
nearbyint
nearbyintf
nearbyintl
nearbyintd32
nearbyintd64
nearbyintd128
根据当前舍入模式舍入为整数值的函数。
rint
rintf
rintl
rintd32
rintd64
rintd128
根据当前舍入模式舍入为整数值的函数。
lrint
lrintf
lrintl
lrintd32
lrintd64
lrintd128
根据当前舍入模式舍入为long int类型整数值的函数。
llrint
llrintf
llrintl
llrintd32
llrintd64
llrintd128
根据当前舍入模式舍入为long long int类型整数值的函数。
round
roundf
roundl
roundd32
roundd64
roundd128
舍入到最近整数值的函数。
lround
lroundf
lroundl
lroundd32
lroundd64
lroundd128
舍入到long int类型最近整数值的函数。
llround
llroundf
llroundl
llroundd32
llroundd64
llroundd128
舍入到long long int类型最近整数值的函数。
roundeven
roundevenf
roundevenl
roundevend32
roundevend64
roundevend128
舍入到最近整数值的函数。
trunc
truncf
truncl
truncd32
truncd64
truncd128
截取整数部分的函数。
fromfp
fromfpf
fromfpl
fromfpd32
fromfpd64
fromfpd128
根据舍入方向舍入得到浮点形式表示的有符号整数的函数。
ufromfp
ufromfpf
ufromfpl
ufromfpd32
ufromfpd64
ufromfpd128
根据舍入方向舍入得到浮点形式表示的无符号整数的函数。
fromfpx
fromfpxf
fromfpxl
fromfpxd32
fromfpxd64
fromfpxd128
根据舍入方向舍入得到浮点形式表示的有符号整数的函数。
ufromfpx
ufromfpxf
ufromfpxl
ufromfpxd32
ufromfpxd64
ufromfpxd128
根据舍入方向舍入得到浮点形式表示的无符号整数的函数。
余数函数:
fmod
fmodf
fmodl
fmodd32
fmodd64
fmodd128
计算余数函数。
remainder
remainderf
remainderl
remainderd32
remainderd64
remainderd128
计算余数函数。
remquo
remquof
remquol
计算余数函数。
操作函数:
copysign
copysignf
copysignl
copysignd32
copysignd64
copysignd128
复制符号函数。
nan
nanf
nanl
nand32
nand64
nand128
生成安静非数值的函数。
nextafter
nextafterf
nextafterl
nextafterd32
nextafterd64
nextafterd128
确定下一个可表示值的函数。
nexttoward
nexttowardf
nexttowardl
nexttowardd32
nexttowardd64
nexttowardd128
确定下一个可表示值的函数。
nextup
nextupf
nextupl
nextupd32
nextupd64
nextupd128
确定大于参数的下一个可表示值的函数。
nextdown
nextdownf
nextdownl
nextdownd32
nextdownd64
nextdownd128
确定小于参数的下一个可表示值的函数。
canonicalize
canonicalizef
canonicalizel
canonicalized32
canonicalized64
canonicalized128
存储规范结果的函数。
最大、最小、正差函数:
fdim
fdimf
fdiml
fdimd32
fdimd64
fdimd128
正差函数。
fmax
fmaxf
fmaxl
fmaxd32
fmaxd64
fmaxd128
确定较大值函数。
fmin
fminf
fminl
fmind32
fmind64
fmind128
确定较小值函数。
fmaximum
fmaximumf
fmaximuml
fmaximumd32
fmaximumd64
fmaximumd128
确定较大值函数。
fminimum
fminimumf
fminimuml
fminimumd32
fminimumd64
fminimumd128
确定较小值函数。
fmaximum_mag
fmaximum_magf
fmaximum_magl
fmaximum_magd32
fmaximum_magd64
fmaximum_magd128
确定较大绝对值的参数的函数。
fminimum_mag
fminimum_magf
fminimum_magl
fminimum_magd32
fminimum_magd64
fminimum_magd128
确定较小绝对值的参数的函数。
fmaximum_num
fmaximum_numf
fmaximum_numl
fmaximum_numd32
fmaximum_numd64
fmaximum_numd128
确定数值参数较大值的函数。
fminimum_num
fminimum_numf
fminimum_numl
fminimum_numd32
fminimum_numd64
fminimum_numd128
确定数值参数较小值的函数。
fmaximum_mag_num
fmaximum_mag_numf
fmaximum_mag_numl
fmaximum_mag_numd32
fmaximum_mag_numd64
fmaximum_mag_numd128
确定较大绝对值的数值参数的函数。
fminimum_mag_num
fminimum_mag_numf
fminimum_mag_numl
fminimum_mag_numd32
fminimum_mag_numd64
fminimum_mag_numd128
确定较小绝对值的数值参数的函数。
融合乘加运算函数:
fma
fmaf
fmal
fmad32
fmad64
fmad128
融合乘加运算函数。
结果舍入到更窄类型的函数:
fadd
faddl
daddl
d32addd64
d32addd128
d64addd128
求和并且结果舍入到更窄类型的函数。
fsub
fsubl
dsubl
d32subd64
d32subd128
d64subd128
求差并且结果舍入到更窄类型的函数。
fmul
fmull
dmull
d32muld64
d32muld128
d64muld128
求积并且结果舍入到更窄类型的函数。
fdiv
fdivl
ddivl
d32divd64
d32divd128
d64divd128
求商并且结果舍入到更窄类型的函数。
ffma
ffmal
dfmal
d32fmad64
d32fmad128
d64fmad128
融合乘加运算并且结果舍入到更窄类型的函数。
fsqrt
fsqrtl
dsqrtl
d32sqrtd64
d32sqrtd128
d64sqrtd128
参数平方根舍入到更窄类型的函数。
量子和量子指数函数:
quantized32
quantized64
quantized128
返回值具有参数x的值、参数y的量子指数的函数。
samequantumd32
samequantumd64
samequantumd128
判断实参量子指数是否相同的函数。
quantumd32
quantumd64
quantumd128
计算有限实参量子的函数。
llquantexpd32
llquantexpd64
llquantexpd128
计算有限实参量子指数的函数。
十进制重编码函数:
encodedecd32
encodedecd64
encodedecd128
将参数指向对象转换为有效数字基于十进制编码的编码的函数。
decodedecd32
decodedecd64
decodedecd128
将参数指向对象解释为有效数字基于十进制编码的编码的函数。
encodebind32
encodebind64
encodebind128
将参数指向对象转换为有效数字基于二进制编码的编码的函数。
decodebind32
decodebind64
decodebind128
将参数指向对象解释为有效数字基于二进制编码的编码的函数。