マニュアルページ fetestexcept.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 とリンク
     する方法についての詳細は、『』を参照してくださ
     い。