« MS-IME め | トップページ | 効率的なマークアップ »

2006年9月 3日 (日)

#Calc 1.1.4 その 5

今日は実数を引数とする指数関数を実装した。

計算には通常のマクローリン展開を使う:

  • ex = x0/0! + x1/1! + x2/2! + x3/3! + …

各項の分母に階乗があるので、多少 x が大きくても速く収束するが、一応 x の絶対値を 1 未満にするために以下の公式を使っている:

  • e2nx = (ex)2n
  • ea log(10) + x = ex 10a

x が負のときは ex = 1 / e-x を使って x を正に直している。コードを簡単にするためでもあるし、計算精度を上げるためでもある。

また、「その 3」で触れた log(2) と log(10) を別の対数から求める公式を以下のものに変更した:

  • log(10) = 93 log(1.024) + 10 log(1.25 / 1.0249)
  • log(2) = 28 log(1.024) + 3 log(1.25 / 1.0249)

1.25 / 1.0249 (≒ 1.009742) の方が 1.25 よりも (そして 1.024 よりも) 1 に近いのでもっと速く収束する。

|

« MS-IME め | トップページ | 効率的なマークアップ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/11750498

この記事へのトラックバック一覧です: #Calc 1.1.4 その 5:

« MS-IME め | トップページ | 効率的なマークアップ »