プログラミングの為の数学と算数

このエントリーをはてなブックマークに追加
3
早速だけど、
非力なCPUで対数を計算させたいのです。
log(a)を求めるのに、a=b*2^n として
bを0.5〜の範囲に調整し
x = 1-b として(xは0〜0.5の範囲)
ln(b) = -(x+x^2/2+x^3/3+x^3/4+x^5/5+x^6/6+x^7/7)

さらに高速なのは
x=(1-b)/(1+b) として(xは0〜0.333の範囲)
ln(b) = -2*(x+x^3/3+x^5/5+x^7/7+x^7/9)
log(b) =-0.86859*(x+x^3/3+x^5/5+x^7/7+x^7/9)

というのは考えました。
これでまあなんとかなりそうだけど、

c=log(a)が求まっている時に aとそう違わないa'に対して
c'=log(a') をもっと効率的に求める方法は無いでしょうか?

つまりニュートン法みたいに、ある計算をすると精度が
少し上がるような計算方法は無いでしょうか?

ニュートン法をそのまま適用するとexp(x)を計算しなけりゃ
いけないようなのですが、これを巧く消す方法が無いかな?