指数関数 exp(x) の冪級数展開で誤差を減らす手法について。

冪級数展開

指数関数の計算には冪級数展開系のアルゴリズムがよく使われる。

代表的なのは Taylor 展開で、その応用に Pade 近似がある。ここでは Taylor 展開を対象に説明しているが、Pade 近似を始め他の同種のアルゴリズムにもその内容は当てはまる。

Taylor 展開

exp ( x ) = k=0 1 k! x k

誤差の原因

主な誤差の原因は以下の二つである。

どちらの誤差も x の絶対値が大きいほど拡大する。

なぜなら、打切り誤差は複数の xk を含んでいる。

そして、情報落ちは xkxk+1/(k+1) の絶対値の差から生じる。

スケーリング

上記より、誤差を縮小するには引数の絶対値を小さくすればよい事が分かった。よって、式に以下のような変形を行う。これはつまり、底 e の指数関数の一部を 2 の冪乗で肩代わりし、それがビットシフトで高速に計算できるのを利用している。

exp ( x ) = exp ( k ln 2 + r ) = 2 k exp ( r )

ここで、kr の絶対値がなるべく小さくなる整数とする。

これにより以下が達成でき、各種の誤差はかなり縮小する。

| r | ln2 / 2 0.3466