ADEXP/DADEXP(逆二重指数変換)
作成 二宮 市三  2003年6月 
形式 関数 言語:FORTRAN 104行,142行 C言語 96行,128行


概要
ADEXP(DADEXP) は単(倍)精度実数 xに対して逆二重指数変 換を単(倍)精度で計算する。
逆二重指数変換は y = exp(x - exp(-x))の逆関数で (-∞, 0)では未定義である。
使用法
(1)
ADEXP(x), DADEXP(d)
x(d)は単(倍)精度の任意の式である。 DADEXP には倍精度の宣言が必要。
(2)
引数の範囲: x >= 0, d >= 0
(3)
エラー処理:範囲外の引数が与えられた場合にはエラーメッセージを 印刷し,関数値を0として計算を続行する。( FNERST 参照)

計算法
逆二重指数変換は簡単な関数の逆関数であるからその計算には反復法が利用できる。 しかし本関数プログラムでは可能な限り最良有理近似式を用いる。 次表の次数欄は有理式の分子/分母の次数を表す。
番号 区間 変数変換 計算式 次数(単) 次数(倍)
1 (0, e-3) u = log(x) Halley法    
2 (e-3, 0.222) u = log(x) + 1 uR2(u) 3/2 6/5
3 (0.222, e-1) u = x - e-1 uR3(u) 3/3 6/6
4 (e-1, 0.779) u = x - e-1 uR4(u) 3/2 6/5
5 (0.779, e) u = log(x) + 1 uR5(u) 3/2 6/6
6 (e, e33) u = 1/x log(x) + uR6(u) 3/3 6/6
7 (e33, ∞) u = log(x) u    

一元方程式 f(y) = 0を反復式 yn+1 = yn - f/(f ' - ff ''/2f ')によって解く方法をHalley法といい,3次の収束性をもつ。逆二重指数変換の場合は x = exp(y - exp(-y))を変形した f(y) = y + log(y - u), (u = log(x))を解く


Yohsuke HOSODA 平成15年6月6日