• 検索結果がありません。

相加相乗平均による初等超越関数の計算

N/A
N/A
Protected

Academic year: 2021

シェア "相加相乗平均による初等超越関数の計算"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

>研究論文@



相加相乗平均による初等超越関数の計算



平山弘・加藤俊二

 自動車システム開発工学科  

Calculation of Elementary Transcendental Function

by Arithmetic-Geometric Mean

Hiroshi HIRAYAMA and Shunji KATOH

Abstract

In 1976, Brent showed that the elementary transcendental functions (exp, log, atan, sin, cosh, etc) can be calculated in O(𝑛𝑛(log 𝑛𝑛)2log log 𝑛𝑛) operations with relative error O(2−𝑛𝑛) as 𝑛𝑛 → ∞. This algorithms depends on the theory of elliptic integrals, using the arithmetic-geometric mean method.

It's learned that this method is effective when calculating by the high precision, but It isn't known in what kind of area this way is effective. In this paper, Elementary transcendental function was calculated and its validity was checked using algorithm of this Brent.

Keywords:multi-precision, elementary transcendental functions, the arithmetic-geometric mean   はじめに これまで多くの高精度計算プログラムが開発され 来たが、相加相乗平均法である高速な %UHQW のアル ゴリズム  を使ったプログラムは開発されて来なか った。このアルゴリズムは極限において非常に効率 的なものであるが、 桁とか  桁程度の計算で は、あまり有効ではなかったためではないかと思わ れる。最近計算機が速くなり記憶装置も十分な大き さを持つようになったことから、%UHQW のアルゴリ ズムの有効性を調べた。 %UHQW の文献にもあるが、6DODPLQ が提案した計 算法に相加相乗平均を使う円周率の高速な計算法  がある。この計算法は一時期円周率の計算によく使 われた計算法である。その当時、それと類似した方 法で対数関数の計算  の研究などもある。最近は、 分割法   によって円周率の計算が行われるように なって来ている。関数の計算も将来的には、その方 法で計算が行われると思われる。 本論文では、高精度の計算でしか有効でないと言 われた相加相乗平均法を使って、初等超越関数を計 算し、どの程度有効かを調べ、その有効範囲を決定 する。 以下の計算には、計算機として ,QWHO L. *+] を 使 用 し 、 コ ン パ イ ラ ー と し て は 、 0LFURVRIW9LVXDO6WXGLR&を使用した。  ))7 による高精度数の乗算 高精度数の演算で問題になるのは計算時間である。 このため高速アルゴリズムは不可欠である。その中 で、高精度数の乗算は、高速フーリエ変換())7) を使うと高速に行うことができることが知られてい る。

n

桁の数値の乗算には通常

n

2のオーダーの計 算時間が必要であるが、))7 を使うと

n

log

n

のオー ダーで計算できる。相加相乗平均法で高速に計算す るためにも、))7 を利用した乗算が不可欠である。

(2)

.DUDWVXED による高速乗算法  もある。低精度の 乗算では通常の乗算法が有効で、高い精度計算では ))7 を利用した乗算方法が有効であることが知られ ているので、その中間の精度で .DUDWVXED の乗算方 法が有効ではないかと推定される。この方法で高精 度計算プログラムを作成してみたが、自作のプログ ラムでは有効な範囲が見つからなかった。このため、 自作プログラムには、.DUDWVXED の乗算方法は、複 素数の乗算には使っているが、多倍長精度の数値の 乗算には使っていない。

n

