数値計算ガイド |
付録 C
x86 の動作と実装
この付録では、x86 と SPARC の互換性問題のうち x86 プラットフォームで使用される浮動小数点ユニットに関連する部分について説明します。
対象となるハードウェアは、Intel 社の 80386、80486、PentiumTM マイクロプロセッサとその他のメーカーの互換マイクロプロセッサです。SPARC プラットフォームとの互換性には大きな努力が注がれていますが、SPARC とは以下のような相違点があります。
- FORTRAN に、
real*16
が実装されていません。- 浮動小数点レジスタのサイズは 80 ビットです。数値計算の中間結果が拡張精度になるために、計算結果が異なる場合があります。
-fstore
フラグを使用すれば、このような矛盾が最小限に抑えられます。ただし、-fstore
フラグを使用すると、性能が低下します。- 単精度または倍精度の浮動小数点数のストアやロードが行われる度に、拡張倍精度へまたは拡張倍精度からの変換が発生します。したがって、浮動小数点数のロードやストアによって例外が発生します。
- 段階的アンダーフローが完全にハードウェア内に実装されています。標準外のモードはありません。
fpversion
ユーティリティは提供されていません。- 拡張倍精度形式は、浮動小数点値を表現しない一定のビットパターンを認めています (表 2-8 を参照)。ハードウェアは NaN のような「サポートされていない形式」を通常は取り扱いますが、数学ライブラリによるそのような表現の処理には一貫性がありません。これらのビットパターンはハードウェアによって生成されることはないので、無効なメモリー参照 (配列の終わりを超えた読み取りなど) が行われるか、(C の
union
や FORTRAN のEQUIVALENCE
構造体などを介して) メモリー内においてある型から別の型へ明示的にデータを強制変換する場合にしか作成されません。そのため、ほとんどの数値プログラムではこれらのビットパターンは発生しません。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |