先頭へ戻る

math_errhandling | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

math_errhandling

概要

数学関数でエラーが発生したときの動作を定義する

ヘッダ

math.h

形式

#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)

置換結果

MATH_ERRNOMATH_ERREXCEPT、MATH_ERRNO | MATH_ERREXCEPT のいずれか。いずれにしても、int型の値である。

詳細

数学関数がエラーを発生させたとき、それをどのように伝えるかを定義している。
定義域エラーや値域エラーが発生したときに、「math_errhandling & MATH_ERRNO」が 0以外になる場合は、errno に適切なエラーコードを設定し、「math_errhandling & MATH_ERREXCEPT」が 0以外になる場合は、浮動小数点例外を発生させる。2つは同時に満たされることもある。値域エラーが浮動小数点演算のアンダーフローによって起こった場合の動作は処理系定義である。
発生する浮動小数点例外の種類は、定義域エラーでは FE_INVALID、数学的な結果が有限の場合のオーバーフローでは FE_OVERFLOW、無限の場合のオーバーフローでは FE_DIVBYZERO、アンダーフローでは FE_UNDERFLOW である。
なお、このマクロや浮動小数点例外のしくみは C99 で追加されたものである。以前の規格では常に errno を使っていた。
処理系ごとに置換結果は異なり、プログラムが実行されている間、値が変化することはない。また、マクロではない実装もあり得るが、特に気にする必要はない。

注意

使用例

#include <math.h>
#include <stdio.h>

int main(void)
{
    printf( "%d\n", math_errhandling & MATH_ERRNO );
    printf( "%d\n", math_errhandling & MATH_ERREXCEPT );

    return 0;
}

実行結果

1
2

関連

解説章

第48章


参考リンク


------------------------------------------------------------------------

更新履歴

'2018/4/21 新規作成。


------------------------------------------------------------------------

標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー