# マニュアルページ feraiseexcept.3m

## 名前

         feclearexcept, feraiseexcept, fetestexcept, fegetexceptflag,
         fesetexceptflag - 浮動小数点例外フラグへのアクセス

## 形式

         cc   [   flag   ...   ]   file   ...     -R/opt/SUNWspro/lib
         -L/opt/SUNWspro/lib -lm9x [ library ... ]

         #include <fenv.h>

         void feclearexcept(int excepts);

         void feraiseexcept(int excepts);

         int fetestexcept(int excepts);

         void fegetexceptflag(fexcept_t *flagp, int excepts);

         void fesetexceptflag(const fexcept_t *flagp, int excepts);

         void fesetexceptflag96(const fexcept_t *flagp, int excepts);

## 機能説明

         これらの関数は、浮動小数点例外フラグにアクセスします。これら
         の 関数において、excepts 引数は、次の値 (<fenv.h> に定義され
         ている) の任意のビット単位の論理和により、1 つまたは複数の例
         外を指定します。

              FE_INEXACT
              FE_UNDERFLOW
              FE_OVERFLOW
              FE_DIVBYZERO
              FE_INVALID

         便宜上、上記すべての値のビット単位の論理和を示すために、マク
         ロ FE_ALL_EXCEPT が定義されています。

         feclearexcept(excepts) は、指定した例外のフラグをクリアし ま
         す。

         feraiseexcept(excepts) は、指定した例外を発生しま す。 つ ま
         り、指定したすべての例外に対して、FEX_NONSTOP 処理モードが有
         効である場合は、例外のフラグを設定します。そうでない場合は、
         fex_set_handling(3M)  で記述されているように適切なアクション
         を行います。

         fetestexcept(excepts) は、上記値のうち、フラグが設定されてい
         て、指定した例外のサブセットに対応するもののビット単位の論理
         和を戻します。

         fegetexceptflag(flagp, excepts) は、excepts で示した例外のフ
         ラ グ の 現 在値を、flagp が指すオブジェクトに保存します。型
         fexcept_t は <fenv.h> で定義されています。

         fesetexceptflag(flagp, excepts) は、excepts で示した例外のフ
         ラグの値を、flagp が指すオブジェクトから復元します。このオブ
         ジェクトは、fegetexceptflag() への以前の呼び出しで設定されて
         いなければなりません。そうでない場合は、示したフラグの影響は
         定義されません。fesetexceptflag 関数は、例外を発生させるので
         はなく、フラグの状態を設定するだけです。

## 使用例

         次のコードの一部は、無効な演算フラグが設定されている場合は関
         数  f() を呼び出し、オーバーフローフラグが設定されている場合
         は g() を呼び出します。

              #include <fenv.h>
              /*...*/
              {
                   int set_excepts;

                   feclearexcept(FE_INVALID | FE_OVERFLOW);
                   /* 例外を発生する可能性のある計算 */
                   set_excepts = fetestexcept(FE_INVALID | FE_OVERFLOW);
                   if (set_excepts & FE_INVALID) f();
                   if (set_excepts & FE_OVERFLOW) g();
                   /*...*/
              }

## 属性

         次の属性については、 attributes(5) を参照してください。

         _________________________________
        |      属性タイプ     |   属性値  |
        |_____________________|___________|
        | 使用条件            |  SPROm9xs |
        | インタフェース安定性|  標準     |
        | MT レベル           |  MT-安全  |
        |_____________________|___________|

## 関連項目

         fegetenv(3M), fex_set_handling(3M), fex_set_log(3M),  attri-
         butes(5)

         『数値計算ガイド』

## 注意事項

         例外に対して FEX_CUSTOM 処理モード が 有 効 で あ る と き、
         feraiseexcept 経由でその例外を発生すると、処理関数が呼び出さ
         れます。処理関数は例外フラグを変更 し、 fex_set_handling(3M)
         に記述されているように設定します。ハンドラが戻す値はすべて無
         視されます。

         「形式」で示しているように、cc で libm9x とリンクするため に
         は、コマンド行で次のように指定することを推奨します。

              -Rinstall-path/lib -Linstall-path/lib -lm9x

         install-path には、コンパイラがインストールされている場所 を
         指 定します (デフォルトでは、/opt/SUNWspro)。libm9x とリンク
         する方法についての詳細は、『数値計算ガイド』を参照してくださ
         い。