FORTRAN 機械定数関数

Functions for FORTRAN Machine Constants

作成 二宮市三 2002年2月
形式 関数 言語:FORTRAN サイズ:90行

(1)概要

IEEE浮動小数点方式の単,倍,四倍精度実数に関する種々の定数をあたえる.

単精度 倍精度 四倍精度 備考
相対丸め誤差規準 AMACH
2-23
DMACH
2-52
QMACH
2-112
1.0の仮数部
最下位ビット
最大絶対値 AFMAX
2128
DFMAX
21024
QFMAX
216384
指数関数最大制限値 AEXPMX
128 ln 2
DEXPMX
1024 ln 2
QEXPMX
16384 ln 2
上欄の
自然対数
最小絶対値 AFMIN
2-126
DFMIN
2-1022
QFMIN
2-16382
指数関数最小制限値 AEXPMN
-126 ln 2
DEXPMN
-1022 ln 2
QEXPMN
-16382 ln 2
上欄の
自然対数
三角関数最大制限値 ASINMX
218π
DSINMX
250π
QSINMX
262π

(2) 使用法

すべての関数を例えば DMACH( ) のように引数なしで引用する.
D(Q)を頭字とする関数は倍(四倍)精度の宣言を必要とする.

(3) 備考

  1. 例えば DMACH(EPS) のように引数に任意の変数名を書いても 正しく作動するが,定義通り引数なしで引用することを勧める
  2. A/D/QMACH は関数ルーチン内部でべき乗を計算するが,他の関数は 予め計算された近似値を返す.
  3. A/D/QMACHは行列の特異性の判定定数や,反復解法の収束判定定数に 用いるには一般に厳し(小さ)過ぎる.入力データの誤差と最終的に必要な精度を考慮して控えめな値を用いるのがよい
  4. 指数関数の最大制限を越えるとオーバーフローとなる.最小制限を下回ると アンダーフローとなり値は0となる.三角関数の引数が制限値を越えるとエラーとなる.
  5. 三角関数の制限値だけが必然的な値ではなくて,幾分恣意的な選択による値である.本関数の値はFUJITSU FORTRAN 90の標準関数[1]の値に準拠している.従って処理系によって値が変わる可能性がある.
  6. 指数関数と三角関数で引数が制限以内であれば,関数値は真値にほぼ等しいが,引数に誤差がある場合(実際は大抵そうである)には,標準領域への還元計算のために上位桁が失われ,その分だけ誤差が上位に繰り上がる.いいかえると引数の相対誤差がその整数部分の桁数程度拡大される.(整数部分が三桁なら103倍程度)従ってなるべく大引数の関数計算は避けるべきである.
  7. 元々引数に$\pi$を因数として含む三角関数を普通の三角関数で計算するとπの乗算による誤差の発生を避けられない.このような場合には象限三角関数[1]を用いるのが合理的である.
  8. 倍(四倍)精度の最大最小絶対値は10進表示の指数部が3(4)桁になるのでこれらの値を印刷するには指数部桁数指定のE形式FORMAT[1]を用いる.例えばDFMAX( )の場合にはE25.16E3を用いる.

(4) 参考文献

[1] FUJITSU Fortran Language Reference.pdf

(2002.02.22)