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

印刷ビューの終了

更新: 2015 年 1 月
 
 

2.2.4 4 倍精度形式

浮動小数点環境の 4 倍精度形式もまた、拡張倍精度形式の IEEE 定義に準拠しています。 この形式は、x86 用の Oracle Solaris Studio C/C++ コンパイラには存在しません。4 倍精度形式は 4 つの 32 ビットワードを占有し、112 ビットの小数部 f、15 ビットのバイアス付き指数 e、および 1 ビットの符号 s の 3 つのフィールドで構成されています。これらは、次の図に示すように連続して格納されます。

最上位アドレスの 32 ビットワードには、f[31:0] で示される小数部の最下位 32 ビットが含まれています。次の 2 つの 32 ビットワードには、それぞれ f[63:32]f[95:64] が含まれています。次のワードのビット 0:15 には、小数部の最上位 16 ビット f[111:96] が含まれています (ビット 0 がこれらの 16 ビットの最下位ビット、ビット 15 が小数部全体の最上位ビット)。ビット 16:30 には 15 ビットのバイアス付き指数 e が含まれ (ビット 16 がバイアス付き指数の最下位ビット、ビット 30 が最上位ビット)、ビット 31 には符号ビット s が含まれています。

次の図では、4 つの連続した 32 ビットワードが 1 つの 128 ビットワードであるかのように各ビットに番号を付けています。そこでは、ビット 0:111 に小数部 f が格納され、ビット 112:126 に 15 ビットのバイアス付き指数 e が格納され、ビット 127 に符号ビット s が格納されています。

図 2-3  4 倍精度形式

image:4 倍精度形式を表す図。

3 つのフィールド fe、および s 内のビットパターンの値によって、ビットパターン全体で表される値が決定されます。

Table 2–6 は、3 つの構成フィールドの値と、4 倍精度形式のビットパターンによって表される値の間の対応関係を示しています。u は、示されているフィールドの値が特定のビットパターンの値の決定には関係しないため、考慮が必要ないものです。

表 2-6  各ビットパターンによって表される値
4 倍精度のビットパターン
0 < e < 32767
(–1)s × 2e–16383 × 1.f ( 正規数)
e = 0, f ≠ 0
(f 内の少なくとも 1 ビットは 0 以外)
(–1)s × 216382 × 0.f ( 非正規数)
e = 0, f = 0
(f 内のすべてのビットが 0)
(–1)s × 0.0 (符号付き 0)
s = 0, e = 32767, f = 0
(f 内のすべてのビットが 0)
+INF (正の無限大)
s = 1, e = 32767; f = 0
(f 内のすべてのビットが 0)
-INF (負の無限大)
s = u, e = 32767, f ≠ 0
(f 内の少なくとも 1 ビットは 0 以外)
NaN (非数)

4 倍精度の拡張倍精度格納形式での重要なビットパターンの例をTable 2–7 に示します。2 番目の列のビットパターンは、4 つの 8 桁 16 進数として示されています。いちばん左の数値は最下位アドレスの 32 ビットワードの値であり、いちばん右の数値は最上位アドレスの 32 ビットワードの値です。最大の正の正規数は、4 倍精度形式で表すことができる最大の有限数です。最小の正の非正規数は、4 倍精度形式で表すことができる最小の正の数値です。最小の正の正規数は多くの場合、アンダーフローしきい値と呼ばれます。(最大と最小の正規数および非正規数に対する 10 進数値は近似値であり、示されている桁数に関して正確です。)

表 2-7  4 倍精度形式のビットパターン
共通名
ビットパターン (SPARC)
10 進数値
+0
00000000 00000000 00000000 00000000
0.0
–0
80000000 00000000 00000000 00000000
–0.0
1
3fff0000 00000000 00000000 00000000
1.0
2
40000000 00000000 00000000 00000000
2.0
最大の正規数
7ffeffff ffffffff ffffffff ffffffff
1.1897314953572317650857593266280070e+4932
最小の正規数
00010000 00000000 00000000 00000000
3.3621031431120935062626778173217526e–4932
最大の非正規数
0000ffff ffffffff far-off ffffffff
3.3621031431120935062626778173217520e–4932
最小の正の非正規数
00000000 00000000 00000000 00000001
6.4751751194380251109244389582276466e–4966
+∞
7fff0000 00000000 00000000 00000000
+∞
–∞
ffff0000 00000000 00000000 00000000
–∞
非数
7fff8000 00000000 00000000 00000000
NaN

Table 2–7 に示されている NaN の 16 進数値は、NaN を表すために使用できる多くのビットパターンの 1 つにすぎません。