が十分大きな数の場合すなわち高い精度の場合、 ))7 を使った計算法は非常に効率的である。多くの 計算機で、 進数で約  桁程度を越えれば、))7 アルゴリズムを使った計算法が、通常の計算法より 高速に計算できる。 ))7 を使って、高精度数の積を計算するには、通 常の二つの計算方法が考えられる。有限体を使って 計算する方法と浮動小数点を使って計算する方法で ある。有限体を使った計算方法の場合、整数演算だ けを使うので、誤差の入らない厳密な計算結果が得 られる。一方、浮動小数点演算を使う方法は、三角 関数などの近似値を扱うために厳密な計算ができな い。しかし、最終結果は整数であることが分かって いるので、誤差が十分に小さいならば、丸め処理に よって厳密な計算が可能である。 これまでの多くの計算機では、最も精度の高い整 数は、 ビットであり、浮動小数点数は、 ビッ トである。大型計算機では、 ビットの浮動小数 点数もある。このため、計算精度の高い浮動小数点 数を使った計算方法が多く使われてきた。最近のマ イクロプロセッサでは、 ビット精度の整数を扱 うことが出来るので有限体を使った計算法も行われ 始めている。

2.1. 実数用 FFT による高精度数の乗算法

高精度整数

x

b

進数

m

桁で表現する。すなわち 

x

x b

k k k m

 

0 1     とする。このとき高精度整数

y

との積

z

は、 

 

j k k j k j

x

y

z

0    となる。この計算は畳み込み演算と呼ばれ高速フー リエ変換によって効率よく計算できることが知られ ている 。この場合、倍精度実数を利用した ))7 を 利用する計算方法がよく使われる。))7 にも多くの 計算法があり、今回利用したプログラムには、実数 用で基数が  および  の ))7 プログラムである。 ))7 には、複素数用と実数用があるがここで扱うデ ータが実数であるので、実数用を利用した。実数用 は、同じデータ数であるとき複素数用の約  倍高速 である。基数2の ))7 は、プログラムは短く、よく 使われる計算法である。%HUJODQG って発表された 基数  のプログラムを使えば、さらに高速に計算で きるので、))7 には基数  のものを使用した。 実数用 ))7 の計算では、計算の途中で打切り誤差 が入る。この誤差は、最後の丸め処理によって厳密 な値になるためには、次のような関係式を満たさな ければならない。この式は +HQULFL1)によって導か れたものである。

b

進数

m

桁の数値を厳密に乗算 できるには、計算精度の相対誤差を

マシン・イ プシロン とすると 2 2 2

(

2

log

7

)

192

1

b

m

m

    を満たさなければならない。この式から基数

b

が大 きいほど要求精度が高くなることがわかる。桁数

m

も大ききなると要求精度が高くなる。この式は、 相対誤差の2乗以上の高次の項を省略する方法で、 誤差を評価しているので、ほぼ十分条件になる。現 実にはもっと低い精度でも計算可能である。たとえ ば、上の式で

b

10000

2

.

22

10

