| 日本−日本語 |
|
|
|
![]() |
HP-UX フローティング・ポイント ガイド: HP 9000 コンピュータ > 第2章 浮動小数点の原理および 2 進浮動小数点演算についての IEEE 規格浮動小数点演算 |
|
IEEE 規格では、次の浮動小数点演算をサポートすることをシステムの準拠要件としています。
各演算の特性を理解するには、非正規化数、無限大、および NaN を理解する必要があります (「正規化数と非正規化数」の項、「無限大」の項、および「NaN (非数)」の項を参照)。HP 9000 は、前述のすべての演算について、IEEE 規格に準拠しています。 規格では、各演算の結果が、丸めモードに従って数学的に誤差のない値から IEEE 表現に丸められることを要件としています。最も近い値への丸めモード (デフォルト) では、演算結果は、1/2ULP 以内になります (この規則には 1 つの例外があります。2 進数と 10 進数字列間の変換では、その範囲の限界では丸めが正確に行われる必要はありません)。 比較演算は、2 つの浮動小数点数値の関係が真であるかどうかを決定します。4 つの基本比較は、次の通りです。
基本比較は、相互に組み合わせることができます。例えば、"a >= b"は、a がb と等しいか、小さいかを示します。同様に、"a <> b"は、a がb より大きいか、または小さいかのどちらか一方であることを示します。NaN でないオペランドの場合、"a = b"の逆となります。
比較は、否定の形式でも表現できます。 IEEE 規格では、各可能な比較に対して、認識と非認識という 2 つのバージョンを定義しています。比較の認識および非認識の両バージョンとも、他のすべての NaN およびそれ自身も含めて、いかなる数値とも大小関係で比較されず、いかなる値とも等しくない特殊な値として NaN を取り扱います。この定義は、x が NaN である場合に、"x = x"が FALSE に評価されるという興味深い結果をもたらします。実際に、アプリケーションでは、特に NaN を検出するためにこの比較演算を使用することがありますが、ベンダのオプティマイザーの中には、この演算をコード中から削除するものもあるので、危険な方法になります。 比較の非認識バージョンは、認識バージョンと同じように動作するだけでなく、少なくとも一方のオペランドが NaN の場合、<、<=、>、および >= を使用した比較に対して無効演算例外も引き起こされます。=、!=、および? の比較だけが、NaN オペランドに対して有効になります。 シグナル NaN は、認識および非認識の両比較に対して無効演算を引き起します。 考えられる各種のオペランド対する比較演算の動作は、次の通りです。
規格では、10 進数字列と 2 進数浮動小数点間の変換、および 2 進数浮動小数点形式と整数形式間の変換が可能であることを要件とします。ここでは、さまざまな変換の特性の一部を説明します。整数型オペランドは、符号付き整数または符号なし整数のいずれかです。
剰余演算は、誤差のない剰余機能です。ゼロでないy に対して、剰余r = remainder(x, y) は、次のように定義されます。
ここでn は、x/y の正確な値に最も近い整数です。|n - x/y| = 1/2 の場合、n は偶数となります。r がゼロの場合、その符号はx の符号と同じになります。 次に例を 2 つ挙げます。
剰余演算の結果は、丸めモードの影響を受けません (結果は常に正確であり、丸めは演算結果に関係しません)。 C 数学ライブラリのremainder 関数は、IEEE の剰余演算を実装したものです。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||