JP2508784B2 - 指数関数演算装置 - Google Patents

指数関数演算装置

Info

Publication number
JP2508784B2
JP2508784B2 JP63035902A JP3590288A JP2508784B2 JP 2508784 B2 JP2508784 B2 JP 2508784B2 JP 63035902 A JP63035902 A JP 63035902A JP 3590288 A JP3590288 A JP 3590288A JP 2508784 B2 JP2508784 B2 JP 2508784B2
Authority
JP
Japan
Prior art keywords
register
exponential function
input
contents
subtractor
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
Application number
JP63035902A
Other languages
English (en)
Other versions
JPH01209530A (ja
Inventor
美小夜 中山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP63035902A priority Critical patent/JP2508784B2/ja
Priority to US07/311,171 priority patent/US4979139A/en
Publication of JPH01209530A publication Critical patent/JPH01209530A/ja
Application granted granted Critical
Publication of JP2508784B2 publication Critical patent/JP2508784B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5446Methods 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 using crossaddition algorithms, e.g. CORDIC

Description

〔産業上の利用分野〕
本発明は、計算機における指数関数の演算装置に関す
るものである。 〔従来の技術〕 指数関数は、科学技術計算を取り扱う計算機にとっ
て、ぜひとも備えなければならない機能の一つである。 この関数を演算する方式としてテイラー級数展開 ex−1=x+x2/2!+x3/3!+……+xn/n! ……(1) や、連分数展開やチェブシェフ級数展開などによる有理
関数近似によって求める方式がある。しかし、いずれの
方式も、多くの乗算あるいは除算を必要とするため演算
時間が長くなり、しかも演算精度も満足すべきものが得
られないという欠点があった。 また、マイクロプログラム制御の計算機に適した指数
関数演算方式としてSTL(equential able ook u
p)がある。STLは、加算、減算及び右シフトによって演
算できるため、高速な乗算器を持たない計算機では有効
である。 2進法でn桁の精度で指数関数ex−1を求めるための
STLの演算原理を以下に示す。 入力数xは定数γと数列{ak}を用いると、以下の
ように表わせる。 x=a0×γ+a1×γ+ a2×γ+…+an-1×γn-1+ε (2) ただし、γ=loge(1+2-k) (3) ak={+1,0} (4) これにより、 ex−1=(1+2-1a1×(1+2-2a2…… ×(1+2-(n-1)a1×(2ε−1) (5) となる。 このとき、xから{ak}を求めることを疑似除算、
{ak}からex−1を求めることを疑似乗算という。 w=φ−γ (6) w≧0ならば、 ak=+1 (7) φk+1=w (8) ζk+1=ζ+2-k×ζ (9) w<0ならば、 ak=0 (10) φk+1=φ (11) ζk+1=ζ (12) これらを繰り返し実行することで、φを0に近づけ
てゆくとexとなり、ex−1=ζ−1が求められる。 このとき、式(6)は、{ak}を決定するための疑似
除算である。また、式(8),(9),(11),(12)
は、{ak}からexを求めるための疑似乗算である。 ここで、STLの算法で示すと以下のとおりとなる。
【1】 x0=x(1≦x<loge2),y0=1を初期値とす
る。
【2】 k=0,1,2,……,n−1に対して、
【3】を反復
する。
【3】 w=xk−γ (13) W≧0ならば ak=+1 (14) xk+1=w (15) yk+1=yk+yk×2-k (16) W<0ならば ak=0 (17) xk+1=wk (18) yk+1=yk (19) ただし、γは(3)式を満たす定数である。
【4】 ex−1=yn−1が得られる。 従来のSTLの算法は、第2図に示す演算装置で、第3
図のフローチャートに示す手順で行われる。 第2図において、レジスタ207,208は2種の2進数の
変形xk,ykを格納するレジスタ、バレル・シフタ203は値
を任意桁だけ右シフトできるバレル・シフタ、ROM202は
(3)式の定数γを発生するn語のROM、加減算器204
は入力Aの内容と入力Bの内容を、加算または減算する
加減算器である。カウンタ206は、STLのループ回数回を
制御するカウンタで、カウンタ201はバレル・シフタ203
のシフト桁数を指定し、ROM202の定数番号kを指定する
カウンタである。 次に、第2図の動作を第3図のSTLの算法に基づいて
説明する。
【1】 レジスタ207,208にx、1(301,302)を、カウ
ンタ201,206に0、n(304,303)を初期値として与え
る。
【2】 カウンタ206の値がnから1までのnステップ
の間、次のステップ
【3】を繰り返す。
【3】 レジスタ208には(9),(12)式の変数y
kが、レジスタ207には、(8),(11)式の変数xkが、
レジスタ205には(6)式の変数wが、カウンタ201には
変数kが、カウンタ206には変数nが格納されている。
バレル・シフタ203はバスから出力される値を、カウン
タ201が示す数だけ右シフトすることにより、2-k倍す
る。 レジスタ207からxから入力Aに転送し、カウンタ201
のアドレスが示すROM203の値を入力Bに転送し、加減算
器204で減算し、演算結果をレジスタ205に転送する。
(305)。 もし、レジスタ205の符号桁の値が正のときは(30
6)、以下の演算を行う。まず、前記演算結果であるレ
ジスタ205の内容をレジスタ207に転送する(311)。次
に、レジスタ208からyを入力Aに転送し、yのバレル
・シフタ203でカウンタ201が示す値だけ右シフトしたも
のを入力Bに転送し、加減算器204で加算し、演算結果
をレジスタ208に転送する(312)。 もし、レジスタ231の符号桁の値が負のときは(30
6)、何もしない(312,322)。
【4】 上記ステップをn回実行した後(309)、レジ
スタ208の内容はyn=exとなり、これより1減算すればe
x−1が得られる(310)。 従来は、以上の手順をマイクロプログラムで行ってい
た。このとき、上記ステップ
【3】の1回の処理にαク
ロックかかるとすると、全体の演算処理にはn×αクロ
ック要し、膨大な時間がかかっていた。 〔発明が解決しようとする課題〕 上述した従来例の、指数関数演算装置には、以下の問
題点がある。 第1に演算結果の精度が良くない。すなわち、(3)
式のγはkが増大するに従って小さくなるため、γ
の有効数字が減少し、LSB付近に丸め誤差が蓄積され
る。また、式(8),(9),(11),(12)は固定小
数点での算法であるため、x、ex−1が浮動小数点数の
場合、xを固定小数点数に変換してからex−1を求め、
浮動小数点に変換しなければならない。このとき、xが
小さい数である場合、固定小数点への変換過程で有効数
字が大幅に減少してしまう。 第2に実行時間が長い。すなわち、STLの処理(式
(6),(8),(9),(11),(12))をすべてマ
イクロプログラムで行っていたため、STL1回の処理にα
クロックかかるとすると、全体ではn×αクロック要
し、膨大な時間がかかってしまう。 〔課題を解決するための手段〕 本発明による指数関数演算装置は、2k×loge(1+2
-k)またはloge(1+2-k)(ただしk=0,1,…,m−
1)をk=0からk=m−1まで逐次発生できる定数発
生器と、第1のレジスタと、第2のレジスタと、前記第
2のレジスタの内容をk桁(ただしk=1,2,…,m−2,m
−1,m)だけ右シフトができる1個のバレル・シフタ
と、前記第1のレジスタの内容に、前記バレル・シフタ
の内容か、0か、または前記定数発生器の内容を加算ま
たは減算し、前記第2のレジスタに出力する加減算器
と、前記第2のレジスタの符号を入力でき、かつ加減算
器が行う演算が、加算か転送かを制御できるm段のFirs
t−In Last−Out方式のスタックとを有する。 〔作用〕 以下、数式を用いて、本発明の指数関数の演算原理を
説明する。本発明の演算原理はSTLと同様であり、本発
明の算法はSTL算法の変形と言える。 STLでは、疑似除算と疑似乗算を同時に実行している
が、本発明ではまず疑似除算を行い、その後、疑似乗算
を行う。 STLでは(2)式のεを無視し、Y0=1を初期値とし
て疑似乗算を行っていたため、2進n桁の精度を得るた
めにはnステップの演算が必要だった。ここで、(2)
式でε<2nであるため、2進数で2n桁の精度で求めるな
らば(1)式よりeε≒εと近似できることを利用し、
これを初期値として疑似乗算を行う。 そのため、疑似除算,疑似乗算合わせてのステップ数
はSTL同様で約nステップ必要である。 疑似除算の剰余Ymを疑似乗算の初期値として、精度良
く使用するために、疑似除算で1ステップごとにXkを1
桁下位の桁にずらしながら演算する。また、疑似乗算は
疑似除算とは逆の順序で、Ykを1桁上位の桁にずらしな
がら行う。 また、疑似乗算では、初期値をYm=ε=Xkとし、k=
mからk=i+1まで反復される。 Yk-1=Yk+2-k×Yk+1 (20) このように、xとyが浮動小数点数でありx≪1とき
は、ex≒Xであるため、疑似除算のステップを途中から
始め、疑似除算のステップを途中で終わらせる。その結
果、桁合わせによる有効数字の大幅減少を防ぎ、また性
能も向上できる。 次に、本発明の算法を示す。 演算結果の精度を2進数でn(=2m)桁とする。
【1】 ex−1を求めるに当り、xと(0≦x<+∞)
を入力する。
【2】 x=2-i×X(1≦X<2,iは整数)としてi、
Xを決定し、xi=Xを初期値とする。
【3】 k=i,i+1,i+2,…,m−1に対して、
【4】を
反復する(疑似除算を行う)。
【4】 W=Xk−Γただし、 Γ=2k×loge(1+2-k) (21) W≧0ならばak=+1 (22) Xk+1=2×W (23) W<0ならばak=0 (24) Xk+1=2×Wk (25)
【5】 Ym=Xmを疑似乗算の初期値とする。 (26)
【6】 k=m,m−1,m−2,…,i+1に対して、
【7】を
反復する(疑似乗算を行う)。
【7】 ak=+1ならば、Yk-1= (Yk+2-k×Yk+1)/2 (27) ak=0ならば、Yk-1=Yk/2 (28)
【8】 ex−1=Yiが得られる。 〔実施例〕 次に図面を用いて、本発明の一実施例を説明する。 第1図は、本発明に従って指数関数ex−1を演算する
演算装置の第一の実施例である。第1図において、レジ
スタ106,108は2種の変数を格納するレジスタ、加減算
器109は式(21),(27)で加算または減算を行う加減
算器、バレル・シフタ113はレジスタ106の内容を任意の
桁数だけ右シフトできるバレル・シフタ、シフタ112は
加減算器109の出力を1/2倍してレジスタ106に出力する
シフタ、シフタ111は加減算器109の出力を2倍してレジ
スタ106に出力するシフタである。ROM104は(21)式の
定数Γを格納するm語のROM、指数部演算器103はバレ
ル・シフタ113のシフト数およびROM104のアドレスを制
御し、指数部の演算を行う演算器、スタック105は数列
{ak}を蓄積でき、かつ加減算器109で行う演算が加算
か転送かを制御するFirst−In,Last−Out方式のスタッ
クである。バス101は入出力データおよび演算の中間結
果を転送するためのバス、バス102はレジスタ106の値を
転送するためのバスである。 次に、第1図の動作を本発明の算法に基づいて説明す
る。
【1】 2進浮動小数点数で表現されたx(0≦x<+
∞)の値をバス101から入力し、x=2-i×X(1≦X<
2,iは整数)となるような指数部の補数iを、指数部演
算部103で求める。
【2】 xの仮数部Xをレジスタ106に、入力する。
【3】 指数部演算器103からの出力値kをi,i+1,i+
2,…,m−1とインクリメントしながら、
【4】を反復す
る。
【4】 まず、レジスタ106のXkの値をバス102を介して
108の入力Aに転送し、同時にROM104から定数Γをバ
ス101を介して107の入力Bに転送する。加減算器112は
入力Aから入力Bを減算し、シフタ111で2倍してレジ
スタ106に書き込む。 次に、レジスタ106の符号桁の値をスタック105に入力
(プッシュ)する。 レジスタ106の符号桁が正ならば、制御信号114によ
り、レジスタ106の内容を108に転送する。 レジスタ106の符号桁が負ならば、制御信号114によ
り、レジスタ108の内容をシフタ110で2倍にして108に
転送する。
【5】 レジスタ106のXmを、疑似乗算の初期値Ymとし
て、指数部演算器105の出力値kをk=m,m−1,m−2,…,
i+1とデクリメントしながら、
【6】を反復する。
【6】 レジスタ106のYkの値をバス102を介してレジス
タ108の入力Aに転送し、同時に、バルブ・シフタ113で
レジスタ106のYk値を指数部演算器103の内容の桁数だけ
右シフト(2-k倍)してレジスタ107の入力Bに転送す
る。 スタック105からポップされた値が正ならば、加減算
器109は入力Aと入力Bを加算し、シフタ112で1/2倍し
てレジスタ106に書き込む。 スタック105からポップされた値が負ならば、加減算
器109は入力Aと0を加算し、シフタ112で1/2倍してレ
ジスタ106に書き込む。
【7】 レジスタ106にex−1の仮数部が得られる。 このように、ステップ
【4】と
【6】の演算は1クロ
ックで処理でき、全体の処理時間は、2(m−i)≦n
クロック要する。 以上述べたように本実施例では、バレル・シフト1個
と加減算器1個とスタックを用いて、高速かつ高精度に
ex−1を演算できる。 上述した実施例では浮動小数点数を扱うが、同一のハ
ードウェアで固定小数点数も扱える。変数iをi=0に
固定すればよい。 算法は、次のように変形できる。
【1】 Xi=x(0≦x<∞)を初期値とする(Xiを固
定小数点数にする)。
【2】 変数iをi=0とする。
【3〜6】 (浮動小数点の算法と同様)
【7】 ex−1が得られる。 〔発明の効果〕 以上説明したように、本発明による指数関数演算装置
は、次の2つの効果を有する。第1に演算結果の精度が
良い。すなわち、本発明の算法は、常に有効数字が最大
になるように桁合わせを行いながら演算するために、演
算精度が良い。また、x、ex−1が浮動小数点数の場
合、xが小さい数であっても、有効数字が減少しない。
第2に演算時間を短縮できる。本発明の演算装置はSTL
の処理をハードウェアで実現している。このため、マイ
クロプログラムで制御するにの比べ、1/(STLの1回の
ループにかかった時間)の時間で演算ができる。
【図面の簡単な説明】
第1図は、本発明の一実施例を示すブロック図、第2図
は、従来例を示すブロック図、第3図は、従来例のフロ
ーチャート図である。 101,102……データ・バス、103……指数部演算器、104
……定数ROM、105……スタック、106,107,108……レジ
スタ、109……加減算器、10,111,112……シフタ、113…
…バレル・シフタ、114……制御信号、201,206……カウ
ンタ、202……定数ROM、203……バレル・シフタ、205,2
07,208……レジスタ。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】指数関数ex−1を演算する指数関数演算装
    置であって、2k×loge(1+2-k)またはloge(1+
    2-k)(ただしk=0,1,…,m−1)をk=0からk=m
    −1まで逐次発生できる定数発生器と、第1のレジスタ
    と、第2のレジスタと、前記第2のレジスタの内容をk
    桁(ただしk=1,2,…,m−2,m−1,m)だけ右シフトがで
    きる1個のバレル・シフタと、前記第1のレジスタの内
    容に、前記バレル・シフタの内容か、0か、または前記
    定数発生器の内容を加算または減算し、前記第2のレジ
    スタに出力する加減算器と、前記第2のレジスタの符号
    を入力でき、かつ加減算器が行う演算が、加算か転送か
    を制御できるm段のスタックとを備えることを特徴とす
    る指数関数演算装置。
JP63035902A 1988-02-17 1988-02-17 指数関数演算装置 Expired - Fee Related JP2508784B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63035902A JP2508784B2 (ja) 1988-02-17 1988-02-17 指数関数演算装置
US07/311,171 US4979139A (en) 1988-02-17 1989-02-15 Arithmetic unit for exponential function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63035902A JP2508784B2 (ja) 1988-02-17 1988-02-17 指数関数演算装置

Publications (2)

Publication Number Publication Date
JPH01209530A JPH01209530A (ja) 1989-08-23
JP2508784B2 true JP2508784B2 (ja) 1996-06-19

Family

ID=12454959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63035902A Expired - Fee Related JP2508784B2 (ja) 1988-02-17 1988-02-17 指数関数演算装置

Country Status (2)

Country Link
US (1) US4979139A (ja)
JP (1) JP2508784B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2835153B2 (ja) * 1990-06-25 1998-12-14 株式会社東芝 高基数除算器
JPH05150786A (ja) * 1991-10-31 1993-06-18 Yamaha Corp 非線形関数合成器および該非線形関数合成器を用いた楽音合成装置
EP0593073A1 (en) * 1992-10-16 1994-04-20 Matsushita Electric Industrial Co., Ltd. A processor incorporating shifters
US5576982A (en) * 1994-10-17 1996-11-19 Unisys Corporation Fast significant bit calculator and its application to integer multiplication and division
JP3110288B2 (ja) * 1995-07-21 2000-11-20 日本電気株式会社 指数対数変換回路
US6055553A (en) * 1997-02-25 2000-04-25 Kantabutra; Vitit Apparatus for computing exponential and trigonometric functions
US7065546B2 (en) * 2002-04-09 2006-06-20 Sony Electronics Inc. Method of performing quantization within a multimedia bitstream utilizing division-free instructions
US7390110B2 (en) * 2005-06-09 2008-06-24 Canlyte, Inc. Article support device
CN101764735B (zh) * 2008-12-25 2011-12-07 凌阳电通科技股份有限公司 通信系统的传输区块长度计算方法
CN108595147B (zh) * 2018-01-02 2021-03-23 上海兆芯集成电路有限公司 具有级数运算执行电路的微处理器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6211933A (ja) * 1985-07-09 1987-01-20 Nec Corp 演算回路

Also Published As

Publication number Publication date
JPH01209530A (ja) 1989-08-23
US4979139A (en) 1990-12-18

Similar Documents

Publication Publication Date Title
Karp et al. High-precision division and square root
US4956799A (en) Trigonometric function arithmetic processor using pseudo-division
US4150434A (en) Matrix arithmetic apparatus
JP2504102B2 (ja) 逆三角関数演算装置
JP2508784B2 (ja) 指数関数演算装置
Linhardt et al. Digit-by-digit transcendental-function computation
JP2822399B2 (ja) 対数関数演算装置
US3878985A (en) Serial-parallel multiplier using booth{3 s algorithm with combined carry-borrow feature
JPS6051733B2 (ja) 指数関数演算装置
JP2597775B2 (ja) 除算方法および除算装置
EP1504338A1 (en) "emod" a fast modulus calculation for computer systems
Takagi Arithmetic unit based on a high-speed multiplier with a redundant-binary addition tree
JPH0325809B2 (ja)
Lloris Ruiz et al. Multiplication
SU1160454A1 (ru) Устройство дл вычислени элементарных функций
RU1784975C (ru) Интегроарифметическое устройство
JP2508286B2 (ja) 平方根演算装置
Omondi et al. Modular Addition and Multiplication
Wahab et al. Evaluation of floating-point sum or difference of products in carry-save domain
SU748409A1 (ru) Устройство дл умножени двоично- дес тичных чисел
JPH06105421B2 (ja) 逆三角関数演算装置
SU1285464A1 (ru) Устройство дл делени
JPH04364528A (ja) 開平値算出回路
Rao et al. A variable-shift nega-binary multiplier
JPS6365524A (ja) 有理数演算装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees