Oracle® Solaris Studio 12.4:数值计算指南

退出打印视图

更新时间: 2015 年 1 月
 
 

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)
xy 的符号位
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) 返回结果的符号可能与 xy 的符号不一致,而 fmod(x,y) 返回结果的符号始终与 x 一致。这两个函数均返回精确的结果,并且不生成不精确异常。

表 3-7  从 Fortran 中调用 ieee_functions
IEEE 函数
单精度
双精度
四倍精度
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
IEEE 函数
单精度
双精度
四倍精度
signbit(x)
i=ir_signbit(x)
i=id_signbit(x)
i=iq_signbit(x)

注 -  在使用 d_functionq_function 的 Fortran 程序中,必须将前一个函数声明为双精度,而将后一个函数声明为 REAL*16。