16(,((( 方式の倍精度浮動小数点)の場合、この式では計算 可能桁数は  桁となる。実際には  万桁の数 も計算可能である。  式より精密な評価を得る ために、区間演算などを試みたが、若干適用範囲が 増加したが、実用的な範囲にはならなかった。  式を誤差の評価式と見たとき、誤差は、基 数

b

の2乗、対数部分を省略すると桁数

m

の約2 乗に比例することがわかる。この場合の基数

b

とは、 1語の中に入る最大の整数という意味になるので、

(3)

誤差が最大になるのは、各語に

b 1

の数値を入れ た と き 最 大 の 誤 差 に な る こ と が わ か る 。

b  10000

とすれば、各語に  を入れたとき最 大の誤差が生じることになる。

b

2

nのときは、 各語に

2

n

1

を入れたとき最大の誤差が生じる。 計算結果は、整数であることが知られているので、 誤差が  より小さいならば、四捨五入の計算によ って、厳密な計算が可能である。誤差は、最大の数 値を入れて計算することによって計算が可能なので、 計算できる限界も容易にわかる。

2.2. 最大誤差の計算

前節で述べたことを確かめるために、 ,((( 方式 の倍精度浮動小数点をもつ計算機を使って誤差を計 算した。

b  100

と固定して、桁数

m

を増やす。 このときの誤差は、表1のようになる。 表1 桁数 P を増やしたときの誤差 P       HUURU ( ( ( ( ( ( このときの計算方法は、基数2の ))7 である。桁数

m

が2倍になると、誤差は約4倍となり、上の公 式が成り立つことがわかる。次に、桁数P  と固 定して、基数

b

を変化させる。このとき、誤差は表 2のようになる。このときの計算法は、基数2の ))7 である。 表2 基数 E のビット幅を増やした時の誤差(P ) E       (UURU ( ( ( ( ( ( この計算結果から、誤差は、基数

b

のかなり正確に 2乗に比例することがわかる。この誤差が、 よ り小さければ、実数を使った ))7 による高精度の数 値の乗算が厳密に行うことができる。このようにし て、限界を求めると次のようになる。 ))7 として基数8の %HUJODQG のプログラム を利 用した。基数

b

として、2のべき乗と  のべき乗 を使った。その結果は表3のようである。E  場合の計算は、使用したプログラムの限界で、求め られなかった。ここで示した E  の結果は、 2RXUD によって作成したプログラム  による結果で ある。 表 .基数  の ))7 の場合 基数

b

 誤差 計算可能桁数

m

 計算可能桁数  進換算    ! !             

(4)

2.3. FFT を使った計算時間

高速フーリエ変換 ))7 を使うと高精度の数値を 高速に乗算を行うことができる。同じ桁の数値の掛 け算を行うとき、 進数で約  桁( 進数で 約  桁)以上のとき、))7 を使った計算法を使 い、それ以下では通常の乗算法を使っている。いろ いろな桁数の計算時間を表  に示す。計算精度を上 げていくと、途中再び通常の計算法が一旦速くなる こともあるが、計算時間にそれほど大きな違いにな らないので、その精度の時でも、))7 を使った計算 法を使用している。通常の計算法と ))7 を利用した 計算法の境界の桁数は、高速計算機ほど、大きくな る傾向がある。 最初にこのプログラム作成した計算機 ,QWHO 社 L では、乗算の限界が  進数で約  桁 であった。  相加相乗平均法を計算 相加相乗の平均の計算とは、二つの数列

a ,

n

b

nに 対して、次のような計算を次々と行うことである。 n n n n n n

a

b

b

a

b

a

1

,

1

2

     この計算は、2乗収束することが知られている。こ の計算法を利用した関数計算が %UHQW によって提案 されている。%UHQW によると、関数

U

(

m

),

T

(

m

)

を、表  のように定義する。このとき

))

(

log(

)

(

m

T

m

U



e

U(m)

T

(

m

)

   この式を使って指数関数

e

xを計算するには、まず 次の方程式を解く。   

U

(

m

)

x

            方程式  を解き解

m

0を求める。上の関係式か ら次の式が成り立つ。   

e

U(m0)

T

(

m

0

)

        0

m

が求まれば、

T

(

m

0

)

を計算すれば、

e

xの値が 計算できる。  の方程式を解くために、次のよ うに 1HZWRQ 法を使う。  

)

('

)

(

1 n n n n

m

U

U

m

m

x

m

 () 得られた

m

を使って

T

(m

)

を計算することによっ て

e

xを求めることができる。逆に       

T

(

m

)

x

   ) を解き、求められた

m

を使って

U

(m

)

を計算する ことによって

log

x

を求めることができる。  自動微分法による高速化 %UHQW>@は 1HZWRQ 法で使う微分係数を計算する ために数値微分を使うことを提案している。このよ うな数値微分法では、()の右辺を計算するた

表4乗算の実行時間(単位 PVHF)

 進の桁数  ))7 通常                       表3 %UHQW の

U

(m

)

T

(m

)

の関数 $OJRULWKPIRU

U

(m

)

 

A

1



B

1

m

  ZKLOH

A

B

2

n/2GR   EHJLQ

C

(

A

B

)

/

2

 

B 

AB

 

A 

C

HQG    

A

/(

A

B

)



S 

m

    ZKLOH

1

S

2

n/2GR    EHJLQ

A

A

( S

1

)

/

2

 

S

2

S

/(

1

S

)

HQG    UHWXUQ

A 

( S

1

)

/

2

  $OJRULWKPIRU

