愛しの Fortran・3改

Fortran について気の向くままに綴ります

整数型 (その1)

突然、整数型の現状について。

2021 年現在、整数型は 8 ビット、16 ビット、32 ビット、64 ビットの 4 種類の実装が普通です。処理系によっては 128 ビットの整数型があるものも。負の数は 2 の補数表現です。ただし、ビット数を n として、-2**(n-1) をトラップ表現にできる処理系もあるので、数値としては ±(2**(n-1)-1) 内で使うといいでしょう。Fortran に符号無し整数型はありません。

多くの処理系では基本整数型のビット数を選べますが、既定は 32 ビットが普通です(歴史的事情による)。例えば大きさ 2**31 の IEEE 倍精度の実数型 1 次元配列は 16 GB なので、最近の処理系では基本整数型では足りない場合が出てきます。悩ましい問題です。

対処法は 3 つのうちどれか。 1. 基本整数型ではなく、種別型パラメタを指定した整数型を使う。 2. 処理系依存の方法で基本整数型を 64 ビットにする。 3. とても大きい 1 次元配列の使用はあきらめる。

どれも一長一短あります。1. が本来想定されている対処法です。が、煩雑で誤りが混入しやすいのが難点です。2. は可能ならプログラムを書く側からすれば一番簡単な方法ですが、可搬性、互換性には不安があります。現状ではまだ 3. が現実的でしょうか。

(つづく)