[ ホーム ] [ 高速化手法 ] [ 平方根/立方根 ] [ 整数指数 ] [ 指数関数 ] [ 実数指数 ] [ 自然対数 ] [ 一般対数 ] [ 正弦/余弦 ] [ 正接 ] [ 逆正弦/逆余弦 ] [ 逆正接 ] [ 双曲線正弦/余弦 ] [ 双曲線正接 ] [ 逆双曲線関数 ]

上へ

高速化手法

級数演算

最終更新日:2007/02/20  新規

●概要 

 標準的な級数の型における演算について解説する。

●Linear Xk / k

○演算内容

 黒が直前の値。赤は追加される演算アイテム。

k 演算
1 X / 1
2 X・X / 2
3 X2・X / 3

○演算カーネル

SX = 1      Xk
SM = 0     
総和

k = 1 To ??????
   SX = SX * X
   SM = SM + SX / k
Loop

○演算種

 k < Baseと仮定する。Numは多倍長。

演算 XがBase未満 XがNum
MulI 1  
Mul   1
DivI 1 1
Add 1 1

●LinearOdd X2k+1 / (2k + 1)

○演算内容

 黒が直前の値。赤は追加される演算アイテム。

k 演算
0 X / 1
1 X・X・X / 3
2 X3・X・X / 5

○演算カーネル

XX = X・X
SX = X     
X2k+1
SM = X     
総和

k = 1 To ??????
   SX = SX * XX
   SM = SM + SX / (2k + 1)
Loop

○演算種

 k < Baseと仮定する。

演算 XがBase未満 XがNum
MulI 1  
Mul   1
DivI 1 1
Add 1 1

●Factorial  Xk / k!

○演算内容

 黒が直前の値。

k 演算
0 1
1 X / 1
2 X・X / 1・2
3 X2・X / 1・2・3

○演算カーネル

SX = 1      Xk/ k!
SM = 0     
総和

k = 1 To ??????
   SX = SX * X
   SX = SX / k
   SM = SM + SX
Loop

○演算種

 k < Baseと仮定する。

演算 XがBase未満 XがNum
MulI 1  
Mul   1
DivI 1 1
Add 1 1

●FactorialEven X2k / (2・k)!

○演算内容

 黒が直前の値。

k 演算
0 1
1 X・X / 1・2
2 X2・X・X / 1・2・3・4
3 X4・X・X / 1・2・3・4・5・6

○演算カーネル

SX = 1      X2k / (2・k)!
SM = 0     
総和
XX = X
・X

k = 1 To ??????
   SX = SX * XX
   SX = SX / ((2k
– 1)・2k)
SM = SM + SX
Loop  

・カーネルの高速化

2k > Sqrt(Base) の場合は、SX = SX / ((2k – 1)・2k) は、以下のように二回に分ける。

SX = SX / (2k – 1)
SX = SX / 2k

多倍長の除算1回より、DivI (多倍長/Base) 2回の方が圧倒的に早いからである。

○演算種

演算 XXがBase未満 XがNum
MulI 1  
Mul   1
DivI 1 or 2 1 or 2
Add 1 1

●FactorialOdd  X2k+1 / (2・k + 1)!

○演算内容

 黒が直前の値。

k 演算
0 X
1 X・X・X / 1・2・3
2 X3・X・X / 1・2・3・4・5
3 X5・X・X / 1・2・3・4・5・6・7

○演算カーネル

SX = X      X2k+1 / (2・k + 1)!
SM = X     
総和
XX = X
・X

k = 1 To ??????
   SX = SX * XX
   SX = SX / (2k
・(2k + 1))
   SM = SM + SX
Loop  

・カーネルの高速化

(2k + 1) > Sqrt(Base) の場合は、SX = SX / (2k・(2k + 1)) は、以下のように二回に分ける。

SX = SX / 2k
SX = SX / (2k + 1)

多倍長の除算1回より、DivI (多倍長/Base) 2回の方が圧倒的に早いからである。

○演算種

演算 XXがBase未満 XがNum
MulI 1  
Mul   1
DivI 1 or 2 1 or 2
Add 1 1

●FactorialDoubleEven  (2k-1)!!/((2k)!!(2k))・X-(2k)

○演算内容

 黒が直前の値。緑はその項にだけ適用される数。

k 演算
1  (1 / 2・2) / X・X
2 (1・3 / 2・4・4)/ X2・X・X
3 (1・3・5 / 2・4・6・6)/ X4・X・X

○演算カーネル

  XX = X・X
  SX = 1
  SM = 0

  k = 1 To ????
     SX = SX
・(2k – 1)
     SX = SX / 2k
     SX = SX / XX
     SM = SM + SX / 2k
  Loop

○演算種

演算 XXがBase未満 XがNum
  2k < Base 2k ≧ Base 2k < Base 2k ≧ Base
MulI 1      
Mul   1 1 1
DivI 3 1 2  
Div   2 1 3
Add 1 1 1 1

●FactorialDoubleOdd  (2k-1)!!/((2k)!!(2k + 1))・X(2k+1)

○演算内容

 黒が直前の値。緑はその項にだけ適用される数。

k 演算
0 X
1 (1 / 2・3)・X・X・X
2 (1・3 / 2・4・5)・X3・X・X
3 (1・3・5 / 2・4・6・7)・X5・X・X

○演算カーネル

  XX = X・X
  SX = X
  SM = X

  k = 1 To ????
     SX = SX
・(2k - 1)
     SX = SX / 2k
     SX = SX
・XX
     SM = SM + SX / (2k + 1)
  Loop

○演算種

演算 XXがBase未満 XがNum
  (2k + 1) < Base (2k + 1) ≧ Base (2k + 1) < Base (2k + 1) ≧ Base
MulI 2 1 1  
Mul   1 1 2
DivI 2   2  
Div   2   2
Add 1 1 1 1