T

(m

)



1

V



S 

m

 ZKLOH

1

S

2

nGR EHJLQ

W

2

SV

/(

1

V

2

)

 

W

W

/(

1

1

W

2

)



)

1

/(

)

(

V

W

VW

W



)

1

1

/(

W

2

W

V

 

S

2

S

/(

1

S

)

HQG  UHWXUQ

(

1

V

)

/(

1

V

)



(5)

めに最低でも関数

U

(m

)

を2回計算しなければなら ない。ところが上の式を見ればわかるように、除算 や平方根の計算が含まれている。この場合、除算や 平方根を含む式を計算する時間より少ない時間で微 分係数を計算することができる。 次のような  行の単純なプログラムで [ について 微分することを考える。 S [AT VTUW S  S、qの [ についての微分を GS、GT とすると     GS  [ G[GT GS  VTUW S  として計算される。関数 VTUW S は、元々の関数で すでに計算されているものであるから、微分係数を 計算するには平方根の計算は不要になり、高速に計 算 することができる。実際の計算では、平方根を 計算するには、平方根の逆数を計算し、その値から 平方根を計算されているため、上の計算では平方根 による除算も不要となり次のように高速化ができる。 S [AW UHFLSBVTUW S T W S   UHFLSBVTUW [ は平方根の逆数関数     GS  [ G[GT GS W と計算できる。高精度計算では、短い桁数の整数に よるわり算は高速に行えるので、2によるわり算は 問題とならず、全体としてかなり高速化できる。 わり算を含む式の微分係数の計算は、乗算の回数 は増えるものの除算が不要になるのでかなり高速化 できる。指数関数

e

xの微分係数は、この関数が微 分しても同じ値となるため、この性質を使うことで 高速化できる。対数関数

log

x

の微分係数は、この 関数の微分が

x

1

と単純な関数になることを利用し て高速化できる。三角関数(

sin

x

cos

x

)の計 算は、これらの関数が同時に計算すると高速計算す ることができることから、高速化できる。この方法 でプログラムを微分すると

U

(m

)

U

(m

)

が同時 に計算できるプログラムを作ることができる。 

4.1 微分係数を使った効果

指数関数の計算例として、

e

2

4.1132503

を  桁と  桁の精度で計算した。計算は() の方程式を倍精度数を使って 1HZWRQ 法で計算し、 高精度計算を始めるための初期値を計算した。その 値を使い高精度で 1HZWRQ 法を使ってその計算に必 要な精度を確保しながら計算した。1HZWRQ 法では、 微分係数は計算精度の半分で十分なので、微分係数 の計算式を計算精度を半分にして評価した。   桁  桁 差分を利用した方法  秒  秒 微分法を利用した方法  秒  秒 微分係数を差分近似で計算する方法に比べ、約  パーセント高速になった。微分係数の計算が差 分法に比べ、4倍程度高速になったことになる。  相加相乗平均法が有効な範囲 相加相乗平均法($*0 法)の有効範囲を求めて計 算精度を上げて調べた。$*0 法として微分係数を利 用した高速化した $*0 法を使った。比較の対象は自 作の多倍長プログラム 033DFN と比較した。ここで は、 の問題を使って計算した。 033DFN では、細かい点を除けば、

e

x

x

x

n

2

として、7D\ORU 展開式から計算し、その値を

n

回  乗計算する方法で計算する。

n

は計算する 7D\ORU 展開式の項数と2乗計算の回数が  になりように 選んでいる。   その計算結果を表  に示す。$*0 法は  万桁以 下では通常の多倍長ルーチン 033DFN より遅いこと がわかった。 万桁の計算でようやく速くなった。 この多倍長ルーチンは、その当時の計算機が遅かっ たこともあり、 万桁程度の数値想定して作成し たものである。このため、さらに改良が行われると 思われるが、現段階では $*0 法は  万桁を超えた ところでは、効率的な計算法と言える。 表5 $*0 法と多倍長ルーチン(033DFN)の比較 計算精度 高速化 $*0 法 033DFN                     

(6)

  まとめ 相加相乗平均法($*0 法)による初等超越関数の 計算法を解析的な微分係数の計算(自動微分法)を 導入することによって、高速化を行った。高速化さ れた $*0 法で初等超越関数の計算を行い、その計算 の有効範囲を調べた。その有効範囲は  万桁以上 の範囲とわかった。この範囲では  個の関数値を計 算するのに1~2分以上かかり、あまり実用的とは 思えない範囲であった。 円周率の計算では、最近 $*0 法を使わない傾向が あり、その方法を使えば、通常の計算法がさらに高 速化される可能性があり、さらに $*0 法による計算 の有効範囲がさらに高精度に追いやられる可能性は ある。   参考文献 >@ %UHQW 5 3  )DVW PXOWLSOHSUHFLVLRQ HYDOXDWLRQRIHOHPHQWDU\IXQFWLRQV-$VVRF &RPSXW0DFK  

>@ 6DODPLQ (  &RPSXWDWLRQ RI π XVLQJ DULWKPHWLFJHRPHWULF PHDQ 0DWK &RPSXW   

>@6DVDNL7DQG.DQDGD<3UDFWLFDOO\)DVW

0XOWLSOH3UHFLVLRQ (YDOXDWLRQ RI /RJ [  - ,QIR3URF  

>@ +HQULFL 3  $SSOLHG DQG &RPSXWDWLRQDO &RPSOH[ $QDO\VLV 9RO  &KDS  -RKQ :LOH\ 6RQV1HZ<RUN  

>@ %HUJODQG * '  $ 5DGL[(LJKW )DVW )RXULHU7UDQVIRUP6XEURXWLQHIRU5HDO9DOXHG 6HULHV,(((7UDQV$($8SS >@.DUDWVXED$DQG2IPDQ<0XOWLSOLFDWLRQ RI PXWLGLJLW QXPEHUV RQ DXWRPDWD 'RNODG\ $NDG1DXN66659ROSS   >@ 後保範  金田康正  高橋大介:級数に基づ く多数桁計算の演算量削減を実現する分割有理 数 化 法 , 情 報 処 理 学 会 論 文 誌 ,     >@平山弘:連分数の多倍長精度高速計算法情報 処理学会論文誌、  

>@ 大浦拓哉 2RXUD’V 0DWKHPDWLFDO 6RIWZDUH 3DFNDJHV WWSZZZNXULPVN\RWRXDFMSRRXUDLQGH[ MKWPO >@ 5DOO/ % $XWRPDWLF 'LIIHUHQWLDWLRQ 7HFKQLTXHDQG$SSOLFDWLRQV/HFWXUH1RWHVLQ &RPSXWHU6FLHQFH9RO6SULQJHU9HUODJ %HUOLQ+HLGHOEHUJ1HZ<RUN 



参照

関連したドキュメント

A wave bifurcation is a supercritical Hopf bifurcation from a stable steady constant solution to a stable periodic and nonconstant solution.. The bifurcating solution in the case

We shall see below how such Lyapunov functions are related to certain convex cones and how to exploit this relationship to derive results on common diagonal Lyapunov function (CDLF)

(Furthermore, a bound on the number of elementary matrices can be found that depends only on n, and is universal for all fields.) In the case of fields, this can easily be

Motivated by ongoing work on related monoids associated to Coxeter systems, and building on well-known results in the semi-group community (such as the description of the simple

It implies that if the initial (M, φ) is c log-convergent (resp. overconvergent), then Dwork’s unit root zeta function in the ordinary rank one case can be expressed in terms

In this article we prove the following result: if two 2-dimensional 2-homogeneous rational vector fields commute, then either both vector fields can be explicitly integrated to

More recently, Hajdu and Szikszai [12] have investigated the original problem of Pillai when applied to sets of consecutive terms of Lucas and Lehmer sequences.. It is easy to see

While early experiments with algebraic multigrid solvers have shown promising results [2], herein we focus on a domain decomposition approach based on the finite element tearing