3.5.7 IEEE 754 浮動小数点演算で発生する例外

浮動小数点の算術演算では、さまざまな問題が生じることがあります。これらは異常または例外的な状況であるため、「例外」と呼ばれています。

例えば、計算結果が指定の形式に対して大きすぎたり小さすぎたりする場合や、結果を計算する方法がない場合もあります(負の値の平方根を求めようとしたり、ゼロによる除算を行おうとした場合など)。

ARM® コンパイラ ツールチェーンでは、AArch64 ターゲット用の浮動小数点の例外のトラップはサポートされません。
ARM 浮動小数点環境では、説得力のある演算結果を生成してその結果を返すことにより、または例外をトラップすることにより、例外が処理されます。
例えば、負の値の平方根では NaN が生成され、形式に対して大きすぎる値の計算では無限大が生成されます。例外が発生し、それが無視されると、浮動小数点ステータスワード内に、過去のある時点で何らかの異常が発生したことを示すフラグが設定されます。
例外が発生すると、トラップハンドラと呼ばれるコードが実行されます。システムには、エラーメッセージを出力してアプリケーションを終了するデフォルトのトラップハンドラが用意されています。ただし、ユーザが選択した方法で例外条件を解消する独自のトラップハンドラを指定することもできます。トラップハンドラでは、演算から返される結果を渡すこともできます。
例えば、0 を 0 で割った結果を 1 と見なした方が便利なアルゴリズムがある場合は、その特殊な状況を識別し、必要な答えで置き換える無効演算例外のユーザ定義のトラップハンドラを指定できます。
関連する概念
3.2.9 ユーザ定義の例外トラップハンドラの記述
3.2.10 ユーザ定義の例外ハンドラの例
3.2.11 シグナルによる例外トラップ処理
3.5 IEEE 754 算術演算
3.5.2 IEEE 754 算術演算の単精度データ型
3.5.3 IEEE 754 算術演算の倍精度データ型
3.5.6 IEEE 754 算術演算と丸め
3.2 ARM 浮動小数点環境の制御
関連する参考文書
3.2.8 C99 インタフェースの ARM 浮動小数点コンパイラ拡張
3.2.2 ARM 浮動小数点環境を制御するための C99 互換関数
3.5.1 IEEE 754 算術演算の基本データ型
3.5.4 IEEE 754 算術演算の単精度浮動小数点数値のサンプル
3.5.5 IEEE 754 算術演算の倍精度浮動小数点数値のサンプル
関連情報
IEEE Standard for Floating-Point Arithmetic (IEEE 754), 1985 version
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.