研究概要 |
数値計算系の言語(たとえばFortran,C)にくらべ数式処理系の言語は(当然ながら)数値計算は比較的遅い。何故なら数式処理ははじめから任意精度の計算能力を持っているので高速性はある程度犠牲にされるのである。この欠点はは四則よりも関数値計算によりはっきりする。この研究の目的は初等超越関数の任意精度高速計算は上述の欠点を補うためのものである。現在普及している計算機では小数float)計算より整数(int)の計算が速い。そこでfloat計算よりint計算をより使う関数計算アルゴリズムを研究した。工夫をすればいくつかの方法があるがここでは歴史のある連分数の方法を改良して用いることにした。その理由は計算を殆ど整数の加減乗算で行い割り算(floatの計算)はほんの僅か(殆どの場合1回)にできる。また誤差の評価が比較的容易でStirlingの公式などを用いればかなり厳密に誤差評価ができる。連分数を用いた関数表示は歴史的な結果であるがその高速計算性は最近のものである。更に我々が示したように入力を有理数としたとき分子,分母の2つの整数で最終結果が求まるように表現した文献はまだ表れていないように思われる。 理論をprogramした結果はかなり良好で詳細は本論に譲るが計算速度は数式処理のなかでは関数計算が高速と評判のあるPari GPよりexp,tanは一桁atanは数割高速である。残念ながらlogはPari GPより遅いが連分数の計算を工夫すれば数倍高速化できる見通しがありこれは今後の課題である。
|