マニュアルページ issubnormal.3m
名前
ieee_sun, fp_class, isinf, isnormal, issubnormal, iszero,
signbit, nonstandard_arithmetic, standard_arithmetic,
ieee_retrospective - IEEE 算術演算用の各種関数
形式
cc [ flag ... ] file ... -lsunmath -lm [ library ... ]
#include <sunmath.h>
enum fp_class_type fp_class(double x);
int isinf(double x);
int isnormal(double x);
int issubnormal(double x);
int iszero(double x);
int signbit(double x);
void nonstandard_arithmetic(void);
void standard_arithmetic(void);
#include <stdio.h>
void ieee_retrospective(FILE *f);
機能説明
ANSI/IEEE 規格 754-1985 関連の関数のうち、一般に使用される (
標 準 的 な ) 関 数 に つ いては、 copysign(3M), ilogb(3M),
isnan(3M), nextafter(3M), remainder(3M), scalbn(3M), を参 照
してください。
ここで説明する関数のほとんどは、 ANSI/IEEE 規格 754-1985 の
付録で提案されている機能を提供します。
fp_class(x) は、IEEE の class() に対応するもので、 x を ゼ
ロ、 非 正 規 数、 正規数、無限大 (oo)、シグナルを発生しない
NaN、シグナルを発生する NaN のいず れ か に 分 類 し ま す。
<floatingpoint.h> は、 列 挙型 fp_class_type を定義していま
す。
以下の関数は、示された条件が真でない場合はいずれも 0 を返 し
ます。
isinf(x) x が oo の場合に 1 を返します。
isnormal(x) x が正規数の場合に 1 を返します。
issubnormal(x) x が非正規数の場合に 1 を返します。
iszero(x) x がゼロの場合に 1 を返します。
signbit(x) x の符号ビットがセットされている場合に 1
を返します。
nonstandard_arithmetic() および standard_arithmetic() は、デ
フォルトの IEEE 規格に従っていない高速の浮動小数点演算モード
を備えているシステムで有効です。非標準モードは実装ごとに異な
ります。たとえば、非正規数の場合にゼロに設定したり、非正規数
のオペランドをゼロとして扱ったり、その両方を行うことがありま
す。 standard_arithmetic() は、デフォルトの標準モードに戻す
ものです。1 つのモードしか利用できないシステムでは、これらの
関数は効果がありません。
ieee_retrospective(f) は、その呼び出し時に有効な、デフォルト
でない浮動小数点モードとステータスのすべてを示すメッセージを
FILE *f に出力します。具体的には、IEEE の存続例外発生ス テー
タスビット、IEEE の丸め方向モードと丸め精度モード、IEEE のト
ラップ許可モード、非標準の演算モードなど が 示 さ れ ま す。
ieee_retrospective(f) は一般に、結果に影響を及ぼす可能性があ
る例外的な浮動小数点条件を示すためにプログラムの最後で使用し
ます。
プログラムは明示的に ieee_retrospective を呼び出すことができ
ま す。-f77 互換モードの f95 でコンパイルされた Fortran プロ
グラムは自動的に ieee_retrospective を呼び出してから終了しま
す。 C/C++ プログラムおよびデフォルトモードの f95 でコンパイ
ルされた Fortran プログラムは ieee_retrospective を自動的 に
呼び出しません。f95 コンパイラはデフォルトで共通例外のトラッ
プを可能にします。そのため、プログラムが明示的にトラップを無
効にしないか SIGFPE ハンドラをインストールしない限りは、例外
発生後直ちに異常終了します。-f77 互換モードでは、コンパイ ラ
はトラップを有効にしません。そのため、浮動小数点例外が発生す
ると、プログラムは実行し続け、この例外を ieee_retrospective
で出力して、終了します。
関連項目
copysign(3M), ieee_flags(3M), ieee_handler(3M), ilogb(3M),
isnan(3M), nextafter(3M), remainder(3M), scalbn(3M),
floatingpoint(5)