要約:コンパイラー・オプションを検討することを検討してください。
FORTRANをやってから久しぶりで、HUGE()を使ったのを覚えていませんが、少し見てみました。私のIntelLinuxマシンにはgfortran4.1.2があります。64ビット整数で機能させるには、-fdefault-integer-8オプションをオンにしてコンパイルする必要があることがわかりました。具体的には、このコードで:
program inttest
print *, huge(1)
end program inttest
ランニング
$ gfortran inttest.for
以下を印刷する実行可能ファイルを作成しました:
2147483647
ただし、実行中:
$ gfortran -fdefault-integer-8 inttest.for
結果として、次の出力を提供する実行可能ファイルが生成されました。
9223372036854775807
また、変数をinteger * 8として宣言し、-fdefault-integer-8オプションなしでコンパイルすると、エラーが発生しました。コード:
program inttest2
integer*8 test_int
test_int = 9223372036854775807
print *, test_int
end program inttest2
ランニング
$ gfortran inttest2.for
をもたらしました
ファイルinttest.for:4内
test_int = 9223372036854775807
1
エラー:(1)の種類に対して整数が大きすぎます
ただし、-fdefault-integer-8オプションを使用してコンパイルし、実行可能ファイルを取得すると、問題なく動作しました。
9223372036854775807
役に立つと思われる他のgfortranオプションがあるかもしれませんが、私はそれ以上調査しませんでした。
確かに、これでも10 ^ 14は得られませんが、見た結果を説明するのに役立つ場合があります。