3.4.1 ieee_functions(3m) 和 ieee_sun(3m)
ieee_functions(3m) 和 ieee_sun(3m) 介绍的函数提供了 IEEE 标准要求的功能或其附录中推荐的功能。这些函数是按有效位掩码运算实现的。
表 3-5 ieee_functions(3m)
|
|
math.h
|
头文件
|
copysign(x,y)
|
x 及 y 的符号位
|
fabs(x)
|
x 的绝对值
|
fmod(x, y)
|
x 除以 y 所得的余数
|
ilogb(x)
|
以 2 为基数的整数格式 x 无偏置指数
|
nextafter(x,y)
|
在 y 方向上,x 后面的下一个可表示的数
|
remainder(x,y)
|
x 除以 y 所得的余数
|
scalbn(x,n)
|
x × 2n
|
|
表 3-6 ieee_sun(3m)
|
|
sunmath.h
|
头文件
|
fp_class(x)
|
分类函数
|
isinf(x)
|
分类函数
|
isnormal(x)
|
分类函数
|
issubnormal(x)
|
分类函数
|
iszero(x)
|
分类函数
|
signbit(x)
|
分类函数
|
nonstandard_arithmetic(void)
|
启用非标准模式
|
standard_arithmetic(void)
|
启用标准模式
|
ieee_retrospective(*f)
|
n/a
|
|
remainder(x,y) 是在 IEEE 标准 754-1985 中指定的运算。remainder(x,y) 和 fmod(x,y) 的不同之处在于,remainder(x,y) 返回结果的符号可能与 x 或 y 的符号不一致,而 fmod(x,y) 返回结果的符号始终与 x 一致。这两个函数均返回精确的结果,并且不生成不精确异常。
表 3-7 从 Fortran 中调用 ieee_functions
|
|
|
|
copysign(x,y)
|
t=r_copysign(x,y)
|
z=d_copysign(x,y)
|
z=q_copysign(x,y)
|
ilogb(x)
|
i=ir_ilogb(x)
|
i=id_ilogb(x)
|
i=iq_ilogb(x)
|
nextafter(x,y)
|
t=r_nextafter(x,y)
|
z=d_nextafter(x,y)
|
z=q_nextafter(x,y)
|
scalbn(x,n)
|
t=r_scalbn(x,n)
|
z=d_scalbn(x,n)
|
z=q_scalbn(x,n)
|
signbit(x)
|
i=ir_signbit(x)
|
i=id_signbit(x)
|
i=iq_signbit(x)
|
|
表 3-8 从 Fortran 中调用 ieee_sun
|
|
|
|
signbit(x)
|
i=ir_signbit(x)
|
i=id_signbit(x)
|
i=iq_signbit(x)
|
|
注 -
在使用 d_function 和 q_function 的 Fortran 程序中,必须将前一个函数声明为双精度,而将后一个函数声明为 REAL*16。