XL Fortran for AIX V8.1.1

ユーザーズ・ガイド


ハードウェア固有の浮動小数点の概要

単精度および倍精度の値

PowerPC 浮動小数点ハードウェアは、IEEE 単精度 (Fortran プログラムの REAL(4) と同等) か、または IEEE 倍精度 (Fortran プログラムの REAL(8) と同等) のどちらかで計算を実行します。

常に、次のことに配慮していなければなりません。

浮動小数点ハードウェアは、2 つの数を掛けて、その積に 3 番目の数を加算する特殊な一連の倍精度演算も行います。これらの組み合わせ乗加算 (MAF) 演算は、乗算または加算演算が単独で実行される場合と同じ速度で実行されます。 MAF 機能は、1 回 (2 回ではない) の丸め誤差で実行するので、 IEEE 標準に拡張機能を提供します。 MAF 機能を使用すると、同等の別々の演算よりも速く、また精度も高くなります。

拡張精度値

XL Fortran 拡張精度は、IEEE 標準で提唱されている形式になっていません。IEEE 標準は、 (さらに範囲を大きくするため) 指数部のビットと (さらに精度を高めるため) 小数部のビットの両方を拡張する形式を提唱しています。

Fortran プログラムにおける REAL(16) と同等の XL Fortran 拡張精度がソフトウェアに組み込まれています。拡張精度は、倍精度と同じ範囲 (約 10**(-308) から 10**308) を提供しますが、精度は倍精度よりも高くなります (可変で、約 31 桁の 10 進数またはそれ以上)。ソフトウェアのサポートは、最も近い値への丸めモードだけに限定されています。拡張精度を使用するプログラムは、拡張精度計算の実行時にこの丸めモードが必ず有効になるようにする必要があります。丸めモードを制御するさまざまな方法については、 丸めモードの選択を参照してください。

拡張精度の値を 16 進数、8 進数、2 進数、ホレリス定数として指定しているプログラムは、次の規則に従っている必要があります。

XL Fortran 拡張精度値は 小数部に多数の想定ゼロを保持した大幅に異なる指数を持つ 2 つの値の和で、この形式は実際には可変精度を持つことになります。 (最小値は約 31 桁の 10 進数です。) 2 つの倍精度値の指数の絶対値が倍精度値の桁数よりも大きく異なっている場合には、精度はさらに高くなります。このエンコードを行うことにより、倍精度固有の範囲を超えずに、見かけ上倍精度より高い精度を必要とするアプリケーションを想定した処理系が効率よく実現できます。

注:

  1. 式のコンパイル時フォールディングが原因の丸め誤差に関しては、このフォールディングによって、異なった結果が作成される頻度が他の精度の場合よりも拡張精度値の場合のほうが多いということを念頭に置いておいてください。
  2. NaN および無限大などの特殊な数字は、拡張精度値に対して完全にはサポートされていません。算術演算は、これらの数字を必ずしも拡張精度で伝搬するとは限りません。
  3. 拡張精度値の場合、XL Fortran で常に浮動小数点演算例外条件が検出されるわけではありません (浮動小数点演算例外の検出とトラップを参照)。また、拡張精度を使用するプログラムで浮動小数点演算例外のトラップをオンにすると、例外条件が実際には発生していない場合でも、シグナルが生成されることがあります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]