津田 孝夫:数値処理プログラミング

作成日: 2015-08-30
最終更新日:

概要

数値処理の実践に深く関係する情報工学的な側面を重視した書。特にベクトルスーパーコンピュータについての解説が詳しい。

感想

なじみのない世界

ふだんベクトルコンピュータを使わない身には、あまり得るところがないと思ってしまうが、それでもいくつかの話題は役に立つ。

IEEE の浮動小数点表現

参考リンクのページには、この本への不満が次のように述べられている。例えば IEEE の浮動小数点数表現は、 言語処理系屋も知っておくべき知識であり、 そういうことを取り上げた教科書にして欲しかったと思う。

これをもとにして、同書の pp.2-3 で記述されている浮動小数点表現の体系を比べてみよう。

まず、科学技術計算では、連続的な実数を近似的に扱うために、固定小数点数ではなく、浮動小数点数を用いている。 この浮動小数点数という体系はどういうものだろうか。

浮動小数点の数の体系を `F` とする。`F` に属する数を `x` とすると、`x` は次のように表記される。

`x = +-.d_1d_2cdotsd_s * beta^e`

ここで `e` は指数とよばれる整数で、ある整数 `m`, `M` があって `m <= e <= M` の範囲にあるとする。ちなみに、通常は `m <= 0 <= M` である。また、`d_i` は次の式を満たす、
`1 <= d_1 <= beta - 1`
`0 <= d_i <= beta - 1 quad (i = 2, 3, cdots, s) `
ここで、`d_1 d_2 cdots d_s` は仮数と呼ばれる。この表現から十進数を得るには次の右辺を用いる。
`.d_1 d_2 cdots d_s = sum_(i = 1)^s d_i beta^(-i)`
各種の処理系では次の通りである。

IBM システム 360

単精度は次の通り。
`beta = 16, s = 6, m = -64, M = 63`
`s = 6` であり、`beta = 16` であるから、`d_i` 一つにつき 4 ビットを使うので、仮数部には `6 * 4 = 24` ビットが割り当てられる。
倍精度は次の通り。
`beta = 16, s = 14, m = -64, M = 63`
`s = 14` であり、`beta = 16` であるから、`d_i` 一つにつき 4 ビットを使うので、仮数部には `14 * 4 = 56` ビットが割り当てられる。

Control Data 社 6600

`beta = 2, s = 48, m = -975, M = 1071`

IEEE 754

単精度は次の通り。
`beta = 2, s = 23, m = -126, M = 127`
倍精度は次の通り。
`beta = 2, s = 52, m = -1022, M = 1023`

ただし、指数部ではゲタばき表現をしている。また、仮数部ではケチ表現をしている。 また、単精度で `e = M + 1= 128` (非ゲタばき)の場合は、仮数部や符号部の値により NaN 、正の無限大、負の無限大を表す。 一方、単精度で `e = m - 1= -127` (非ゲタばき)の場合は、仮数部や符号部の値により NaN 、正の無限大、負の無限大を表す。 単精度で `e = 0` (非ゲタばき)でかつ仮数部も零の場合は、符号部に応じて `+-0` を表す。

参考リンク

感想

書 名数値処理プログラミング
著 者津田 孝夫
発行日1988 年 11 月 7 日
発行元岩波書店
定 価3300円(本体)
サイズ??版
ISBN4-00-010349-0

まりんきょ学問所読んだ本の記録 > 津田 孝夫:数値処理プログラミング


MARUYAMA Satosi