FECLEAREXCEPT(3) | FreeBSD Library Functions Manual | FECLEAREXCEPT(3) |
名称
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept — 浮動小数点例外フラグの操作ライブラリ
Math Library (libm, -lm)書式
#include < fenv.h>#pragma STDC FENV_ACCESS ON
int
feclearexcept( int excepts);
int
fegetexceptflag( fexcept_t *flagp, int excepts);
int
feraiseexcept( int excepts);
int
fesetexceptflag( const fexcept_t *flagp, int excepts);
int
fetestexcept( int excepts);
解説
feclearexcept() ルーチンは、 feraiseexcept() が指定された例外を上げるのに対して、 excepts によって指定された浮動小数点例外をクリアします。例外を上げることは対応するフラグを設定させ、そして、例外がマスクされていないなら、 SIGFPE をプロセスに配信します。fetestexcept() 関数は、 excepts によって指定されたものについて、どのフラグが現在設定されているか決定します。
fegetexceptflag() 関数は、 flagp によって指された不透明なオブジェクト (訳注: サイズ及び形がわからないオブジェクト) に excepts で指定された例外フラグの状態を格納します。同様に、 fesetexceptflag() は、 flagp によって指されたオブジェクトに格納された状態を反映するために指定された例外フラグを変更します。 fesetexceptflag() で復元されたフラグは、 fegetexceptflag() への前の呼び出しで記録されたフラグの (かならずしも適切でない) 部分集合でなければならないことに注意してください。
これらの関数のすべてについて、例外の可能なタイプは、 fenv(3) で説明されたものを含んでいます。いくつかのアーキテクチャは、他のタイプの浮動小数点例外を定義しているかもしれません。
実装に関する注
また、いくつかのアーキテクチャでは、オーバフローかアンダフロー例外を上げることは不正確な例外を上げることになります。これらの場合では、オーバフローかアンダフローが最初に上げられます。fegetexceptflag() と fesetexceptflag() ルーチンは、例外フラグを保存して復元するために、それぞれ fetestexcept() と feraiseexcept() より好まれます。後者は、例外を再び上げないで、例外が起こったアドレスなどのアーキテクチャ特有の情報を保存するかもしれません。
戻り値
feclearexcept(), fegetexceptflag(), feraiseexcept() と fesetexceptflag() 関数は、成功すれは、0 を返し、そうでなければ 0 以外を返します。 fetestexcept() 関数は、要求された現在の例外フラグのビット毎の論理和 (OR) した値を返します。規格
feclearexcept(), fegetexceptflag(), feraiseexcept(), fesetexceptflag() と fetestexcept() 関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。歴史
これらの関数は、 FreeBSD 5.3 ではじめて登場しました。May 8, 2004 | FreeBSD |