JP2822399B2 - 対数関数演算装置 - Google Patents
対数関数演算装置Info
- Publication number
- JP2822399B2 JP2822399B2 JP63271013A JP27101388A JP2822399B2 JP 2822399 B2 JP2822399 B2 JP 2822399B2 JP 63271013 A JP63271013 A JP 63271013A JP 27101388 A JP27101388 A JP 27101388A JP 2822399 B2 JP2822399 B2 JP 2822399B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- value
- stored
- logarithmic
- result
- 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
- 230000000295 complement effect Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012892 rational function Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
- G06F1/0307—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/4833—Logarithmic number system
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は計算機における対数関数演算装置に関するも
のである。
のである。
対数関数は,科学技術計算を取り扱う計算機にとっ
て,是非とも備えなければならない機能の一つである。
て,是非とも備えなければならない機能の一つである。
この関数を演算する方式としてはテイラー級数展開 loge(1+y)=y−y2/2+y3/3−…+yn/n …(1) や,連分数展開や,チェビシェフ級数展開などによる有
理関数近似によって求める方式がある。しかし,いずれ
の方式も,多くの乗算あるいは除算を必要とするため,
演算時間が長くなり,しかも演算精度も満足すべきもの
が得られないという欠点があった。
理関数近似によって求める方式がある。しかし,いずれ
の方式も,多くの乗算あるいは除算を必要とするため,
演算時間が長くなり,しかも演算精度も満足すべきもの
が得られないという欠点があった。
また,マイクロプログラム制御の計算機に適した対数
関数演算方式としてSTL(Sequential Table Look up)
がある(一松信著:初等関数の数値計算,教育出版)。
STLは,加算,減算及び右シフトによって演算できるた
め,高速な乗算器を持たない計算機では有効である。
関数演算方式としてSTL(Sequential Table Look up)
がある(一松信著:初等関数の数値計算,教育出版)。
STLは,加算,減算及び右シフトによって演算できるた
め,高速な乗算器を持たない計算機では有効である。
ここでSTLの演算の原理及び算法について一般的な説
明をする。
明をする。
はじめに2進法でn桁の精度で対数関数loge(1+
y)を求めるためのSTLの演算原理を以下に示す。入力
数yは定数γkと数列{ak}を用いると,以下のように
表わせる。
y)を求めるためのSTLの演算原理を以下に示す。入力
数yは定数γkと数列{ak}を用いると,以下のように
表わせる。
これより, loge(1+y)=a0×γ0+a1×γ1+…an-1×γ
n−1+ε (4) ただし, γk=loge(1+2-k) (5) となる。
n−1+ε (4) ただし, γk=loge(1+2-k) (5) となる。
このとき,yから{ak}を求めることを疑似除算,
{ak}からloge(1+y)を求めることを疑似乗算とい
う。
{ak}からloge(1+y)を求めることを疑似乗算とい
う。
次にSTL法によりloge(1+y/x)を求める場合につい
て説明する。
て説明する。
〔1〕y0=y(1/2≦y<1),x0=1,z0=0を初期値
とする。
とする。
〔2〕k=0,1,2,…,n−1に対して,〔3〕のループを
反復する。
反復する。
〔3〕w=yk−xk (6) w≧0ならば ak=+1 (7) yk+1=W (8) xk+1=xk+xk×2-k (9) zk+1=zk+γk (10) W<0ならば ak=0 (11) yk+1=yk (12) xk+1=xk (13) zk+1=zk (14) ただし,γkは(5)式を満たす定数である。
〔4〕loge(1+y)=zkが得られる。
従来例 第2図は従来のSTLの算法による対数関数演算装置
で,第3図のフローチャートに示す手順で行われる。
で,第3図のフローチャートに示す手順で行われる。
第2図において,207,208,209は3種の2進数の変数
xk,yk,zkを格納するレジスタ,203は値を任意桁だけ右
シフトできるバレル・シフタ,202は(5)式の定数γk
を発生するn語のROM,204は入力Aの内容と入力Bの内
容を加算または減算する加減算器である。206はSTLのル
ープ回数を制御するカウンタで,201はバレル・シフタ20
3のシフト桁数の指定と,ROM202の定数番号kの指定を行
なうカウンタである。
xk,yk,zkを格納するレジスタ,203は値を任意桁だけ右
シフトできるバレル・シフタ,202は(5)式の定数γk
を発生するn語のROM,204は入力Aの内容と入力Bの内
容を加算または減算する加減算器である。206はSTLのル
ープ回数を制御するカウンタで,201はバレル・シフタ20
3のシフト桁数の指定と,ROM202の定数番号kの指定を行
なうカウンタである。
次に,第2図の動作を第3図のSTLの算法に基づいて
説明する。
説明する。
〔1〕レジスタ207,208,209にx0,y0,z0(301,302,30
3)を,カウンタ201,206に0,n(305,304)を初期値とし
て与える。
3)を,カウンタ201,206に0,n(305,304)を初期値とし
て与える。
〔2〕カウンタ206の値がnから1までのnステップの
間,次のステップ〔3〕を繰り返す。
間,次のステップ〔3〕を繰り返す。
〔3〕レジスタ208には(8),(12)式の変数ykが,
レジスタ207には(9),(13)式の変数xkが,レジス
タ209には(10),(14)式のzkが,レジスタ205には
(6)式の変数wが,カウンタ201には変数kが,カウ
ンタ206には変数nが格納されている。
レジスタ207には(9),(13)式の変数xkが,レジス
タ209には(10),(14)式のzkが,レジスタ205には
(6)式の変数wが,カウンタ201には変数kが,カウ
ンタ206には変数nが格納されている。
バレル・シフタ203はバスから出力される値を,カウ
ンタ201が示す数だけ右シフトすることにより,2-k倍す
る。
ンタ201が示す数だけ右シフトすることにより,2-k倍す
る。
レジスタ208からyを入力Aに転送し,レジスタ207か
らxを入力Bに転送し,加減算器204で減算し,演算結
果をレジスタ205に転送する(306)。
らxを入力Bに転送し,加減算器204で減算し,演算結
果をレジスタ205に転送する(306)。
もし,レジスタ205の符号桁の値が正のときは(30
7),以下の演算を行う。まず,前記演算結果であるレ
ジスタ205の内容をレジスタ208に転送する(309)。次
に,レジスタ207からxを入力Aに転送し,xをバレル・
シフタ203でカウンタ201が示す値だけ右シフトしたもの
を入力Bに転送し,加減算器204で加算し,演算結果を
レジスタ207に転送する(308)。次に,レジスタ209か
らzを入力Aに転送し,カウンタ201が示すROM202の値
を入力Bに転送し,加減算器204で加算し,演算結果を
レジスタ209に転送する(310)。
7),以下の演算を行う。まず,前記演算結果であるレ
ジスタ205の内容をレジスタ208に転送する(309)。次
に,レジスタ207からxを入力Aに転送し,xをバレル・
シフタ203でカウンタ201が示す値だけ右シフトしたもの
を入力Bに転送し,加減算器204で加算し,演算結果を
レジスタ207に転送する(308)。次に,レジスタ209か
らzを入力Aに転送し,カウンタ201が示すROM202の値
を入力Bに転送し,加減算器204で加算し,演算結果を
レジスタ209に転送する(310)。
もし,レジスタ205の符号桁の値が負のときは(30
7),何もしない(311,312,313)。
7),何もしない(311,312,313)。
〔4〕上記ステップをn回実行した後(316),レジス
タ209の内容はxn=loge(1+y/x)となる(317)。
タ209の内容はxn=loge(1+y/x)となる(317)。
従来は,以上の手順をマイクロプログラムで行ってい
た。このとき,上記ステップ〔3〕の1回の処理にαク
ロックかかるとすると,全体の演算処理にはn×αクロ
ック要し,膨大な時間がかかっていた。
た。このとき,上記ステップ〔3〕の1回の処理にαク
ロックかかるとすると,全体の演算処理にはn×αクロ
ック要し,膨大な時間がかかっていた。
上述した従来の対数関数演算装置には以下の問題点が
ある。
ある。
問題点1:演算結果の精度が良くない。
(5)式のγkはkが増大するに従って小さくなるた
め,γkの有効数字が減少し,LSB付近に丸め誤差が蓄積
される。
め,γkの有効数字が減少し,LSB付近に丸め誤差が蓄積
される。
また,式(8),(9),(10),(12),(13),
(14)は固定小数点数での算法であるため,x,loge(1
+x)が浮動小数点数の場合,xを固定小数点数に変換し
てからloge(1+x)を求め,浮動小数点数に変換しな
ければならない。このとき,xが小さい数である場合,固
定小数点数への変換過程で有効数字が大幅に減少してし
まう。
(14)は固定小数点数での算法であるため,x,loge(1
+x)が浮動小数点数の場合,xを固定小数点数に変換し
てからloge(1+x)を求め,浮動小数点数に変換しな
ければならない。このとき,xが小さい数である場合,固
定小数点数への変換過程で有効数字が大幅に減少してし
まう。
問題点2:実行時間が長い。
STLの処理(式(6),(8),(9),(10),(1
2),(13),(14))をすべてマイクロプログラムで
行っていたため,STL1回の処理にαクロックかかるとす
ると,全体ではn×αクロック要し,膨大な時間がかか
ってしまう。
2),(13),(14))をすべてマイクロプログラムで
行っていたため,STL1回の処理にαクロックかかるとす
ると,全体ではn×αクロック要し,膨大な時間がかか
ってしまう。
本発明は従来のもののこのような課題を解決しようと
するもので,精度の良い演算を短時間で行うことのでき
る対数関数演算装置を提供するものである。
するもので,精度の良い演算を短時間で行うことのでき
る対数関数演算装置を提供するものである。
本発明は、2つの2進浮動小数点数xとyを入力し
て、x=2−i×X(1≦X<2,iは整数)、y=2−
j×Y(1≦Y<2,jは整数)となる指数部の補数i=
j−1を演算する対数部演算器(103)と、 (A)xとyの仮数部を各々記憶する第1と第2のレ
ジスタ(110,115)と、前記第2のレジスタに記憶する
仮数から前記第1のレジスタに記憶する仮数を減算する
第2の加減算器(113)と、前記減算結果を前記第2の
レジスタに書き込み、前記第2のレジスタの符号桁の反
転値を入力するFILO記憶手段(116)と、前記第1のレ
ジスタに記憶する仮数を前記対数演算器を示す値だけシ
フトするシフト手段(105)と、前記第2のレジスタの
符号桁が正ならば第1のレジスタの内容と前記シフト結
果の内容を加算する第1の加減算器(108)と、前記第
1の加減算器の演算結果を第1のレジスタに書き込み、
前記第2の符号桁が負ならば第2のレジスタに記憶する
Ykの値を2倍して第2のレジスタに書き込み、(B) 前記対数部演算器から出力値kをiから1ずつm−1
までインクリメントしながら、前記(A)から(B)ま
でを反復し、前記第2のレジスタに記憶した値Ymを第1
のレジスタに記憶した値Xmで除算する除算器(117)
と、前記除算結果を疑似乗算の初期値Ymとして第1のレ
ジスタに書き込み、 (C)第1のレジスタに記憶した値Ykの値をaとし、
前記対数部演算器が示す定数発生器(104)の値をbと
し、FILO記憶手段からポップされた値が正ならば、aと
bとを第1の加減算器で加算し、該加算結果を1/2倍し
て第1のレジスタに書き込み、前記ポップされた値が負
ならば、aを1/2倍して第1のレジスタに書き込み、
(D) 前記対数部演算器103の出力値kをk=mからj+1
まで1ずつデクリメントしながら前記(C)から(D)
までを反復し、第1のレジスタにlog(1+y/x)を得る
ことを特徴とする対数関数演算装置が得られる。
て、x=2−i×X(1≦X<2,iは整数)、y=2−
j×Y(1≦Y<2,jは整数)となる指数部の補数i=
j−1を演算する対数部演算器(103)と、 (A)xとyの仮数部を各々記憶する第1と第2のレ
ジスタ(110,115)と、前記第2のレジスタに記憶する
仮数から前記第1のレジスタに記憶する仮数を減算する
第2の加減算器(113)と、前記減算結果を前記第2の
レジスタに書き込み、前記第2のレジスタの符号桁の反
転値を入力するFILO記憶手段(116)と、前記第1のレ
ジスタに記憶する仮数を前記対数演算器を示す値だけシ
フトするシフト手段(105)と、前記第2のレジスタの
符号桁が正ならば第1のレジスタの内容と前記シフト結
果の内容を加算する第1の加減算器(108)と、前記第
1の加減算器の演算結果を第1のレジスタに書き込み、
前記第2の符号桁が負ならば第2のレジスタに記憶する
Ykの値を2倍して第2のレジスタに書き込み、(B) 前記対数部演算器から出力値kをiから1ずつm−1
までインクリメントしながら、前記(A)から(B)ま
でを反復し、前記第2のレジスタに記憶した値Ymを第1
のレジスタに記憶した値Xmで除算する除算器(117)
と、前記除算結果を疑似乗算の初期値Ymとして第1のレ
ジスタに書き込み、 (C)第1のレジスタに記憶した値Ykの値をaとし、
前記対数部演算器が示す定数発生器(104)の値をbと
し、FILO記憶手段からポップされた値が正ならば、aと
bとを第1の加減算器で加算し、該加算結果を1/2倍し
て第1のレジスタに書き込み、前記ポップされた値が負
ならば、aを1/2倍して第1のレジスタに書き込み、
(D) 前記対数部演算器103の出力値kをk=mからj+1
まで1ずつデクリメントしながら前記(C)から(D)
までを反復し、第1のレジスタにlog(1+y/x)を得る
ことを特徴とする対数関数演算装置が得られる。
すなわち従来の対数関数演算装置は,1個のバレル・シ
フタと1個の加減算器を用いて,STLのループの処理をマ
イクロプログラムで求めるのに対し,本発明は1個のバ
レル・シフタと2個の加減算器とFILO方式のスタックと
除算器を用いて,疑似除算と疑似乗算を区別して行うこ
とにより,従来例より高速で,かつ従来例より高い精度
で,loge(1+y/x)を求めるものである。
フタと1個の加減算器を用いて,STLのループの処理をマ
イクロプログラムで求めるのに対し,本発明は1個のバ
レル・シフタと2個の加減算器とFILO方式のスタックと
除算器を用いて,疑似除算と疑似乗算を区別して行うこ
とにより,従来例より高速で,かつ従来例より高い精度
で,loge(1+y/x)を求めるものである。
はじめに数式を用いて,本発明の対数関数の演算原理
を説明する。
を説明する。
本発明の演算原理はSTLと同様であり,本発明の算法
はSTL算法の変形と言える。
はSTL算法の変形と言える。
STLでは疑似除算と疑似乗算を同時に実行している
が,本発明ではまず疑似除算を行い,その後,疑似乗算
を行う。
が,本発明ではまず疑似除算を行い,その後,疑似乗算
を行う。
STLでは(2)式のεを無視し,Y0=1を初期値とし
て疑似乗算を行っていたため,2進n桁の精度を得るには
nステップの演算が必要である。ここで,(2)式でε
<22であるため,2進数で2n桁の精度で求めるならば
(1)式よりloge(1+ε)≒εと近似できることを利
用し,これを初期値として疑似乗算を行う。
て疑似乗算を行っていたため,2進n桁の精度を得るには
nステップの演算が必要である。ここで,(2)式でε
<22であるため,2進数で2n桁の精度で求めるならば
(1)式よりloge(1+ε)≒εと近似できることを利
用し,これを初期値として疑似乗算を行う。
そのため,疑似除算,疑似乗算合わせてのステップ数
はSTL同様で約nステップ必要である。
はSTL同様で約nステップ必要である。
本発明では,精度良く使用するために,疑似除算で1
ステップごとにXkを1桁下位の桁にずらしながら演算す
る。また,疑似乗算は疑似除算とは逆の順序で,Ykを1
桁上位の桁にずらしながら行う。
ステップごとにXkを1桁下位の桁にずらしながら演算す
る。また,疑似乗算は疑似除算とは逆の順序で,Ykを1
桁上位の桁にずらしながら行う。
また,疑似乗算では,疑似除算の剰余Ymと, を利用し,初期値をYm=Ym/Xmとし,k=mからk=i+
1まで反復される。
1まで反復される。
Yk-1=Yk+ak (15) このように,xとyが浮動小数点数でありy/x≪1のと
きは,loge(1+y/x)≒y/xであるため,疑似除算のス
テップを途中から始め,疑似乗算のステップを途中で終
わらせる。その結果,桁合わせによる有効数字の大幅減
少を防ぎ,また性能も向上できる。
きは,loge(1+y/x)≒y/xであるため,疑似除算のス
テップを途中から始め,疑似乗算のステップを途中で終
わらせる。その結果,桁合わせによる有効数字の大幅減
少を防ぎ,また性能も向上できる。
算法 次に演算の算法について説明する演算結果の精度を2
進数でn(=2m)桁とする。
進数でn(=2m)桁とする。
〔1〕loge(1+y/x)を求めるに当り,xとy(0≦y
<x+∞)を入力する。
<x+∞)を入力する。
〔2〕x=2-i×X(1≦X<2,iは整),Y=2-j×Y
(1≦Y<2,jは整数)としてi,j,X,Yを決定し,xi=X,
yj=Y,i=j−iを初期値とする。
(1≦Y<2,jは整数)としてi,j,X,Yを決定し,xi=X,
yj=Y,i=j−iを初期値とする。
〔3〕k=i,i+1,i+2,…,m−1に対して,〔4〕を反
復する(疑似除算を行う)。
復する(疑似除算を行う)。
〔4〕W=2Yk−Xk (16) w≧0ならばak=+1 (17) Yk+1=Xk+2-k×Xk (18) 2Yk+1=2W (19) W<0ならばak=0 (20) Xk+1=Xk (21) 2Yk+1=4×Yk (22) 〔5〕Ym=Ym/Xmを疑似乗算の初期値とする。 (23) 〔6〕k=m,m−1,m−2,…,i+1に対して,〔7〕を反
復する(疑似乗算を行う)。
復する(疑似乗算を行う)。
〔7〕ak=+1ならば,Yk+1=(Yk+Γk)/2 (24) ak=0ならば,Yk+1=Yk/2 (25) 〔8〕loge(1+y/x)=Yiが得られる。
次に,本発明を図面を参照して説明する。
第1図は本発明に従って対数関数loge(1+y/x)を
演算する演算装置の第1の実施例の構成図である。
演算する演算装置の第1の実施例の構成図である。
第1図において,110,115は2種の変数x,yを格納する
レジスタ,108は式(16),(18),(21),(23)で加
算または転送を行う加減算器,105はレジスタ110の内容
を任意の桁数だけ右シフトできるパレル・シフタ,109は
加減算器108の出力を1/2倍してレジスタ110に出力する
シフタ,114は加減算器113の出力を2倍してレジスタ115
に出力するシフタである。104は(33)式の定数Γkを
格納するm語の定数発生器,103はバレル・シフタ105の
シフト数およびROM104のアドレスを制御し,対数部の演
算を行う対数部演算器,116は数例{ak}を蓄積でき,か
つ加減算器108で行う演算が加算か転送かを制御する
か,または,加減算器113で行う演算が加算か転送か減
算かを制御するためのFILO方式のスタックである。101
は入出力データおよび演算の中間結果を転送するための
バス,102はレジスタ110の値を転送するためのバスであ
る。
レジスタ,108は式(16),(18),(21),(23)で加
算または転送を行う加減算器,105はレジスタ110の内容
を任意の桁数だけ右シフトできるパレル・シフタ,109は
加減算器108の出力を1/2倍してレジスタ110に出力する
シフタ,114は加減算器113の出力を2倍してレジスタ115
に出力するシフタである。104は(33)式の定数Γkを
格納するm語の定数発生器,103はバレル・シフタ105の
シフト数およびROM104のアドレスを制御し,対数部の演
算を行う対数部演算器,116は数例{ak}を蓄積でき,か
つ加減算器108で行う演算が加算か転送かを制御する
か,または,加減算器113で行う演算が加算か転送か減
算かを制御するためのFILO方式のスタックである。101
は入出力データおよび演算の中間結果を転送するための
バス,102はレジスタ110の値を転送するためのバスであ
る。
次に,第1図の動作を説明する。
〔1〕2進浮動小数点数で表現されたx,y(0≦y<x
<+∞)の値をバス101から入力し、x=2-i×X(1≦
X<2,iは整数),y=2-j×Y(1≦Y<2,jは整数)と
なるような指数部の補数i=j−iを対数部演算器103
で求める。
<+∞)の値をバス101から入力し、x=2-i×X(1≦
X<2,iは整数),y=2-j×Y(1≦Y<2,jは整数)と
なるような指数部の補数i=j−iを対数部演算器103
で求める。
〔2〕xの仮数部Xをレジスタ110に,yの仮数部Yをレ
ジスタ115に入力する。
ジスタ115に入力する。
〔3〕対数部演算器103からの出力値kをi,i+1,i+2,
…,m−1とインクリメントしながら,〔4〕を反復す
る。
…,m−1とインクリメントしながら,〔4〕を反復す
る。
〔4〕まず,レジスタ110のXkの値をバス102を介してレ
ジスタ111の入力XCに転送し,レジスタ115のYkの値をバ
ス101を介してレジスタ112の入力Dに転送する。加減算
器113は入力Dから入力Cを減算し,レジスタ115に書き
込む。
ジスタ111の入力XCに転送し,レジスタ115のYkの値をバ
ス101を介してレジスタ112の入力Dに転送する。加減算
器113は入力Dから入力Cを減算し,レジスタ115に書き
込む。
次に,レジスタ115の符号桁の反転値をスタック116に
入力(プッシュ)する。
入力(プッシュ)する。
次に,レジスタ110の内容をバス102を介してレジスタ
106に転送する。また,レジスタ110の内容をバス101を
介してバレル・シフタ105に転送し,対数部演算器103の
示す値だけシフトしたものをレジスタ107に転送する。
106に転送する。また,レジスタ110の内容をバス101を
介してバレル・シフタ105に転送し,対数部演算器103の
示す値だけシフトしたものをレジスタ107に転送する。
もし,レジスタ115の符号桁が正ならば,レジスタ106
の内容とレジスタ107の内容を加算し,レジスタ110に転
送する。
の内容とレジスタ107の内容を加算し,レジスタ110に転
送する。
もし,レジスタ115の符号桁が負ならば,レジスタ112
の内容と0を加算したものをシフタ114で2倍にしてレ
ジスタ115に転送する。
の内容と0を加算したものをシフタ114で2倍にしてレ
ジスタ115に転送する。
〔5〕レジスタ115のYmをレジスタ110のXmで,除算器11
7を使って除算した値(Ym=Ym/Xm)を疑似乗算の初期
値Ymとして,レジスタ110に転送する。そして,対数部
演算器103の出力値kをk=m,m−1,m−2,…,i+1とデ
クリメントしながら,〔6〕を反復する。
7を使って除算した値(Ym=Ym/Xm)を疑似乗算の初期
値Ymとして,レジスタ110に転送する。そして,対数部
演算器103の出力値kをk=m,m−1,m−2,…,i+1とデ
クリメントしながら,〔6〕を反復する。
〔6〕レジスタ110のYkの値をバス101を介してレジスタ
106の入力Aに転送し,同時に,対数部演算器103が示す
定数発生器104の内容をレジスタ107の入力Bに転送す
る。
106の入力Aに転送し,同時に,対数部演算器103が示す
定数発生器104の内容をレジスタ107の入力Bに転送す
る。
スタック116からポップされた値が正ならば,加減算
器108は入力Aと入力Bを加算し,シフタ109で1/2倍し
てからレジスタ110に書き込む。
器108は入力Aと入力Bを加算し,シフタ109で1/2倍し
てからレジスタ110に書き込む。
スタック116からポップされた値が負ならば,加減算
器108は入力Aと0を加算し,シフタ109で1/2倍してか
らレジスタ110に書き込む。
器108は入力Aと0を加算し,シフタ109で1/2倍してか
らレジスタ110に書き込む。
〔7〕レジスタ110にloge(1+y/x)の仮数部が得られ
る。
る。
このように,ステップ〔4〕と〔6〕の演算は1クロ
ックで処理でき,全体の処理時間は2(m−i)≦nク
ロック要する。
ックで処理でき,全体の処理時間は2(m−i)≦nク
ロック要する。
以上述べたように本実施例では,バレル・シフタ1個
と加減算器2個とスタックと除算器を用いて,高速かつ
高精度にloge(1+y/x)を演算できる。
と加減算器2個とスタックと除算器を用いて,高速かつ
高精度にloge(1+y/x)を演算できる。
上述した第1の実施例では浮動小数点を扱うが,同一
のハードウェアで固定小数点数も扱える。変数iをi=
0に固定すればよい。
のハードウェアで固定小数点数も扱える。変数iをi=
0に固定すればよい。
算法は,次のように変形できる。
〔1〕Xi=x,Yi=y(0≦y<x<+∞)を初期値とす
る。(Xi,Yiを固定小数点数にする) 〔2〕変数iをi=0とする。
る。(Xi,Yiを固定小数点数にする) 〔2〕変数iをi=0とする。
〔3〜6〕(浮動小数点の算法と同様) 〔7〕loge(1+y/x)が得られる。
以上説明したように,本発明による対数関数演算装置
は1個のパラレル・シフタと,2個の加減算器と,FILO方
式のスタックと,除算器を用いて,疑似除算と疑似乗算
を区別して行うことにより,次の2つの効果を有する。
は1個のパラレル・シフタと,2個の加減算器と,FILO方
式のスタックと,除算器を用いて,疑似除算と疑似乗算
を区別して行うことにより,次の2つの効果を有する。
〔効果1〕演算結果の精度が良い。すなわち,本発明の
算法は,常に有効数字が最大になるように桁合わせを行
いながら演算するために,演算精度が良く,また,x,y,l
oge(1+y/x)が浮動小数点数の場合,y/xが小さい数で
あっても,有効数字が減少しない。
算法は,常に有効数字が最大になるように桁合わせを行
いながら演算するために,演算精度が良く,また,x,y,l
oge(1+y/x)が浮動小数点数の場合,y/xが小さい数で
あっても,有効数字が減少しない。
〔効果2〕演算時間を短縮できる。すなわち,本発明の
演算装置はSTLの処理をハードウェアで実現している。
このため,マイクロプログラムで制御するのに比べ,1/
(STLの1回のループにかかった時間)の時間で演算が
できる。
演算装置はSTLの処理をハードウェアで実現している。
このため,マイクロプログラムで制御するのに比べ,1/
(STLの1回のループにかかった時間)の時間で演算が
できる。
第1図は本発明の一実施例の構成図,第2図は従来のも
のの一例の構成図,第3図は第2図に示すもののフロー
チャートである。 記号の説明:103……対数部演算器,104……定数発生器,1
05……バレル・シフタ,106,107,110,111,112,115……レ
ジスタ,109,114……シフタ,116……スタック,117……除
算器。
のの一例の構成図,第3図は第2図に示すもののフロー
チャートである。 記号の説明:103……対数部演算器,104……定数発生器,1
05……バレル・シフタ,106,107,110,111,112,115……レ
ジスタ,109,114……シフタ,116……スタック,117……除
算器。
Claims (1)
- 【請求項1】2つの2進浮動小数点数xとyを入力し
て、x=2−i×X(1≦X<2,iは整数)、y=2−
j×Y(1≦Y<2,jは整数)となる指数部の補数i=
j−1を演算する対数部演算器と、 (A)xとyの仮数部を各々記憶する第1と第2のレジ
スタと、前記第2のレジスタに記憶する仮数から前記第
1のレジスタに記憶する仮数を減算する第2の加減算器
と、前記減算結果を前記第2のレジスタに書き込み、前
記第2のレジスタの符号桁の反転値を入力するFILO記憶
手段と、前記第1のレジスタに記憶する仮数を前記対数
演算器の示す値だけシフトするシフト手段と、前記第2
のレジスタの符号桁が正ならば第1のレジスタの内容と
前記シフト結果の内容を加算する第1の加減算器と、前
記第1の加減算器の演算結果を第1のレジスタに書き込
み、前記第2の符号桁が負ならば第2のレジスタに記憶
するYkの値を2倍して第2のレジスタに書き込み、
(B) 前記対数部演算器から出力値kをiから1ずつm−1ま
でインクリメントしながら、前記(A)から(B)まで
を反復し、前記第2のレジスタに記憶した値Ymを第1の
レジスタに記憶した値Xmで除算する除算器と、前記除算
結果を疑似乗算の初期値Ymとして第1のレジスタに書き
込み、 (C)第1のレジスタに記憶した値Ykの値をaとし、前
記対数部演算器が示す定数発生器の値をbとし、FILO記
憶手段からポップされた値が正ならば、aとbとを第1
の加減算器で加算し、該加算結果を1/2倍して第1のレ
ジスタに書き込み、前記ポップされた値が負ならば、a
を1/2倍して第1のレジスタに書き込み、(D) 前記対数部演算器103の出力値kをk=mからj+1ま
で1ずつでデクリメントしながら前記(C)から(D)
までを反復し、第1のレジスタにlog(1+y/x)を得る
ことを特徴とする対数関数演算装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63271013A JP2822399B2 (ja) | 1988-10-28 | 1988-10-28 | 対数関数演算装置 |
EP89120128A EP0366155B1 (en) | 1988-10-28 | 1989-10-30 | Logarithmic function arithmetic unit including means for separately processing pseudo division and multiplication |
US07/428,301 US5041999A (en) | 1988-10-28 | 1989-10-30 | Logarithmic function arithmetic unit including means for separately processing pseudo division and multiplication |
DE68926563T DE68926563T2 (de) | 1988-10-28 | 1989-10-30 | Arithmetische Einheit für logarithmische Funktionen, versehen mit Mitteln zur gesonderten Verarbeitung von Pseudodivision und -multiplikation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63271013A JP2822399B2 (ja) | 1988-10-28 | 1988-10-28 | 対数関数演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH02118725A JPH02118725A (ja) | 1990-05-07 |
JP2822399B2 true JP2822399B2 (ja) | 1998-11-11 |
Family
ID=17494194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63271013A Expired - Fee Related JP2822399B2 (ja) | 1988-10-28 | 1988-10-28 | 対数関数演算装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5041999A (ja) |
EP (1) | EP0366155B1 (ja) |
JP (1) | JP2822399B2 (ja) |
DE (1) | DE68926563T2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6788342B1 (en) | 1992-01-27 | 2004-09-07 | Mitsubishi Denki Kabushiki Kaisha | Color video camera for generating a luminance signal with unattenuated harmonics |
EP0554035B1 (en) * | 1992-01-27 | 2001-10-17 | Mitsubishi Denki Kabushiki Kaisha | Solid state color video camera |
US6055553A (en) * | 1997-02-25 | 2000-04-25 | Kantabutra; Vitit | Apparatus for computing exponential and trigonometric functions |
US6567832B1 (en) * | 1999-03-15 | 2003-05-20 | Matsushita Electric Industrial Co., Ltd. | Device, method, and storage medium for exponentiation and elliptic curve exponentiation |
US6976043B2 (en) * | 2001-07-30 | 2005-12-13 | Ati Technologies Inc. | Technique for approximating functions based on lagrange polynomials |
US7509363B2 (en) * | 2001-07-30 | 2009-03-24 | Ati Technologies Ulc | Method and system for approximating sine and cosine functions |
US7606850B2 (en) * | 2005-03-30 | 2009-10-20 | Lockheed Martin Corporation | Method and apparatus for providing a base-2 logarithm approximation to a binary number |
JP4895544B2 (ja) * | 2005-07-15 | 2012-03-14 | 株式会社Shoei | フルフェイス型ヘルメット |
US8510360B2 (en) * | 2010-06-04 | 2013-08-13 | International Business Machines Corporation | Calculating large precision common logarithms |
US10838718B2 (en) * | 2017-09-28 | 2020-11-17 | Fujitsu Limited | Processing device, arithmetic unit, and control method of processing device |
JP7006808B2 (ja) * | 2018-10-31 | 2022-01-24 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4089060A (en) * | 1976-10-15 | 1978-05-09 | Mitchell Donald K | Digital logarithmic apparatus |
JPS6051733B2 (ja) * | 1977-11-19 | 1985-11-15 | 日本電気株式会社 | 指数関数演算装置 |
-
1988
- 1988-10-28 JP JP63271013A patent/JP2822399B2/ja not_active Expired - Fee Related
-
1989
- 1989-10-30 DE DE68926563T patent/DE68926563T2/de not_active Expired - Fee Related
- 1989-10-30 US US07/428,301 patent/US5041999A/en not_active Expired - Lifetime
- 1989-10-30 EP EP89120128A patent/EP0366155B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0366155B1 (en) | 1996-05-29 |
JPH02118725A (ja) | 1990-05-07 |
EP0366155A2 (en) | 1990-05-02 |
DE68926563T2 (de) | 1997-01-23 |
US5041999A (en) | 1991-08-20 |
EP0366155A3 (en) | 1991-11-13 |
DE68926563D1 (de) | 1996-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5042001A (en) | Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier | |
Karp et al. | High-precision division and square root | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
US5184318A (en) | Rectangular array signed digit multiplier | |
US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
JP2822399B2 (ja) | 対数関数演算装置 | |
US4956799A (en) | Trigonometric function arithmetic processor using pseudo-division | |
EP0356153B1 (en) | Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction | |
JPH0454633A (ja) | 高基数除算器 | |
JP2504102B2 (ja) | 逆三角関数演算装置 | |
Linhardt et al. | Digit-by-digit transcendental-function computation | |
JP2508784B2 (ja) | 指数関数演算装置 | |
Yuen | A note on base–2 arithmetic logic | |
JPH04172526A (ja) | 浮動小数点除算器 | |
US6055553A (en) | Apparatus for computing exponential and trigonometric functions | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
Gustafsson et al. | Basic arithmetic circuits | |
Takagi | Arithmetic unit based on a high-speed multiplier with a redundant-binary addition tree | |
Doran | Special cases of division | |
JPH06105421B2 (ja) | 逆三角関数演算装置 | |
JP2508286B2 (ja) | 平方根演算装置 | |
JP2761145B2 (ja) | 開平演算装置 | |
Ahari | Computer Arithmetic in modern computers and usages of Computer Arithmetic | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
Hsu et al. | FPGA Implementation of Floating Point Linear Programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |