指数関数・三角関数の演算について


だいたい予想がつくだろうけど, こういった関数に限らず, 関数の計算には, というのがたいていの人の思いつくところでしょう。 たいていの人も電卓がない時はそうやって計算しているはずです。 多項式近似は, たとえば x<< 1 で sin x=x というのも 広い意味では多項式近似ですし, 電卓が普及してなかった 昔は馬鹿でかい数表とかが売ってましたし。

多項式近似には, 各項の係数の漸化式がわかっていれば 好きなだけの精度が得られるとか, 微分係数とかを求めることも容易であるなどの利点があります。 しかし, この方法には浮動小数点の四則演算, 特に掛け算を多用するので, 遅くなる(最近のマシンはそうでもないか)という欠点があります。 とりあえず詳しくは 多項式近似について をどうぞ。

大きな数表にはとにかくスピードが速いという利点がありますが, ある程度以上の精度を確保しようと思うと, メモリを食いまくるという 欠点があります。

ということで, それほどメモリもくわず, かつ速いという方法があるかというと, 実はあったりします。 通常, マイクロプログラムによる計算方法とか, 桁ずらし法による計算, などといわれるもので (特に三角関数に対しては CORDIC などという名前がついていたりします), 名前からもわかる通り, コンピュータで計算するために編み出されたかのような, 素晴らしい(?)方法です。 電卓などではそれほど高機能なマイクロプロセッサが載っているわけではないですが, この方法はそういった普通の 8 bit 程度のプロセッサでも計算できます。また, 三角関数などをサポートしたコプロセッサなどは, この方法をそのままワイヤーロジックや マイクロプログラムを用いて実現してたりします。

より詳しくは

を御覧ください。
冨永丈博の Home Page に戻る