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)
y の符号ビットを持つ x
fabs(x)
x の絶対値
fmod(x, y)
y を基準にした x の剰余
ilogb(x)
x の基数 2 のバイアスなし指数 (整数形式)
nextafter(x,y)
方向 y への x のあとの次の表現可能な数値
remainder(x,y)
y を基準にした x の剰余
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 の呼び出し
IEEE 関数
単精度
倍精度
4 倍精度
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 関数
単精度
倍精度
4 倍精度
signbit(x)
i=ir_signbit(x)
i=id_signbit(x)
i=iq_signbit(x)

注 -  次の関数を使用する Fortran プログラムでは、d_function を倍精度として、q_function を REAL*16 として宣言する必要があります。