Oracle® Solaris Studio 12.4: 数値計算ガイド

印刷ビューの終了

更新: 2015 年 1 月
 
 

1.1 浮動小数点環境

浮動小数点環境は、IEEE 標準 754 を実装したハードウェア、システムソフトウェア、およびソフトウェアライブラリによってアプリケーションプログラマが利用できるようになったデータ構造および演算で構成されています。IEEE 標準 754 を使用すると、数値計算アプリケーションの記述が簡単になります。これは綿密に考案されたコンピュータ演算の基礎であり、数値計算プログラミングの技術を進化させるものです。

たとえば、ハードウェアは IEEE データ形式に対応するストレージの形式、そのような形式のデータに対する演算、それらの演算が生成した結果の丸めの制御、IEEE 数値例外の発生を示すステータスフラグ、およびユーザー定義のハンドラがない場合にそのような例外が発生したときの IEEE の規定の結果を提供します。システムソフトウェアは IEEE 例外処理をサポートします。数学ライブラリ libm および libsunmath を含むソフトウェアライブラリは、例外の発生に関して IEEE 標準 754 に準拠した方法で、exp(x)sin(x) などの関数を実装しています。浮動小数点の算術演算で十分に定義された結果を得られない場合、システムは例外を発生させることによって、その事実をユーザーに通知します。また、数学ライブラリは Inf (無限大) または NaN (非数) のような特殊な IEEE の値を処理する関数呼び出しも提供しています。

浮動小数点環境のこの 3 つの構成要素の相互作用はわずかなため、通常はアプリケーションプログラマがこの相互作用を意識することはありません。プログラマは、IEEE 標準によって規定または推奨されている計算メカニズムのみを意識します。全般的に、このマニュアルではプログラマが IEEE メカニズムを完全および有効に活用し、アプリケーションソフトウェアを効果的に記述できるようになることを目的としています。

浮動小数点演算に関する質問の多くは、数値の基本的な演算に関連しています。次の質問について考えてみます。

  • コンピュータシステムで無限に正確な結果を表現できない場合、演算の結果はどうなるか。

  • 乗算や加算のような基本的な演算は交換可能か。

その他の種類の質問は、例外や例外処理に関連しています。たとえば、次のような操作を行なった場合の結果です。

  • 非常に大きい 2 つの数値の乗算

  • ゼロによる除算

  • 負の数の正方根計算の試行

一部の演算では、最初の種類の質問が予期した結果にならなかったり、2 番目の種類でも例外のケースで同様のことが発生する場合があります。その場合、プログラムがその時点で停止します。一部の非常に古いマシンでは、計算は続行されますが、結果が意味のないものになります。

IEEE 標準 754 では、演算によって、予期した特性を備えた、数学的に期待される結果が生成されることを保証しています。また、ユーザーが特にほかに選択しなければ、例外のケースでも指定した結果が得られます。

このマニュアルでは、NaNまたは非正規数などの用語に触れています。浮動小数点演算に関する用語については、Glossaryで定義しています。