JP2575984B2 - べき乗計算器及び乗算器 - Google Patents
べき乗計算器及び乗算器Info
- Publication number
- JP2575984B2 JP2575984B2 JP4671692A JP4671692A JP2575984B2 JP 2575984 B2 JP2575984 B2 JP 2575984B2 JP 4671692 A JP4671692 A JP 4671692A JP 4671692 A JP4671692 A JP 4671692A JP 2575984 B2 JP2575984 B2 JP 2575984B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- value
- binary
- ternary
- difference
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Description
【0001】
【産業上の利用分野】この発明は数xと数nとのべき乗
xn を、nを2べき乗に分解することにより少ない演算
回数で計算するべき乗計算器、および加算と減算とによ
り乗算n・xを計算する乗算器に関する。
xn を、nを2べき乗に分解することにより少ない演算
回数で計算するべき乗計算器、および加算と減算とによ
り乗算n・xを計算する乗算器に関する。
【0002】
【従来の技術】べき乗計算を少ない演算回数で(高速
に) 行なう方法としてバイナリ法(Binary me
thod)が知られている。(D.E.Knuth:
“Seminumerical algorithm
(arithmetic)”TheArt of Co
mputer Programming Vol.2,
Addison Wesley(1969)バイナリ法
はnを2のべき乗の和n=2 k1+2k2+…+2kmに分解
し、(x2 ) k1×(x2 ) k2×…×(x2 ) kmを計算し
てxn を得るものである。たとえば、X47(n=47)
の演算回路は以下のようになる。まず、x32は以下のよ
うに5回の乗算で計算できる。
に) 行なう方法としてバイナリ法(Binary me
thod)が知られている。(D.E.Knuth:
“Seminumerical algorithm
(arithmetic)”TheArt of Co
mputer Programming Vol.2,
Addison Wesley(1969)バイナリ法
はnを2のべき乗の和n=2 k1+2k2+…+2kmに分解
し、(x2 ) k1×(x2 ) k2×…×(x2 ) kmを計算し
てxn を得るものである。たとえば、X47(n=47)
の演算回路は以下のようになる。まず、x32は以下のよ
うに5回の乗算で計算できる。
【0003】x→x2 →x4 →x8 →x16→x32((x
2 ) k は2乗をk回繰り返すことで計算できる)また、
47=32+8+4+2+1より、さらに4回の乗算で
x32×x8 ×x 4 ×x2 ×x=x32+8+4+2+1=x47とな
る。よってX47は9回の乗算で計算できる。
2 ) k は2乗をk回繰り返すことで計算できる)また、
47=32+8+4+2+1より、さらに4回の乗算で
x32×x8 ×x 4 ×x2 ×x=x32+8+4+2+1=x47とな
る。よってX47は9回の乗算で計算できる。
【0004】バイナリ法の演算回数をrB は指数nに対
して式(1) のとおりである。 rB (n) =a(n)+Σi=0 a(n)-1Bi (1) ただしa(n)=〔log2 n〕, Bi ∈{0,
1}, n=2a(n)+Σi=0 a(n)-1Bi ・2i (2) ただし、〔D〕はDの小数点以下を切捨た整数、Bi の
組B=〔Ba(n)-1, B a(n)-2, …,B1 ,B0 〕はn−
2a(n)の二進表現である。
して式(1) のとおりである。 rB (n) =a(n)+Σi=0 a(n)-1Bi (1) ただしa(n)=〔log2 n〕, Bi ∈{0,
1}, n=2a(n)+Σi=0 a(n)-1Bi ・2i (2) ただし、〔D〕はDの小数点以下を切捨た整数、Bi の
組B=〔Ba(n)-1, B a(n)-2, …,B1 ,B0 〕はn−
2a(n)の二進表現である。
【0005】バイナリ法の特徴として、指数nを二進表
現したとき“1”の桁数が少ない場合には少ない乗算回
数でべき乗が求まるが、“1”の桁数が多い場合には乗
算回数が多くなることが問題であった。そのようなnに
対しては、乗算に加え除算を用いることで演算回数(乗
算回数と除算回数の和) を減らせることが知られてい
る。Morain−Olivos法は、加算と減算を用
いてnxを計算する方式であり、その加算と減算をそれ
ぞれ乗算と除算に置き換えることによりべき乗計算に適
用できる。この方法では、加算と減算の組合せを求める
手順においてnの上位桁に対する場合分けが不十分であ
り、減算を用いるよう拡張したバイナリ法の枠組のなか
で演算回数を最小化する手順になっていない。
現したとき“1”の桁数が少ない場合には少ない乗算回
数でべき乗が求まるが、“1”の桁数が多い場合には乗
算回数が多くなることが問題であった。そのようなnに
対しては、乗算に加え除算を用いることで演算回数(乗
算回数と除算回数の和) を減らせることが知られてい
る。Morain−Olivos法は、加算と減算を用
いてnxを計算する方式であり、その加算と減算をそれ
ぞれ乗算と除算に置き換えることによりべき乗計算に適
用できる。この方法では、加算と減算の組合せを求める
手順においてnの上位桁に対する場合分けが不十分であ
り、減算を用いるよう拡張したバイナリ法の枠組のなか
で演算回数を最小化する手順になっていない。
【0006】この発明は、べき乗計算や乗算において、
それぞれ従来より少ない演算回数で計算することができ
るべき乗計算器及び乗算器を提供することを目的とす
る。
それぞれ従来より少ない演算回数で計算することができ
るべき乗計算器及び乗算器を提供することを目的とす
る。
【0007】
【課題を解決するための手段】この発明のべき乗計算器
によれば、三値化変換回路と三値化二進計算回路とより
なり、三値化変換回路ではnの二進表現の各ビットが順
次得られ、そのビットの“0”と“1”の出現回数の差
が順次計数され、この差の値により反転状態と非反転状
態との間で遷移され、その状態と“0”及び“1”の出
現回数の差とにより1,0,−1の列である三値化二進
数Tが出力され、n=2a(n)+Σi=0 a(n)Ti Zi 、
(Ti ∈{−1,0,1},a(n)=〔log2
n〕)となるTi の組T=〔Ta(n),…,T1 ,T0 〕
のうち、Σi=0 a(n)|Ti |が最小なる組合せが求めら
れる。三値化二進計算回路はXレジスタにxが初期値と
して格納され、そのXレジスタの値が各i回目ごとに2
乗手段で2乗されてXレジスタに格納され、Yレジスタ
及びZレジスタにそれぞれ初期値として1が格納され、
乗算手段により、i回目の繰り返しで得られたXレジス
タの値(X2 ) i と、Tiに応じてYレジスタ(Ti =
1のとき) の値とが乗算されてYレジスタに格納され、
またはZレジスタ(Ti =−1のとき) の値とが乗算さ
れてZレジスタに格納され、繰り返しの終了後にXレジ
スタの値とYレジスタの値とが乗じられて、その乗算結
果がZレジスタの値で除算され、(x2 ) a(n)Πi=0
a(n)(x2 )Tiが演算されてxn が得られる。
によれば、三値化変換回路と三値化二進計算回路とより
なり、三値化変換回路ではnの二進表現の各ビットが順
次得られ、そのビットの“0”と“1”の出現回数の差
が順次計数され、この差の値により反転状態と非反転状
態との間で遷移され、その状態と“0”及び“1”の出
現回数の差とにより1,0,−1の列である三値化二進
数Tが出力され、n=2a(n)+Σi=0 a(n)Ti Zi 、
(Ti ∈{−1,0,1},a(n)=〔log2
n〕)となるTi の組T=〔Ta(n),…,T1 ,T0 〕
のうち、Σi=0 a(n)|Ti |が最小なる組合せが求めら
れる。三値化二進計算回路はXレジスタにxが初期値と
して格納され、そのXレジスタの値が各i回目ごとに2
乗手段で2乗されてXレジスタに格納され、Yレジスタ
及びZレジスタにそれぞれ初期値として1が格納され、
乗算手段により、i回目の繰り返しで得られたXレジス
タの値(X2 ) i と、Tiに応じてYレジスタ(Ti =
1のとき) の値とが乗算されてYレジスタに格納され、
またはZレジスタ(Ti =−1のとき) の値とが乗算さ
れてZレジスタに格納され、繰り返しの終了後にXレジ
スタの値とYレジスタの値とが乗じられて、その乗算結
果がZレジスタの値で除算され、(x2 ) a(n)Πi=0
a(n)(x2 )Tiが演算されてxn が得られる。
【0008】この発明の乗算器によれば、三値化変換回
路と、三値化二進計算回路とよりなり、三値化変換回路
は前記べき乗計算器のそれと同一であり、三値化二進計
算回路はXレジスタにxが初期値として格納され、その
Xレジスタの値が2倍手段により各i回目ごとに2倍し
てXレジスタに格納され、YレジスタおよびZレジスタ
にそれぞれ初期値として1が格納され、加算手段によ
り、i回目の繰り返しで得られるXレジスタの値2i ・
xと、Ti に応じてYレジスタ(Ti =1のとき) の値
とが加算されてYレジスタに格納され、またはZレジス
タ(Ti =−1のとき) の値とが加算されてZレジスタ
に格納され、繰り返しの終了後にXレジスタの値とYレ
ジスタの値とが加算され、その加算結果からZレジスタ
の値が減算され、2a(n)・x+Σi=0 a(n)Ti ・2i ・
xが演算されてnxが得られる。
路と、三値化二進計算回路とよりなり、三値化変換回路
は前記べき乗計算器のそれと同一であり、三値化二進計
算回路はXレジスタにxが初期値として格納され、その
Xレジスタの値が2倍手段により各i回目ごとに2倍し
てXレジスタに格納され、YレジスタおよびZレジスタ
にそれぞれ初期値として1が格納され、加算手段によ
り、i回目の繰り返しで得られるXレジスタの値2i ・
xと、Ti に応じてYレジスタ(Ti =1のとき) の値
とが加算されてYレジスタに格納され、またはZレジス
タ(Ti =−1のとき) の値とが加算されてZレジスタ
に格納され、繰り返しの終了後にXレジスタの値とYレ
ジスタの値とが加算され、その加算結果からZレジスタ
の値が減算され、2a(n)・x+Σi=0 a(n)Ti ・2i ・
xが演算されてnxが得られる。
【0009】べき乗計算においてこの発明により乗算と
除算を用いることで従来のバイナリ法にくらべて演算回
数が削減できる例としてx47を考える(上記と同じ例で
あり、バイナリ法では9回の乗算が必要となる) 。ま
ず、x32は以下のように5回の乗算で計算できる。 x→x2 →x4 →x8 →x16→x32 また、47=32+16−1であるから、さらに2回の
乗除算でx32×x16/x=x32+16-1 =x47となる。よ
ってx47は7回の乗除算で計算できる。
除算を用いることで従来のバイナリ法にくらべて演算回
数が削減できる例としてx47を考える(上記と同じ例で
あり、バイナリ法では9回の乗算が必要となる) 。ま
ず、x32は以下のように5回の乗算で計算できる。 x→x2 →x4 →x8 →x16→x32 また、47=32+16−1であるから、さらに2回の
乗除算でx32×x16/x=x32+16-1 =x47となる。よ
ってx47は7回の乗除算で計算できる。
【0010】演算回数は以下の式で与えられる。 r0 (n)=a(n)+Σi=0 a(n)|Ti | (3) ただし Ti ={1,0,−1},n=2a(n)+Σi=0 a(n)Ti ・2i (4) 式(4) を満たすTi の組をT=〔Ta(n),Ta(n)-1,
…,T1 ,T0 〕と表す。Tは一意でなく、式(3) を
最小にする組合せが存在する。
…,T1 ,T0 〕と表す。Tは一意でなく、式(3) を
最小にする組合せが存在する。
【0011】
【実施例】この発明のべき乗計算は図1に示すように (i) 三値化変換回路11により、nを入力し、式
(1) を最小にする三値化二進表現Tを出力する。 (ii) 三値化二進計算回路12により,T,xを入力し
xn を出力する。
(1) を最小にする三値化二進表現Tを出力する。 (ii) 三値化二進計算回路12により,T,xを入力し
xn を出力する。
【0012】三値化変換回路11は、nの二進表現B′
から三値化二進表現Tを求めるものである。二進表現
B′は、式(2) から{Ba(n),Ba(n)-1, Ba(n)-2,
…,B 1 ,B0 }であり、また、三値化二進表現Tは式
(4) で与えられる〔Ta(n),Ta(n)-1,…,T1 ,T
0 〕である。ところで、j≦kのときΣi=j k 2i =2
k+1 −2j より、 2k+1 −2j −Σi=j k 2i =0(j≦k) (5) また、Bj =1,〜Bk =1,Bk+1 =0のとき(5) より、 Σi=j k Bi ・2i =Σi=j k Bi ・2i +(2k+1 −2j −Σi=j k 2i ) =Σi=j k (Bi −1)・2i +2k+1 −2j =Σi=j+1 k (Bi −1) ・2i +2k+1 −2j (Bj =1より) よって、 Σi=j k Bi ・2i =2k+1 +Σi=j+1 k (Bi −1)・2i −2j (Bj = 1,Bk+1 =0,j≦k) (6) が導かれる。
から三値化二進表現Tを求めるものである。二進表現
B′は、式(2) から{Ba(n),Ba(n)-1, Ba(n)-2,
…,B 1 ,B0 }であり、また、三値化二進表現Tは式
(4) で与えられる〔Ta(n),Ta(n)-1,…,T1 ,T
0 〕である。ところで、j≦kのときΣi=j k 2i =2
k+1 −2j より、 2k+1 −2j −Σi=j k 2i =0(j≦k) (5) また、Bj =1,〜Bk =1,Bk+1 =0のとき(5) より、 Σi=j k Bi ・2i =Σi=j k Bi ・2i +(2k+1 −2j −Σi=j k 2i ) =Σi=j k (Bi −1)・2i +2k+1 −2j =Σi=j+1 k (Bi −1) ・2i +2k+1 −2j (Bj =1より) よって、 Σi=j k Bi ・2i =2k+1 +Σi=j+1 k (Bi −1)・2i −2j (Bj = 1,Bk+1 =0,j≦k) (6) が導かれる。
【0013】また、式(6) の右辺=Σi=j k+1 Ti ・
2i とおいて2i の係数を比較することにより、右辺第
1項はBk =1,第3項はBj =−1であるから、以下
のように二進表現から三値化二進表現への変換が得られ
る。 Bj =1,Bk+1 =0のときTj =−1,Tk+1 =1,Ti =Bi −1 (j<i≦k) (7) なお演算回数は式(1) 、(3) より0でない桁の数に
よって決まることがわかる。したがって式(6) の両辺
の0でない桁の数に着目すると、左辺はΣi=j k Bi 、
右辺は2+Σi=j k (1−Bi ) となる。Bj =1であ
るから(i−B j ) =0となり、Σi=j+1 k(1-Bi) =Σ
i=j k(1-Bi) これより、二進表現(左辺) にくらべて三
値化二進表現(右辺) の項の数が等しいかまたは少なく
なるのは以下の場合である。
2i とおいて2i の係数を比較することにより、右辺第
1項はBk =1,第3項はBj =−1であるから、以下
のように二進表現から三値化二進表現への変換が得られ
る。 Bj =1,Bk+1 =0のときTj =−1,Tk+1 =1,Ti =Bi −1 (j<i≦k) (7) なお演算回数は式(1) 、(3) より0でない桁の数に
よって決まることがわかる。したがって式(6) の両辺
の0でない桁の数に着目すると、左辺はΣi=j k Bi 、
右辺は2+Σi=j k (1−Bi ) となる。Bj =1であ
るから(i−B j ) =0となり、Σi=j+1 k(1-Bi) =Σ
i=j k(1-Bi) これより、二進表現(左辺) にくらべて三
値化二進表現(右辺) の項の数が等しいかまたは少なく
なるのは以下の場合である。
【0014】 Σi=j k Bi −Σi=j k (1−Bi ) ≧2 (8) すなわちBj からBk までにおいて“1”の桁の数と
“0”の桁の数の差が3以上の場合には、右辺の三値化
二進数で計算する方が少ない演算回数となる。ただしk
=a(n)−1の場合には、Ta(n)=1となり三値化二
進表現Tの桁数がBの桁数より多くなるため追加の乗算
が必要となるため、(8) の条件にさらに場合分けが必
要である。(7) を適用して三値化二進表現に変換した
区間(jビット目からkビット目) を反転区間と呼び、
それ以外を非反転区間と呼ぶ。
“0”の桁の数の差が3以上の場合には、右辺の三値化
二進数で計算する方が少ない演算回数となる。ただしk
=a(n)−1の場合には、Ta(n)=1となり三値化二
進表現Tの桁数がBの桁数より多くなるため追加の乗算
が必要となるため、(8) の条件にさらに場合分けが必
要である。(7) を適用して三値化二進表現に変換した
区間(jビット目からkビット目) を反転区間と呼び、
それ以外を非反転区間と呼ぶ。
【0015】三値化変換回路11では、nの二進表現を
最下位ビットから順次読みだし、“1”の桁が現れた回
数から“0”の桁が現れた回数を引いた値(回数差) を
順次カウントする。以下の条件を満たし、かつカウント
の差が最大となるj,kで反転/非反転区間の切替を行
なっている。 (i) カウントの差(“1”の回数から“0”の回数を
引いた値) が3以上のとき非反転から反転に切替える。 (ii) k≠a(n)−1かつカウントの差が−2以下の
とき反転から非反転に切替える。 (iii)k=a(n)−1かつカウントの差が0以下のと
き反転から非反転に切替える。
最下位ビットから順次読みだし、“1”の桁が現れた回
数から“0”の桁が現れた回数を引いた値(回数差) を
順次カウントする。以下の条件を満たし、かつカウント
の差が最大となるj,kで反転/非反転区間の切替を行
なっている。 (i) カウントの差(“1”の回数から“0”の回数を
引いた値) が3以上のとき非反転から反転に切替える。 (ii) k≠a(n)−1かつカウントの差が−2以下の
とき反転から非反転に切替える。 (iii)k=a(n)−1かつカウントの差が0以下のと
き反転から非反転に切替える。
【0016】この手順の詳細を図2、3に示す。以下、
図2,3を参照して、三値化変換回路11の処理手順を
示す。nを入力し値をNに代入し、M,J,Y,X,
U,V,W,Zの値を0に初期化する(S 1 ,S2 )。
Nの値が1になるまで、以下の処理を繰り返す
(S3 )。Yは、Nの最下位ビットが1のとき1加算さ
れ、0のとき1減算される(S4 )。Nは繰り返し処理
中で一回左シフト(N=N/2)されるため、Nの最下
位ビットは繰り返し処理の先頭で順次B0 ,B1 ,
B2 ,…となる。Xは繰り返しごとに1加算され、Nを
1ビットづつ読みとる際のビット位置を表す(S5 )。
Mは非反転(M=0)または、反転(M=1)を表し、
Mの値により処理がわかれる(S6)。
図2,3を参照して、三値化変換回路11の処理手順を
示す。nを入力し値をNに代入し、M,J,Y,X,
U,V,W,Zの値を0に初期化する(S 1 ,S2 )。
Nの値が1になるまで、以下の処理を繰り返す
(S3 )。Yは、Nの最下位ビットが1のとき1加算さ
れ、0のとき1減算される(S4 )。Nは繰り返し処理
中で一回左シフト(N=N/2)されるため、Nの最下
位ビットは繰り返し処理の先頭で順次B0 ,B1 ,
B2 ,…となる。Xは繰り返しごとに1加算され、Nを
1ビットづつ読みとる際のビット位置を表す(S5 )。
Mは非反転(M=0)または、反転(M=1)を表し、
Mの値により処理がわかれる(S6)。
【0017】非反転中(M=0)のときはルーチンR1
が実行される。すなわち、Yの最小値をZに保存し、Y
が最小となるときのビット位置Xの値をWに保存する
(S8,S9 )。このWは、非反転区間から反転区間へ
切り替わるビット位置の候補となる。またY−Z≧3の
場合、すなわちYが最小値Zとなったビット位置Wから
現在のビット位置Xまでにおいて二進表現での1の桁の
数が0の桁の数より3以上多くなるとき(S7 )、ビッ
ト位置Wにおいて反転区間に切替え(M=1)、現在の
Yを反転区間の最大値としてVに保存し、このときのX
をUに保存する。同時にビット位置JからW−1までを
非反転で計算するようJをインクリメントしながら繰り
返しTJ を1にセットする(TJ =BJ )(S10,
S11,S12)。三値化二進数Tは下位ビットから順次決
定していくが、このインデックスがJである。つまり反
転区間とする必要がある所を探し、その前のビット位置
までを非反転区間とする。
が実行される。すなわち、Yの最小値をZに保存し、Y
が最小となるときのビット位置Xの値をWに保存する
(S8,S9 )。このWは、非反転区間から反転区間へ
切り替わるビット位置の候補となる。またY−Z≧3の
場合、すなわちYが最小値Zとなったビット位置Wから
現在のビット位置Xまでにおいて二進表現での1の桁の
数が0の桁の数より3以上多くなるとき(S7 )、ビッ
ト位置Wにおいて反転区間に切替え(M=1)、現在の
Yを反転区間の最大値としてVに保存し、このときのX
をUに保存する。同時にビット位置JからW−1までを
非反転で計算するようJをインクリメントしながら繰り
返しTJ を1にセットする(TJ =BJ )(S10,
S11,S12)。三値化二進数Tは下位ビットから順次決
定していくが、このインデックスがJである。つまり反
転区間とする必要がある所を探し、その前のビット位置
までを非反転区間とする。
【0018】同様に、反転中(M=1)のときはルーチ
ンR2 が実行される。すなわちYの最大値をVに保存
し、Yが最大となるときのビット位置Xの値をUに保存
する(S14,S15)。このUは、反転区間から非反転区
間へ切り替わるビット位置の候補となる。またV−Y≧
2の場合、すなわちYが最大値Vとなったビット位置U
から現在のビット位置Xまでにおいて二進表現での1の
桁の数が0の桁の数より2以上少なくなるとき、ビット
位置Uにおいて非反転区間に切替え(M=0)、現在の
Yを非反転区間の最小値としてZに保存し、このときの
XをWに保存する。同時にビット位置JからU−1まで
を非反転で計算するようJをインクリメントしながら繰
り返しTJ を−1にセットする(TJ =BJ −1)。以
上をNが1となるまで繰り返す(S13,S16,S17,S
18)。
ンR2 が実行される。すなわちYの最大値をVに保存
し、Yが最大となるときのビット位置Xの値をUに保存
する(S14,S15)。このUは、反転区間から非反転区
間へ切り替わるビット位置の候補となる。またV−Y≧
2の場合、すなわちYが最大値Vとなったビット位置U
から現在のビット位置Xまでにおいて二進表現での1の
桁の数が0の桁の数より2以上少なくなるとき、ビット
位置Uにおいて非反転区間に切替え(M=0)、現在の
Yを非反転区間の最小値としてZに保存し、このときの
XをWに保存する。同時にビット位置JからU−1まで
を非反転で計算するようJをインクリメントしながら繰
り返しTJ を−1にセットする(TJ =BJ −1)。以
上をNが1となるまで繰り返す(S13,S16,S17,S
18)。
【0019】このように逆のぼってTJ を決めているた
め、N=1となって繰り返しを終了したあとは図3に示
すようにして残りの部分のTJ を決定する。すなわち、
非反転中(M=0)のとき、JからX−1までを非反転
で計算するようJをインクリメントしながらTJ をセッ
トする(TJ =BJ −M=BJ )(S20,S21,
S22)。反転中(M=1)かつV≦Yのとき、JからX
−1までを反転で計算するようJをインクリメントしな
がらTJ をセットする(TJ =BJ −M=BJ −1)。
また、反転中(M+1)かつV>Yのとき、JからU−
1までを反転で計算するよう、Jをインクリメントしな
がらTJ をセットし(TJ =BJ −1)、さらにUから
X−1までを非反転で計算するよう、Jをインクリメン
トしながらTJをセットする(TJ =BJ )(S19,S
23〜S29)。そして最後にTを出力する(S30)。
め、N=1となって繰り返しを終了したあとは図3に示
すようにして残りの部分のTJ を決定する。すなわち、
非反転中(M=0)のとき、JからX−1までを非反転
で計算するようJをインクリメントしながらTJ をセッ
トする(TJ =BJ −M=BJ )(S20,S21,
S22)。反転中(M=1)かつV≦Yのとき、JからX
−1までを反転で計算するようJをインクリメントしな
がらTJ をセットする(TJ =BJ −M=BJ −1)。
また、反転中(M+1)かつV>Yのとき、JからU−
1までを反転で計算するよう、Jをインクリメントしな
がらTJ をセットし(TJ =BJ −1)、さらにUから
X−1までを非反転で計算するよう、Jをインクリメン
トしながらTJをセットする(TJ =BJ )(S19,S
23〜S29)。そして最後にTを出力する(S30)。
【0020】三値化二進計算回路12におけるべき乗計
算の処理の流れを図4に示す。Tとxとを入力し
(S31)、Xをxとし、Iを0とし、Y及びZをそれぞ
れ1とする(S32)。T〔I〕が+1の場合はY×Xを
Yとし(S33,S34)、T〔I〕が−1の場合はz×X
をZとし(S33,S35,S36)、Iがa(n)以下の間
はT〔I〕の値に無関係にX×XをXとすると共にI+
1をIとしてステップS33に戻る(S37,S38)。I<
a(n)でなくなると、X×Y/Zを演算して計算結果
とする(S39)。
算の処理の流れを図4に示す。Tとxとを入力し
(S31)、Xをxとし、Iを0とし、Y及びZをそれぞ
れ1とする(S32)。T〔I〕が+1の場合はY×Xを
Yとし(S33,S34)、T〔I〕が−1の場合はz×X
をZとし(S33,S35,S36)、Iがa(n)以下の間
はT〔I〕の値に無関係にX×XをXとすると共にI+
1をIとしてステップS33に戻る(S37,S38)。I<
a(n)でなくなると、X×Y/Zを演算して計算結果
とする(S39)。
【0021】この処理を実行する三値化二進計算回路1
2の具体例を図5に示すように三値化二進数Tを入力
し、Tレジスタ13に値を格納する。またxを入力しX
レジスタ14に格納する。以下、Tレジスタ13を1桁
ずつ左シフトしながら処理を繰り返す。Tレジスタ13
の最下位桁の内容によりスイッチ15,16が切替え制
御され、T0 =−1で乗算器17にZレジスタ18が接
続され、T0 =1で乗算器17にYレジスタ19が接続
される。乗算器21は、Tレジスタ13をシフトするご
とに、Xレジスタ14の値を2乗してXレジスタ14に
格納する。乗算器17は、T0 =1の場合、Yレジスタ
19の値にXレジスタ14の値を掛け込みその結果をY
レジスタ19に格納し、また、T0 =−1の場合にはZ
レジスタ18の値にXレジスタ14の値を掛け込み、そ
の結果をZレジスタ18に格納する。乗算器22は、上
記の繰り返し処理の終了後Xレジスタ14の内容とYレ
ジスタ19の内容とを乗ずる。乗算器23は、乗算器2
2の結果をZレジスタ18の内容で割算する。
2の具体例を図5に示すように三値化二進数Tを入力
し、Tレジスタ13に値を格納する。またxを入力しX
レジスタ14に格納する。以下、Tレジスタ13を1桁
ずつ左シフトしながら処理を繰り返す。Tレジスタ13
の最下位桁の内容によりスイッチ15,16が切替え制
御され、T0 =−1で乗算器17にZレジスタ18が接
続され、T0 =1で乗算器17にYレジスタ19が接続
される。乗算器21は、Tレジスタ13をシフトするご
とに、Xレジスタ14の値を2乗してXレジスタ14に
格納する。乗算器17は、T0 =1の場合、Yレジスタ
19の値にXレジスタ14の値を掛け込みその結果をY
レジスタ19に格納し、また、T0 =−1の場合にはZ
レジスタ18の値にXレジスタ14の値を掛け込み、そ
の結果をZレジスタ18に格納する。乗算器22は、上
記の繰り返し処理の終了後Xレジスタ14の内容とYレ
ジスタ19の内容とを乗ずる。乗算器23は、乗算器2
2の結果をZレジスタ18の内容で割算する。
【0022】xn のべき乗計算における乗算と除算と
を、それぞれ加算と減算とに置き換えることによりnx
の乗算を行うことができることが知られている。従って
図2、図3に示した三値化二進計算により、nの三値化
二進表現Tを求め、これを三値化二進計算によりnxを
計算するには、図6に示すようにすればよい。つまり図
4に示したべき乗計算の処理において、ステップS32で
Y=0、Z=0とし、ステップS34でY+X=Yとし、
ステップS36でZ+X=Zとし、ステップS37でX+X
=Xとし、ステップS38でX+Y−Zとすればよく、そ
の他は同一である。
を、それぞれ加算と減算とに置き換えることによりnx
の乗算を行うことができることが知られている。従って
図2、図3に示した三値化二進計算により、nの三値化
二進表現Tを求め、これを三値化二進計算によりnxを
計算するには、図6に示すようにすればよい。つまり図
4に示したべき乗計算の処理において、ステップS32で
Y=0、Z=0とし、ステップS34でY+X=Yとし、
ステップS36でZ+X=Zとし、ステップS37でX+X
=Xとし、ステップS38でX+Y−Zとすればよく、そ
の他は同一である。
【0023】従ってこの処理を実行する三値化二進計算
回路の構成例は図7に示すようになる。つまり図5に示
したべき乗計算回路において、乗算器17,21,22
の代りにそれぞれ加算器24,25,26が用いられ、
除算器23の代りに減算器27が用いられる。Zレジス
タ18及びYレジスタ19にはそれぞれ初期値として0
がセットされる。加算器24はT0 =−1でXレジスタ
14の値とZレジスタ18の値とを加算してその結果を
Zレジスタ18に格納し、T=1でXレジスタ14の値
とYレジスタ19の値とを加算し、その結果をYレジス
タ19に格納する。加算器25はXレジスタ14の値を
2倍にしてその結果をXレジスタ14に格納する。加算
器26はXレジスタ14の値とYレジスタ19の値とを
加算し、減算器27は加算器26の加算結果からZレジ
スタ18の値を減算し、その結果をnxとして出力す
る。
回路の構成例は図7に示すようになる。つまり図5に示
したべき乗計算回路において、乗算器17,21,22
の代りにそれぞれ加算器24,25,26が用いられ、
除算器23の代りに減算器27が用いられる。Zレジス
タ18及びYレジスタ19にはそれぞれ初期値として0
がセットされる。加算器24はT0 =−1でXレジスタ
14の値とZレジスタ18の値とを加算してその結果を
Zレジスタ18に格納し、T=1でXレジスタ14の値
とYレジスタ19の値とを加算し、その結果をYレジス
タ19に格納する。加算器25はXレジスタ14の値を
2倍にしてその結果をXレジスタ14に格納する。加算
器26はXレジスタ14の値とYレジスタ19の値とを
加算し、減算器27は加算器26の加算結果からZレジ
スタ18の値を減算し、その結果をnxとして出力す
る。
【0024】
【発明の効果】この発明の装置は以下の場合に特に有効
である。 (1)三値化変換のコストに較べて、乗除算(または加
減算)のコストが大きい場合 (2)指数nが大きい数の場合 (3)指数nが定数であり、予め三値化変換のみを行な
うことができる場合 適応型バイナリ法、Morain−Olivos法、バ
イナリ法の演算回数をそれぞれrO,rM,rB とするとa
(n)≦rO (n)≦rM (n)≦rB (n)が成り立
つ。
である。 (1)三値化変換のコストに較べて、乗除算(または加
減算)のコストが大きい場合 (2)指数nが大きい数の場合 (3)指数nが定数であり、予め三値化変換のみを行な
うことができる場合 適応型バイナリ法、Morain−Olivos法、バ
イナリ法の演算回数をそれぞれrO,rM,rB とするとa
(n)≦rO (n)≦rM (n)≦rB (n)が成り立
つ。
【0025】例として、n=47(101111)2 で
は、rO (47)=7,rM (47)=8,rB (4
7)=9である。このとき適応型バイナリ法ではT=
〔0,1,0,0,0,−1〕であり、Morain−
Olivos法の演算回数は適応型バイナリ法において
T=〔1,−1,0,0,0,−1〕とした場合と等価
である。
は、rO (47)=7,rM (47)=8,rB (4
7)=9である。このとき適応型バイナリ法ではT=
〔0,1,0,0,0,−1〕であり、Morain−
Olivos法の演算回数は適応型バイナリ法において
T=〔1,−1,0,0,0,−1〕とした場合と等価
である。
【0026】また、Morain−Olivosの文献
にある例n=6775=(110100111011
1)2 では、rO (6775)=17,rM (677
5)=18,rB (6775)=20である。適応型バ
イナリ法において、式(6)の適用は一区間のみでj=
0,k=6となっている。よってT=〔1,0,1,
0,1,0,0,0,−1,0,0,−1〕である。
にある例n=6775=(110100111011
1)2 では、rO (6775)=17,rM (677
5)=18,rB (6775)=20である。適応型バ
イナリ法において、式(6)の適用は一区間のみでj=
0,k=6となっている。よってT=〔1,0,1,
0,1,0,0,0,−1,0,0,−1〕である。
【0027】二進k+1桁のすべてのn(2k ≦n<2
k+1 )のうち演算回数が最も少なくなるのはn=2k の
場合であり、k=a(n)=rO (n)=rM (n)=
rB(n)である。またrB は二項分布となる。k=1
6の場合の演算回数は、バイナリ法では最小16,最大
32,平均24であり、適応型バイナリ法では最小1
6,最大25,平均で約21.77となる。適応型バイ
ナリ法ではバイナリ法に比べ最大44%(n=216−1
のとき)、平均で約9.3%の速度向上ができる。
k+1 )のうち演算回数が最も少なくなるのはn=2k の
場合であり、k=a(n)=rO (n)=rM (n)=
rB(n)である。またrB は二項分布となる。k=1
6の場合の演算回数は、バイナリ法では最小16,最大
32,平均24であり、適応型バイナリ法では最小1
6,最大25,平均で約21.77となる。適応型バイ
ナリ法ではバイナリ法に比べ最大44%(n=216−1
のとき)、平均で約9.3%の速度向上ができる。
【図1】この発明の基本構成を示すブロック図。
【図2】三値化変換回路11の処理の一例の前半を示す
流れ図。
流れ図。
【図3】図2の続きを示す流れ図。
【図4】この発明によるべき乗計算器における三値化二
進計算回路12の処理の一例を示す流れ図。
進計算回路12の処理の一例を示す流れ図。
【図5】図4に示した処理を実現するハードウェア構成
の例を示すブロック図。
の例を示すブロック図。
【図6】この発明による乗算器における三値化二進計算
回路12の処理の一例を示す流れ図。
回路12の処理の一例を示す流れ図。
【図7】図6に示した処理を実現するハードウェア構成
の例を示すブロック図。
の例を示すブロック図。
Claims (2)
- 【請求項1】 正の整数nおよびxからxn を計算する
べき乗計算器において、 nを入力してnの二進表現の各ビットを順次得る手段
と、そのビットの“0”と“1”の出現回数の差を順次
計数する手段と、この差の値により反転状態と非反転状
態との間の遷移を行なう手段と、その状態および“0”
と“1”の出現回数の差により1,0,−1の列である
三値化二進数Tを出力する手段とにより、n=2a(n)+
Σi=0 a(n)Ti ・2i 、(Ti ∈{−1,0,1},a
(n)=〔log2 n〕,ここで〔B〕はBの小数点以
下を切捨た整数を意味する)、となるTi の組T=〔T
a(n),…,T1,T0 〕のうち、Σi=0 a(n)|Ti |が最
小となる組合せを求める三値化変換回路と、 初期値としてxが格納されるXレジスタと、Xレジスタ
の値を各i回目ごとに2乗してXレジスタに格納する2
乗手段と、ともに初期値が1であるYレジスタ及びZレ
ジスタと、i回目の繰り返しで得られる上記Xレジスタ
の値(x2 ) iと、Ti に応じてYレジスタ(Ti =1
のとき) の値とを乗じてYレジスタに格納し、またはZ
レジスタ(Ti =−1のとき) の値と乗じてZレジスタ
に格納する乗算手段と、繰り返しの終了後にXレジスタ
の値とYレジスタの値とを乗じる手段と、その乗算結果
をZレジスタの値で除する手段とにより、xn =(x
2 )a(n)・Πi=0 a(n)((x2 )i )Tiとなるxn を計
算する三値化二進計算回路とを具備するべき乗計算器。 - 【請求項2】 正の整数nおよびxからn・xを計算す
る乗算器において、nを入力してnの二進表現の各ビッ
トを順次得る手段と、そのビットの“0”と“1”の出
現回数の差を順次計数する手段と、この差の値により反
転状態と非反転状態との間の遷移を行う手段と、その状
態および“0”と“1”の出現回数の差により1,0,
−1の列である三値化二進数Tを出力する手段とによ
り、n=2a(n)+Σi=0 a(n)Ti ・2i 、(Ti ∈{−
1,0,1},a(n)=〔log2 n〕) 、となるT
i の組T=〔Ta(n),…,T1 ,T0 〕のうち、Σi=0
a(n)|Ti |が最小となる組合せを求める三値化変換回
路と、 初期値としてxが格納されるXレジスタと、そのXレジ
スタの値を各i回目ごとに2倍してXレジスタに格納す
る2倍手段と、ともに初期値が0であるYレジスタ及び
Zレジスタと、i回目の繰り返しで得られる上記Xレジ
スタの値2i 、xと、Ti に応じてYレジスタ(Ti =
1のとき) の値とを加算してYレジスタに格納し、また
はZレジスタ(Ti =−1のとき) の値とを加算してZ
レジスタに格納する加算手段と、繰り返しの終了後にX
レジスタの値とYレジスタの値とを加算する手段と、そ
の加算結果からZレジスタの値を減ずる手段とにより、
n・x=2a(n)・x+Σi=0 a(n)Ti ・2i ・xとなる
n・xを計算する三値化二進計算回路とを具備する乗算
器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4671692A JP2575984B2 (ja) | 1992-03-04 | 1992-03-04 | べき乗計算器及び乗算器 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4671692A JP2575984B2 (ja) | 1992-03-04 | 1992-03-04 | べき乗計算器及び乗算器 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH05250147A JPH05250147A (ja) | 1993-09-28 |
| JP2575984B2 true JP2575984B2 (ja) | 1997-01-29 |
Family
ID=12755074
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4671692A Expired - Fee Related JP2575984B2 (ja) | 1992-03-04 | 1992-03-04 | べき乗計算器及び乗算器 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2575984B2 (ja) |
-
1992
- 1992-03-04 JP JP4671692A patent/JP2575984B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH05250147A (ja) | 1993-09-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5274707A (en) | Modular exponentiation and reduction device and method | |
| KR100498457B1 (ko) | 메모리를 감소시키는 개선된 룩업 테이블 압축방법 및이를 이용하여 압축된 룩업 테이블을 가지는 비선형 함수발생장치 및 그 발생방법 | |
| JPH08255073A (ja) | 数値フォーマット変換装置 | |
| JP2000163252A (ja) | 対数および逆対数に対する近似を実行するディジタル信号処理回路、システムおよび方法 | |
| JPH03171324A (ja) | オペランドの平方根を計算する回路及び方法 | |
| JP2585649B2 (ja) | 除算回路 | |
| US6847986B2 (en) | Divider | |
| JPH09325955A (ja) | 二乗和の平方根演算回路 | |
| JP2575984B2 (ja) | べき乗計算器及び乗算器 | |
| CN115544447A (zh) | 一种点积运算装置 | |
| JPH0462617B2 (ja) | ||
| US5289398A (en) | Small-sized low power consumption multiplication processing device with a rounding recording circuit for performing high speed iterative multiplication | |
| JP3660075B2 (ja) | 除算装置 | |
| Conway et al. | New CRT-based RNS converter using restricted moduli set | |
| US5886911A (en) | Fast calculation method and its hardware apparatus using a linear interpolation operation | |
| RU2136041C1 (ru) | Устройство для вычисления элементарных функций таблично-алгоритмическим методом | |
| JP2777265B2 (ja) | 高基数開平演算装置 | |
| KR0161485B1 (ko) | 산술 연산 장치를 이용한 부스 알고리즘 곱셈 연산 장치 | |
| JP3190826B2 (ja) | 積和演算装置 | |
| US5253194A (en) | Digital multiplier | |
| KR900006007B1 (ko) | 디지탈신호 처리회로 | |
| Parhami | Analysis of tabular methods for modular reduction | |
| Kobbelt | A fast dot-product algorithm with minimal rounding errors | |
| JP2753922B2 (ja) | 固定小数点除算方法 | |
| JP2699358B2 (ja) | デコーダ回路 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |