1.82 mathlib エラー処理

ARM コンパイラ 4.1 以降では、数学関数のエラー処理は ISO/IEC C99 標準の Annex F との整合性があります。RVCT 4.0 以前にはありません。

RVCT 4.0 以前の動作を呼び出すために、__use_rvct_matherr を定義できます。以下の表に、数学関数に範囲外の引数が渡された場合の応答を示します。

表 1-10 RVCT 4.0 以前での数学関数

関数 条件 戻り値 エラー番号
acos(x) abs(x) > 1 QNaN EDOM
asin(x) abs(x) > 1 QNaN EDOM
atan2(x,y) x = 0, y = 0 QNaN EDOM
atan2(x,y) x = Inf、y = Inf QNaN EDOM
cos(x) x = Inf QNaN EDOM
cosh(x) Overflow +Inf ERANGE
exp(x) Overflow +Inf ERANGE
exp(x) アンダーフロー +0 ERANGE
fmod(x,y) x = Inf QNaN EDOM
fmod(x,y) y = 0 QNaN EDOM
log(x) x < 0 QNaN EDOM
log(x) x = 0 -Inf EDOM
log10(x) x < 0 QNaN EDOM
log10(x) x = 0 -Inf EDOM
pow(x,y) Overflow +Inf ERANGE
pow(x,y) アンダーフロー 0 ERANGE
pow(x,y) x = 0 または x = Inf、y = 0 +1 EDOM
pow(x,y) x = +0, y < 0 -Inf EDOM
pow(x,y) x = -0、y < 0、および y が整数 -Inf EDOM
pow(x,y) x = -0、y < 0、および y が非整数 QNaN EDOM
pow(x,y) x < 0、y が非整数 QNaN EDOM
pow(x,y) x = 1、y = Inf QNaN EDOM
sqrt(x) x < 0 QNaN EDOM
sin(x) x = Inf QNaN EDOM
sinh(x) Overflow +Inf ERANGE
tan(x) x = Inf QNaN EDOM
atan(x) SNaN SNaN なし
ceil(x) SNaN SNaN なし
floor(x) SNaN SNaN なし
frexp(x) SNaN SNaN なし
ldexp(x) SNaN SNaN なし
modf(x) SNaN SNaN なし
tanh(x) SNaN SNaN なし
HUGE_VALInf のエイリアスです。エラー番号については、errno 変数を参照して下さい。この表に示す以外のケースでは、いずれの関数も、QNaN を渡されると QNaN を返し、SNaN を渡されると無効演算例外を生成します。
C99 nan() 関数に渡された文字列は無視され、常に同じ NaN(非数)、すなわち、最上位ビットを除いて、すべての小数部ビットがクリアされた NaN が返されます。符号ビットもクリアされます。NAN(xxxx) 形式の文字列を strtod() に渡しても同じ結果となります。
関連する概念
1.84 ISO 準拠の C ライブラリ入出力の特性
1.81 ARM C ライブラリが ISO C 仕様の要件を満たす方法
関連する参考文書
1.83 C ライブラリの signal() 関数と追加の型引数によりサポートされる ISO 準拠のシグナルの実装
1.85 標準 C++ ライブラリの実装定義
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.