JPH0776916B2 - 疑似除算方式を用いた三角関数演算装置 - Google Patents

疑似除算方式を用いた三角関数演算装置

Info

Publication number
JPH0776916B2
JPH0776916B2 JP62234195A JP23419587A JPH0776916B2 JP H0776916 B2 JPH0776916 B2 JP H0776916B2 JP 62234195 A JP62234195 A JP 62234195A JP 23419587 A JP23419587 A JP 23419587A JP H0776916 B2 JPH0776916 B2 JP H0776916B2
Authority
JP
Japan
Prior art keywords
register
adder
contents
subtractor
constant
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
JP62234195A
Other languages
English (en)
Other versions
JPS6478323A (en
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
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP62234195A priority Critical patent/JPH0776916B2/ja
Priority to EP88110493A priority patent/EP0297588B1/en
Priority to DE3853379T priority patent/DE3853379T2/de
Publication of JPS6478323A publication Critical patent/JPS6478323A/ja
Priority to US07/428,035 priority patent/US4956799A/en
Publication of JPH0776916B2 publication Critical patent/JPH0776916B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は三角関数演算装置に係り、特に計算機に備えら
れる三角関数演算装置に関する。
[従来の技術] 三角関数sinθ、cosθは2πまたは360度を周期とする
関数であり、この関数の演算は科学技術計算を取り扱う
計算機にとって是非とも備えなければならない機能の1
つである。
従来、この関数を演算する方式としてはテイラー級数展
開 sinθ=θ−θ3/3!+θ5/5! −θ7/7!+ ……(1) や、連分数展開やチェビシェフ級数展開などによる有理
関数近似によって求める方式がある。しかしながら、何
れの方式も多くの乗算または除算を必要としており、演
算時間が長くなり、しかも演算精度も満足すべきものが
得られないという欠点があった。
また、マイクロプログラム制御の計算機に適した三角関
数演算方式としてCORDIC(Cordinate Rotation DIgital
Computer)がある。(一松信著:初等関数の数値計
算、教育出版)CORDICは加算、減算及び右シフトによっ
て演算できるので、高速な乗算器を持たない計算機では
有効である。
まず、CORDICの演算原理を説明する。2進法でn桁の精
度のsinθ、cosθを求めるCORDICの演算原理を以下に示
す。
角度θは定数rkと数列{ak}を用いて θ=aθ×r0+a1×r1+a2×r2+ ・・・+an−1×rn−1+ε (2) ただし、rk=arctan(2-k) (3) ak={+1、−1} (4) と表せる。数列{ak}は引き離し法の除算と類似した方
法で一意に決定できる。数列{ak}を決定する過程を疑
似除算と呼ぶ。
ここで、sinθ、cosθは加法定理により、ak=+1のと
きは、Ψk+1=Ψk+rk cos(Ψk+1)=Rk(cosΨk −2-k×sinΨk) (5) sin(Ψk+1)=Rk(sinΨk +2-k×cosΨk) (6) ak=−1のときには、Ψk+1=Ψk−rk cos(Ψk+1)=Rk(cosΨk +2-k×sinΨk) (7) sin(Ψk+1)=Rk(sinΨk −2-k×cosΨk) (8) ここで、 とする。
を繰り返し実行することで、Ψkをθに近付けてゆき、
sinθ、cosθを求める。この過程を疑似乗算と呼ぶ。
最終的なsin(Ψn)、cos(Ψn)はK倍されているの
で、その補正が必要である。
次に、CORDICの算法を説明する。
(1) x0=1/K,y0=0,v0=θ(0≦θ<π/2)を初期
値とする。ここで、Kは(10)式を満たす定数である。
(2) k=0,1,2,・・・、n−1に対して(3)を反
復する。
(3) vk≧0ならばak=+1 vk<0ならばak=−1として xk+1=xk−ak×2-kxyk (11) yk+1=yk+ak×2-kxxk (12) vk+1=vk−ak×rk (13) ただし、rkは(3)式を満たす定数である。
(4) cosθ=xn,sinθ=ynが同時に得られる。
CORDICの算法を実現したパイプライン演算装置は、一般
に第4図のような構成をとる。
第4図において、演算器41,42,・・,49は同じ構成の演
算器であり、nステージのパイプラインを構成する。
演算器41において、レジスタ411,412,413は3種の2進
数の変数xk,yk,vkを格納するn桁のレジスタ、シフタ41
4,415はレジスタ412,411(n桁)の内容をk桁だけ右シ
フトできるシフタ、定数発生器418は(3)式の定数rk
を発生するn桁の定数発生器、加減算器417,418,419は
それぞれレジスタ411,412,413の内容にシフタ414,415,
定数発生器416の内容を加算または減算できるn桁の加
減算器である。
次に、第4図の演算装置の動作をCORDICの算法に基づい
て説明する。
演算器41,41,..,49は、それぞれ前記算法[3]のk=
0,1,・・,n−1に相当する演算を行う。
[1] レジスタ411,412,413に1/K,0,θを初期値とし
て与える。
[2] 演算器41において、変数k=0とする。
レジスタ411には(11)式の変数xkが、レジスタ412には
(12)式の変数ykが、レジスタ413には(13)式の変数v
kが、格納されている。
シフタ414,415は、それぞれレジスタ412,411の値を、k
桁だけ右シフトすることにより2-k倍する。レジスタ41
3の符号桁の値が正のときak=+1であり、加減算器41
7,419では減算を、加減算器418では加算を行う。レジス
タ413の符号桁の値が負のときak=−1であり、加減算
器417,419では加算を、加減算器418では減算を行う。3
個の加減算器411,412,413の出力は、変数xk+1,yk+1,v
k+1として、次のステージの演算器42内のレジスタ42
1,422,423に格納される。
[3] 減算器42,43,・・,49において、それぞれk=
1,2・・,n−1として、上記[2]の演算を順次行う。
[4] 最終ステージの演算器49からは、加減算器497
からxn=cosθが、加減算器498からyn=sinθが得られ
る。
1クロック毎に角度θをレジスタ413に入力すると、1
クロック毎にsinθ,cosθが加減算器498,497から出力さ
れる。上記演算器41,42,・・,49の各ステージの1回の
処理に1クロックかかるとすると、角度θが入力されて
からsinθ,cosθが出力されるまで、nクロック要す
る。
[発明が解決しようとする問題点] 上述した従来例の、三角関数演算装置には、以下の問題
点がある。
[問題点1] ハードウェア量が大きい。
従来例の三角関数演算装置では、n桁のkビット・シフ
タが2n個、n桁の加減算器が3n個必要である。LSI(大
規模集積回路)で実現する場合、シフト桁の大きいシフ
タは大きい面積を必要とするため、三角関数演算器とし
ての面積が大きくなってしまう。特に高精度(多倍長)
の演算をおこなうには、バレル・シフタ、加減算器共に
面積が増大する。
例えば、2進数で32桁の精度を得るには、32ビットの加
減算器が96個、0,1,2,・・,31ビット右シフトできる32
ビットのシフタが2個ずつ(計64個)、必要である。
[問題点2] 演算結果の精度がよくない。
(6)式のrkはkが増大するに従って小さくなるため、
rkの有効数字が減少する。LSB付近に丸め誤差が蓄積さ
れる。
[発明の従来技術に対する相違点、独創性の内容] 上述した従来の三角関数演算装置では2個のバレルシフ
タと3個の加減算器とを用いて、高速にsinθ、cosθを
求める装置であるのに対して、本発明は1個のバレルシ
フタと2個の加減算器とを用いて従来例と同程度の速度
で、かつ従来例より高い精度でsinθ、cosθを求めると
いう独創的内容を有する。
[問題点を解決するための手段] 本発明は、計算機における三角関数sinθ,cosθを演算
する三角関数演算装置であり、 初期値θから、 (ただしak=+1または−1)を満足する数列{ak}と
疑似剰余εを求める疑似除算処理をmステップで実行す
る第1の演算手段と、初期値Xm=P,Ym=ε×P(Pは定
数)と数列{ak}から、k=m−1,m−2,,,1,0に対して
mステップで Xk−1=Xk−ak×2-2k×Yk Yk−1=(Yk+ak+Xk)/2 なる疑似乗算処理を実行し X0=Q×cosθ,Y0=Q×sinθ(Qは定数)が同時に得
る第2の演算手段とから構成され、第1の演算手段は、
第1の記憶手段と、定数2k×arctan(2-k)またはarc
tan(2-k)(ただしk=0,1,2,...,m−1)を発生する
定数発生手段と、前記第1の記憶手段の内容に前記定数
を加減算する第1の加減算手段とを含み、第2の演算手
段は、第2の記憶手段と、第3の記憶手段と、前記第3
の記憶手段の内容も2k桁(ただしK=m−1,m−2,...,
1,0)だけ右シフトができるシフト手段と、前記第2の
記憶手段の内容に前記シフタの内容を加算もしくは減算
できる第2の加減算手段と、前記第3の記憶手段の内容
に前記第2の記憶手段の内容を加算もしくは減算できる
第3の加減算手段とを含むことを特徴とする三角関数演
算装置。
本発明による三角関数演算装置は、計算機における三角
関数sinθ,cosθを演算する演算装置であり、第1の記
憶手段と、定数2k×arctan(2-k)またはarctan(2
-k)(ただしk=0,1,2,...,m−1)を発生する定数発
生手段と、前記第1の記憶手段の内容に前記定数を加減
算する第1の加減算手段とを含む第1の演算手段と、第
2の記憶手段と、第3の記憶手段と、前記第3の記憶手
段の内容を2k桁(ただしk=m−1,m−2,...,1,0)だけ
右シフトができるシフト手段と、前記第2の記憶手段の
内容に前記シフタの内容を加算もしくは減算できる第2
の加減算手段と、前記第3の記憶手段の内容に前記第2
の記憶手段の内容を加算もしくは減算できる第3の加減
算手段とを含む第2の演算手段とから、構成される。
[本発明の演算原理] 以下、数式を用いて、本発明の三角関数演算原理を説明
する。本発明の演算原理はCORDICと同様であり、本発明
の算法はCORDIC算法の変形と言える。CORDICでは、疑似
除算と疑似乗算を同時に実行しているが、本発明では先
ず疑似除算を行い、その後、疑似乗算を行う。CORDICで
は、(2)式のεを無視して、x0=1/K,y0=0を初期値
として疑似乗算を行っていたため2進n桁の精度を得る
にはnステップの演算が必要だった。ここで、(2)式
ではε<2nであるため、2進数で2n桁の精度ならば
(1)式よりsinε≒ε,cosε≒1と近似できることを
利用する。疑似除算をm(m=n/2とする)ステップで
止め、x0=k,y0=vm/kを初期値として疑似乗算を行う。
そのため、疑似除算、疑似乗算合わせてのステップ数は
CORDIC同様nステップである。疑似除算の剰余Vmを疑似
乗算の初期値として、精度良く使用するために、疑似除
算を1ステップごとに1桁下位の桁にずらしながら演算
し、疑似乗算をCORDICとは逆の順序で行う。CORDIC算法
の(11,12)式は、 xk−1=xk+ak×2-k×yk (15) yk−1=yk−ak×2-k×xk (16) と変形され、更に Xk=xk,Yk=2k×yk (17) のような置換を行うことで、 Xk−1=Xk−ak×2-2k×Yk (18) Yk−1=(Yk+ak×Xk)/2 (19) となる。kの値が大きいときはykの値が小さいため、丸
め誤差が累積することを防ぐには(17)式の置換が有効
である。また、(19)式では多数桁シフトが必要ないの
で、多数桁シフトの回数を減少できる。
[本発明の算法] 演算結果の精度を2進数でn(=2m)桁とする。
[1] 角度θ(0≦θ<π/2)を入力する。
[2] k=0,1,2,...m−1に対して、[3]を反復す
る。
[3] Vk≧0ならば ak=+1 Vk<0ならば ak=−1として Vk+1=2×(Vk−ak×Γk) (20) ただし、Γk=2k×arctan(2-k) (21) [4] Xm=(1/K), Ym=Vm(1/K/2) (22) を初期値とする。ここで、1/Kは(10)式を満たす定数
である。
[5] k=m,m−1,...,2,1,0に対して、[6]を反復
する。
[6] Xk−1=Xk−(ak×2-2×Yk) (18) Yk−1=(Yk+ak×Xk)/2 (19) [7] cosθ=X0,sinθ=2×Y0 が同時に得られる。
ただし、sinθ対cosθの比の値だけを求める場合は、
[4]は Xm=1.0,Ym=Vm/2 (23) でよく、乗算は不要である。
[実施例] [実施例1] 次に図面を用いて、本発明の実施例を説明する。第1図
は本発明に従って三角関数sinθ,cosθを演算する演算
装置の第1の実施例である。図において、レジスタ11
1、121は2種の変数を格納するレジスタ、加減算器11
2、122は(18、19、20)式の加算もしくは減算を行う加
減算器、バレルシフタ113はレジスタ121の内容を任意の
偶数の桁数だけ右シフトできるバレル・シフタ、シフタ
114は加減算器111の出力を2倍してレジスタ111に出力
するシフタ、シフタ124は加減算器111の出力を1/2倍し
てレジスタ121に出力するシフタである。ROM104は(2
1)式の定数Γkおよび(10)式を満たす定数1/Kを格納
する(2m+1)語のROM,指数部演算器105はバレル・シ
フタ113のシフト数およびROM104のアドレスを制御し、
指数部の演算を行う演算器、スタック106は数列(ak)
をファーストインラストアウト(First-In,Last-Out)
方式で蓄積できるスタック、乗算器107はバス101から乗
数、比乗数を入力し積をバス101に出力する乗算器であ
る。バス101は入出力データ及び演算の中間結果を転送
するためのバス、バス102はレジスタ111の値を転送する
ためのバスである。
次に、第1図の動作を本発明の算法に基づいて説明す
る。
(1) 2進浮動小数点数で表現されたθ=2-ixΘ
(1≦Θ<2,iは整数)の値をバス101から入力し、指数
部の補数iを指数部演算器105に入力する。
(2) θの仮数部Θをレジスタ111に入力する。
(3) 指数部演算器105の出力値kをi,i+1,i+2,・
・・,m−1とインクリメントしながら、(4)を反復す
る。
(4) レジスタ111のVk値をバス102を介して加減算器
112の入力Aに転送し、同時にROM104から定数Γkをバ
ス101を介して加減算器112の入力Bに転送し、同時にレ
ジスタ111の符号桁の値をスタック106に入力(ブッシ
ュ)する。次に、レジスタ111の符号桁の値が正なら
ば、加減算器112は入力Aから入力Bを減算し、負なら
ば入力Aと入力Bを加算し、シフタ114で2倍してレジ
スタ111に書き込む。
(5) レジスタ111からバス101を介してVm値を取り出
し、レジスタ121および乗算器107に転送する。ROM104か
ら定数1/Kを乗算器107に転送し、積Vm/Kをバス101を介
してレジスタ111に転送する。
(6) 指数部演算器105の出力値kをk=m,m−1,m−
2,・・・,i+1とデクリメントしながら、(7)を反復
する。
(7) レジスタ111のXk値をバス102を介して加減算器
112の入力Aおよび加減算器122の入力Cに転送し、同時
にレジスタ121のYk値をバス101を介して加減算器122の
入力Dに転送し、同時に、バレル・シフタ113でレジス
タ121のYk値を指数部演算器105の内容の2倍の桁数だけ
右シフト(2-2k倍)して加減算器112の入力Bに転送す
る。次に、スタック106からポップされた値が“正”な
らば加減算器112は入力Aから入力Bを減算し、“負”
ならば入力Aと入力Bを加算して、レジスタ111に書き
込む。同時に、スタック106からポップされた値が
“正”ならば加減算器122は入力Dと入力Cを加算し、
“負”ならば入力Dから入力Cを減算して、シフタ124
で1/2倍してレジスタ121に書き込む。
(8) レジスタ111にcosθが、レジスタ121にsinθの
仮数部が(sinθの指数部はθと同じ)が同時に得られ
る。
ステップ(4)と(7)の演算は1クロックで処理で
き、ステップ(5)の乗算にαクロックかかるとする
と、全体の処理時間は約(2m+α)=(n+α)クロッ
ク要する。つまりCORDICの演算よりも乗算器の処理時間
だけしか遅くならない。
以上述べたように本実施例では、バレル・シフタ1個と
加減算器2個を用いて、高速かつ高精度にsinθ,cosθ
を演算できる。
[実施例2] 上述した実施例1では浮動小数点数を扱うが、同一のハ
ードウエアで固定小数点数も扱える。変数iをi=0に
固定すればよい。算法は、次の様に変形できる。
(1) Vi=θ(0≦θ<π/4)を初期値とする。
(2) 変数iをi=0とする。
(3〜7) (浮動小数点の算法と同様) (8) cosθ=Xi,sinθ=Yiが同時に得られる。
[実施例3] 次に図面を用いて、本発明の第3の実施例を説明する。
第2図は本発明にしたがって三角関数sinθ,cosθを演
算するパイプライン演算装置である。
第2図において、演算器11,12,・・,19はmステージの
疑似除算パイプラインを構成する演算器、演算器21は疑
似乗算の初期値を計算する演算器、演算器31,32,・・,3
9はmステージの疑似乗算パイプラインを構成する演算
器である。
演算器11,12,・・,19は同一のハードウェア構成を持
ち、それぞれ変数kをk=0,1,・・,m−1とする。演算
器11において、レジスタ111は変数Vkを入力するn桁の
レジスタ、定数発生器112は定数Γkを出力するn桁の
定数発生器、加減算器113はレジスタ111の内容に定数発
生器112の値を加算または減算するn桁の加減算器、シ
フタ114は加減算器113の値を1桁左にシフトするn桁の
シフトバス、レジスタ118は数列{a0,a1,..,ak−2,ak−
1}を入力するk桁のレジスタである。
演算器21において、レジスタ211は変数Vmを入力するn
桁のレジスタ、定数発生器212は(10)式を満たす定数1
/Kを出力するn桁の定数発生器、乗算器213はレジスタ2
12と定数発生器3の内容を乗算し、その1/2の値を出力
する乗算器、レジスタ218は{a0,a1,..,am}を入力する
(m+1)桁のレジスタである。
演算器31,32,・・,39は同一のハードウェア構成を持
ち、それぞれ変数kをk=m−1,m−2,・・,0とする。
演算器31において、レジスタ311,312は変数Xk,Ykを入力
するn桁のレジスタ、シフタ313はレジスタ312の内容を
2k桁右シフトするn桁幅のシフタ、加減算器314はレジ
スタ311の内容にシフタ313の内容を加算または減算する
n桁の加減算器、加減算器315はレジスタ312の内容にレ
ジスタ311の内容を加算または減算するn桁の加減算
器、シフタ316は加減算器315の値を1桁右にシフトする
n桁幅のシフトバス、レジスタ318は数列{a0,a1,..,ak
−1}を入力する(k+1)桁のレジスタである。
次に、第2図の演算装置の動作を本発明の算法に基づい
て説明する。
[1] 2進n桁の固定小数点数で表現された角度θ
(θ<π/2)の値を入力する。
[2] 演算器11において、変数k=0とする。
レジスタ111のVk値の符号桁の値が正ならば、加減算器1
13はレジスタ111の内容から定数発生器113の定数値Γk
を減算し、負ならば加算する。シフタ114は加減算器113
の出力を2倍して次のステージの演算器12内のレジスタ
121に出力する。レジスタ118には数列{a0,a1,...,ak−
2,ak−1}が格納されており、レジスタ111の符号桁の
値をakとして、数列{a0,a1,...,ak−1,ak}を次のステ
ージの演算器12内のレジスタ128に出力する。
[3] 減算器12,13,・・,19において、それぞれk=
1,2,・・,m−1として、上記[2]の演算を順次行う。
演算器19の出力は次のステージの演算器21に入力され
る。
[4] 演算器21において、レジスタ211に入力したVm
値と、定数発生器212の1/K値を、乗算器213によって乗
算し、(22)式のYm値を生成する。レジスタ218,定数発
生器212,乗算器213の出力は、次のステージの演算器31
内のレジスタ318,311,312に入力される。
[5] 演算器31において、変数k=m−1とする。
シフタ313でレジスタ312のYk値を2k倍の桁数だけ右シフ
ト(2-2k倍)する。レジスタ318に入力した数列{a0,a
1,...,ak−1,ak}からak値を取り出し、ak値が“正”な
らば、加減算器314はレジスタ311の内容からシフタ313
の出力を減算し、加減算器315はレジスタ312の内容にレ
ジスタ311の出力を加算する。ak値が“負”ならば、加
減算器314はレジスタ311の内容にシフタ313の出力を加
算し、加減算器315はレジスタ312の内容からレジスタ31
1の出力を減算する。シフタ316は加減算器315の値を1/2
倍する。レジスタ318の数列{a0,a1,...,ak−1}と、
加減算器314,シフタ316の出力は、次のステージの演算
器32内のレジスタ328,321,322に出力される。
[6] 演算器31,32,・・,39において、それぞれk=
m−2,m−3,・・,0として、上記[5]の演算を順次行
う。
[7] 演算器394にcosθが、演算器396にsinθが同時
に得られる。
1クロック毎に角度θをレジスタ111に入力すると、1
クロック毎にsinθ,cosθが加減算器394,395から出力さ
れる。上記演算器11,12,・・,19,21,31,32,・・,39の各
ステージの1回の処理に1クロックずつかかるとする
と、角度θが入力されてからsinθ,cosθが出力される
まで、(n+1)クロック要する。
[実施例4] 次に図面を用いて、本発明の第4の実施例を説明する。
第3図は本発明に従って三角関数を演算するパイプライ
ン演算装置である。本発明の算法[4]において、(2
2)式ではなく、(23)式を用いた演算装置であるた
め、出力されるのはK×sinθ,K×cosθである。{Kは
(10)式を満たす定数。} 第3図において、演算器11,12,・・,19はmステージの
疑似除算パイプラインを構成する実施例3と同じ演算
器、シフタ221はシフタ194の出力を1桁右シフトしてレ
ジスタ312に出力するn桁のシフタ、定数発生器222は定
数1.0をレジスタ311に出力する定数発生器、演算器31,3
2,・・,39はmステージの疑似乗算パイプラインを構成
する実施例3と同じ演算器である。
1クロック毎に角度θをレジスタ111に入力すると、1
クロック毎にsinθ,cosθが加減算器394,395から出力さ
れる。上記演算器11,12,・・,19,31,32,・・,39の各ス
テージの1回の処理に1クロックずつかかるとすると、
角度θが入力されてからK×sinθ、K×cosθが出力さ
れるまで、nクロック要する。
ハードウェア量は、実施例3と比べて乗算器分だけ少な
い。
[発明の効果] 以上説明したように、本発明による三角関数演算装置
は、次の2つの効果を有する。
(効果1) ハードウエア量を低減できる。実施例1ではバレル・シ
フタが1個、加減算器が2個実現でき、従来例よりもバ
レル・シフタ、加減算器共に1個少ない。従来例より増
加したハードウエアはスタックと乗算器である。スタッ
クはm桁のシフトレジスタで、乗算器は実施例1の加減
算器の片方に簡単な回路を付加することでも実現できる
ため、増加したハードウエア量は減少したハードウエア
量よりはるかに少ない。また、三角関数演算装置を汎用
の浮動小数点演算装置として実現する場合、従来例での
2個のバレル・シフタや3個の加減算器は三角関数、逆
三角関数以外に用途はないが、実施例1の乗算器は他の
用途にも有用である。
実施例3の三角関数演算装置では、n桁の2kビット・シ
フタがn/2個、n桁の加減算器が3n/2個、及び、n×n
桁の乗算器が1個、必要である。乗算器はBoothのアル
ゴリズムを用いればn桁の加減算器がn/2個で実現でき
るため、加減算器の数は2n個あればよい。
例えば、2進数で32桁の精度を得るには、32ビットの加
減算器が64個、及び、30,28,26,,,0ビット右シフトでき
る32ビットのシフタ(計16個)で、実現できる。
従来例に比べて、シフト桁の大きさは2倍だが、シフタ
の数は1/4となっている。加減算器の数は2/3倍で実現で
きる。
(効果2) 演算結果の精度がよい。本発明の算法は、常に有効数字
が最大になるように桁合わせを行いながら演算するため
に、演算精度がよい。また、θ,sinθ、cosθが浮動小
数点数の場合、θが小さい数であっても、有効数字が減
少しない。また丸め誤差が蓄積せず、演算精度がよい。
【図面の簡単な説明】
第1図は、本発明の実施例1のハードウエア構成を示す
ブロック図、 第2図は、本発明に関する実施例3のハードウエア構成
を示すブロック図、 第3図は、本発明に関する実施例4のハードウエア構成
を示すブロック図、 第4図は、従来例のハードウエア構成を示すブロック図
である。 11,12,・・,19……疑似除算用演算器、21……補正用演
算器、31,32,・・,39……疑似乗算用演算器、101,102…
…データ・バス、111,121……レジスタ、112,122……加
減算器、113……バレル・シフタ、104……定数ROM、105
……指数部演算器、106……スタック、111,211……レジ
スタ、112,212……定数発生器、113……加減算器、311,
312……レジスタ、313……多数桁シフタ、314,315……
加減算器、411,412,413……レジスタ、414,415……バレ
ル・シフタ、417,418,419……加減算器、416……定数発
生器。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】計算機における三角関数sinθ,cosθを演
    算する三角関数演算装置であり、 初期値θから、 (ただしak=+1または−1)を満足する数列{ak}と
    疑似剰余εを求める疑似除算処理をmステップで実行す
    る第1の演算手段と、 初期値 Xm=P,Ym=ε×P(Pは定数)と数列{ak}か
    ら、k=m−1,m−2,・・,1,0に対してmステップで Xk−1=Xk−ak×2-2k×Yk Yk−1=(Yk+ak+Xk)/2 なる疑似乗算処理を実行し X0=Q×cosθ,Y0=Q×sinθ(Qは定数)が同時に得
    る第2の演算手段とから構成され、 第1の演算手段は、 第1の記憶手段と、 定数2k×arctan(2-k)またはarctan(2-k)(ただ
    しk=0,1,2,...,m−1)を発生する定数発生手段と、 前記第1の記憶手段の内容に前記定数を加減算する第1
    の加減算手段とを含み、 第2の演算手段は、 第2の記憶手段と、第3の記憶手段と、 前記第3の記憶手段の内容を2k桁(ただしK=m−1,m
    −2,...,1,0)だけ右シフトができるシフト手段と、 前記第2の記憶手段の内容に前記シフタの内容を加算も
    しくは減算できる第2の加減算手段と、 前記第3の記憶手段の内容に前記第2の記憶手段の内容
    を加算もしくは減算できる第3の加減算手段とを含むこ
    とを特徴とする三角関数演算装置。
JP62234195A 1987-06-30 1987-09-18 疑似除算方式を用いた三角関数演算装置 Expired - Fee Related JPH0776916B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP62234195A JPH0776916B2 (ja) 1987-06-30 1987-09-18 疑似除算方式を用いた三角関数演算装置
EP88110493A EP0297588B1 (en) 1987-06-30 1988-06-30 Trigonometric function arithmetic processor using pseudo-division
DE3853379T DE3853379T2 (de) 1987-06-30 1988-06-30 Mit Pseudo-Division arbeitender arithmetischer Prozessor für trigonometrische Funktionen.
US07/428,035 US4956799A (en) 1987-06-30 1989-10-27 Trigonometric function arithmetic processor using pseudo-division

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP62-164460 1987-06-30
JP16446087 1987-06-30
JP62234195A JPH0776916B2 (ja) 1987-06-30 1987-09-18 疑似除算方式を用いた三角関数演算装置

Publications (2)

Publication Number Publication Date
JPS6478323A JPS6478323A (en) 1989-03-23
JPH0776916B2 true JPH0776916B2 (ja) 1995-08-16

Family

ID=26489547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62234195A Expired - Fee Related JPH0776916B2 (ja) 1987-06-30 1987-09-18 疑似除算方式を用いた三角関数演算装置

Country Status (4)

Country Link
US (1) US4956799A (ja)
EP (1) EP0297588B1 (ja)
JP (1) JPH0776916B2 (ja)
DE (1) DE3853379T2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305246A (en) * 1990-07-19 1994-04-19 Lindsley Brett L Device and method for evaluating inverse trigonometric functions
CA2084989A1 (en) * 1990-07-19 1992-01-20 Brett L. Lindsley Device for evaluating inverse trigonometric functions
US5222036A (en) * 1990-07-19 1993-06-22 Motorola, Inc. Device and method for evaluating trigonometric functions
GB2248355B (en) * 1990-09-26 1994-07-13 British Aerospace Digital chirp generator
EP0596175A1 (en) * 1992-11-05 1994-05-11 International Business Machines Corporation Apparatus for executing the argument reduction in exponential computations of IEEE standard floating-point numbers
US5739820A (en) * 1992-11-19 1998-04-14 Apple Computer Inc. Method and apparatus for specular reflection shading of computer graphic images
EP0622727A1 (en) * 1993-04-29 1994-11-02 International Business Machines Corporation System for optimizing argument reduction
US5668749A (en) * 1995-05-04 1997-09-16 Motorola, Inc. Circuit for performing arithmetic operations in a demodulator
JP3480633B2 (ja) * 1995-11-13 2003-12-22 パイオニア株式会社 ディスク再生装置
JP3409953B2 (ja) * 1995-11-13 2003-05-26 パイオニア株式会社 ディスク再生装置
US5963460A (en) * 1996-12-17 1999-10-05 Metaflow Technologies, Inc. Apparatus for computing transcendental functions quickly
US6055553A (en) * 1997-02-25 2000-04-25 Kantabutra; Vitit Apparatus for computing exponential and trigonometric functions
DE10164462B4 (de) * 2001-12-20 2007-04-26 IHP GmbH - Innovations for High Performance Microelectronics/ Institut für innovative Mikroelektronik GmbH CORDIC-Einheit
JP2008193209A (ja) * 2007-02-01 2008-08-21 Niigata Seimitsu Kk 直交変調器
US9875084B2 (en) 2016-04-28 2018-01-23 Vivante Corporation Calculating trigonometric functions using a four input dot product circuit
CN112650973B (zh) * 2019-10-11 2022-05-20 珠海格力电器股份有限公司 三角函数计算装置及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1331410A (en) * 1970-08-13 1973-09-26 Solartron Electronic Group Digital calculating apparatus for performing the cordic algo- rithm
US3766370A (en) * 1971-05-14 1973-10-16 Hewlett Packard Co Elementary floating point cordic function processor and shifter
US4077063A (en) * 1976-08-11 1978-02-28 The Singer Company Apparatus for rapidly determining the trigonometric functions of an input angle
JPS6029409B2 (ja) * 1978-02-03 1985-07-10 日本電気株式会社 三角関数計算装置
JPS6279522A (ja) * 1985-10-03 1987-04-11 Mitsubishi Electric Corp デイジタル関数計算装置

Also Published As

Publication number Publication date
DE3853379T2 (de) 1995-11-09
EP0297588A2 (en) 1989-01-04
EP0297588A3 (en) 1991-03-06
JPS6478323A (en) 1989-03-23
DE3853379D1 (de) 1995-04-27
EP0297588B1 (en) 1995-03-22
US4956799A (en) 1990-09-11

Similar Documents

Publication Publication Date Title
US5042001A (en) Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
JPH0776916B2 (ja) 疑似除算方式を用いた三角関数演算装置
US5184318A (en) Rectangular array signed digit multiplier
US11816448B2 (en) Compressing like-magnitude partial products in multiply accumulation
JP2504102B2 (ja) 逆三角関数演算装置
US5144576A (en) Signed digit multiplier
JP2822399B2 (ja) 対数関数演算装置
JP2508784B2 (ja) 指数関数演算装置
US6055553A (en) Apparatus for computing exponential and trigonometric functions
Villalba et al. Radix-4 vectoring cordic algorithm and architectures
Takagi Arithmetic unit based on a high-speed multiplier with a redundant-binary addition tree
Kucherov et al. Towards Optimizing Cloud Computing Using Residue Number System
JP2972326B2 (ja) 平方根計算装置
Kuhlmann et al. A novel CORDIC rotation method for generalized coordinate systems
JP2546916B2 (ja) 三角関数演算装置
Natarajan et al. Arithmetic Operations and Circuits
Brown Binary arithmetic
Hsu et al. FPGA Implementation of Floating Point Linear Programming
JPH06105421B2 (ja) 逆三角関数演算装置
Jimeno et al. A BCD-based architecture for fast coordinate rotation
Rasolofoson et al. Design of ALU and Code Converter Using Matrix Calculation
JPH04314126A (ja) 逆数発生装置
Mohan et al. Binary to residue conversion
Grisamore et al. Negative save sign extension for multi-term adders and multipliers
Muller et al. Evaluating Floating-Point Elementary Functions

Legal Events

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