JP2821849B2 - 高次方程式の求根装置 - Google Patents

高次方程式の求根装置

Info

Publication number
JP2821849B2
JP2821849B2 JP35447293A JP35447293A JP2821849B2 JP 2821849 B2 JP2821849 B2 JP 2821849B2 JP 35447293 A JP35447293 A JP 35447293A JP 35447293 A JP35447293 A JP 35447293A JP 2821849 B2 JP2821849 B2 JP 2821849B2
Authority
JP
Japan
Prior art keywords
register
stored
root
value
processing
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 - Lifetime
Application number
JP35447293A
Other languages
English (en)
Other versions
JPH07200544A (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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP35447293A priority Critical patent/JP2821849B2/ja
Publication of JPH07200544A publication Critical patent/JPH07200544A/ja
Application granted granted Critical
Publication of JP2821849B2 publication Critical patent/JP2821849B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はコンピュータ全般に関
し、特に、パーソナルコンピュータ、いわゆる関数電卓
など一般的なコンピュータに属する情報処理機器におい
て利用される高次方程式の求根装置に関する。
【0002】
【従来の技術】古来、1変数の非線形方程式の解法とし
て、「ニュートン法」や「二分法」などが用いられてい
る。たとえば次の高次代数方程式について考える。
【0003】
【数8】 式(1)は非線形方程式の一種であるから「ニュートン
法」や「二分法」で解くことができる。その他、高次代
数方程式専用の解法として、3次方程式については「カ
ルダノの方法」、4次方程式については「フェラリの解
法」などがある。このように、高次方程式の解法は種々
工夫されている。これら高次方程式の解法に望まれる事
項として次のようなものがある。 確実に解ける(失敗の可能性がない)。 精度の良い解が求まる。 短時間で(少ない計算量で)解ける。 機械的処理に適している。
【0004】この他、方程式(1)で、A≠0の場合で
も、A=0、B≠0の場合でも、またA=0、B=0、
C≠0の場合でも、すなわち5次方程式でも、4次方程
式でも、3次方程式でも同じ手法で解けるのであれば、
それも有用であると考えられる。もちろん2次方程式に
ついても同様である。
【0005】
【発明が解決しようとする課題】上述した4つの方法で
上記の方程式(1)を解く場合、以下のような問題点が
ある。方程式(1)の右辺を左辺に移項したものをf
(x)と置く。すなわち、
【0006】
【数9】 とする。 これら4つの解法では、得られる根の精度は四則計
算の精度に依存する。それら四則計算は通常サブルーチ
ンとして用いられる。しかもその計算には浮動小数点方
式による四則計算が必要である。それらの計算精度が8
桁であるとすれば、得られる根の精度もせいぜい8桁に
とどまる。仮に20桁の精度が必要な場合には、仮数部
として20桁の精度を有する四則計算結果が得られるサ
ブルーチンから作成を始めることが必要である。 逆に根の仮数部の精度がそれほど高く要求されない
場合には、次のような問題がある。たとえば仮数部の精
度が3桁でよい場合を考える。サブルーチンとして用い
る四則演算の精度が8桁であれば、得られる根の精度に
は問題がないが、仮数部を3桁求めればすむところを、
8桁まで求めるために無駄な計算処理に時間が費やされ
る。したがって計算処理をより効率的にするためには、
求められる精度に見合った四則計算結果がより速く得ら
れるサブルーチンを準備することが必要となる。
【0007】 上述の4つの方法でも、必要とされる
計算量は非常に多い。たとえばニュートン法では、1回
の反復計算で行なう計算は次のようなものである。
【0008】
【数10】 上述の式は、計算量が少なくなるように工夫されてはい
るものの、少なくとも10回の加減算と、9回の乗算
と、1回の除算とが必要である。二分法では1回の反復
計算で行なう計算は次の式により表わされる。
【0009】
【数11】 上の式から明らかなように、二分法でも6回の加減算
と、5回の乗算と、1回の除算とが必要である。ニュー
トン法と比較して、加減算の回数は減少してはいるもの
の、乗除算の回数が比較的多い。計算機において行なわ
れる乗算では、通常、被乗数または乗数の一方をカウン
ト値として用い、他方の数をその回数だけ加算する方法
が用いられる。たとえば「123×5」の乗算を行なう
場合には、「123」を5回加算する。「123×45
6」の乗算を行なう場合には、「123」を4回加算
し、加算結果を1桁上位へシフトし、さらに「123」
を5回加算する。さらにその加算結果を1桁上位へシフ
トし、「123」を6回加える。このように多数回の加
算により1つの積が得られる。
【0010】すなわち、1回の乗算で行なわれる加算の
回数は、カウント値として用いる数の各桁の数を加えた
数となる。「123×456」の乗算の場合には加算の
回数は、カウント値として用いる数(「456」)の各
桁の数を加えた数(「15」)となる。カウント値の各
桁の数の平均値を「5」と考えてもよいであろう。する
と、8桁の数と8桁の数との乗算1回は、40回の加算
に相当すると考えられる。もちろん、演算には他にシフ
ト処理、判定処理などが必要であるから、必ずしも上述
したとおりの比率で処理時間が変化するとは言えない
が、概略の傾向を知ることはできる。除算の場合にも同
様に考えることができる。すなわち除算の場合でも、仮
数部が8桁の商を得るには、少なくとも4回の減算が行
なわれる。
【0011】このような見積りに従って、上述のニュー
トン法および二分法で行なわれる加減算の総回数を考え
る。四則計算の処理桁数が8桁であるものとする。する
とニュートン法では、10回の加減算と9回の乗算と1
回の除算とが必要であることから、410回(10+9
×40+40)の加減算が必要である。また二分法で
は、同様に246回(6+5×40+40)の加減算が
必要である。周知のようにニュートン法、二分法のいず
れでも、根を得るまでには何回か反復計算を行なう必要
がある。仮に5回の反復で根が求められたとしても、ニ
ュートン法では2050回、二分法では1230回の加
減算を行なう必要がある。多くの場合より多数の反復が
必要であるし、またより高い精度が要求される場合もあ
る。そのような場合には、いずれの方法でも、必要とさ
れる加減算の回数は非常に大きな数となる。
【0012】カルダノの方法の場合には、ニュートン法
および二分法のような反復計算は不要である。しかし、
3次項の係数が「1」でない場合には、カルダノの方法
では少なくとも7回の加減算と20回の乗除算とが必要
となる。上述した見積りを適用すると、カルダノの方法
では807回(7+20×40)の加減算が必要であ
る。さらに、開平計算および立方根計算が1回ずつ必要
である。場合によってはその他にさらに、三角関数や逆
三角関数の計算も必要となる。したがってカルダノの方
法でも莫大な量の計算が必要となる。 計算量以外の問題点として次のような問題点もあ
る。これはニュートン法に特有の問題であるが、ニュー
トン法では、最初の近似値x1 のとり方が重要である。
仮に最初の近似値x1 が与えられても、その点から出発
して順次得られる値xk (k=1、2、…)が、方程式
の根に収束するという保証は得られない。したがって求
根に失敗する可能性が常に存在する。また、関数f
(x)の1次導関数f’(x)が「0」と等しくなるこ
とがあり、その点にも注意が必要である。
【0013】 二分法特有の問題として次のような問
題点がある。f(x)=0なる方程式を解く場合を考え
る。二分法ではまず準備として、f(a)<0である点
aと、f(b)>0である点bとを探す。そしてその中
点c=(a+b)/2で関数値f(c)を計算する。こ
の後反復計算が行なわれることになるが、上述したよう
な適当な点a、bを求めることは簡単なように見えるが
実は非常に難しい。たとえば次のような関数f(x)に
ついて考える。
【0014】
【数12】 この式において、因数分解された式を参照すればf
(a)<0となる点aを見出すことは容易である。たと
えばa=12344、または12348がそのような点
である。しかし、この式f(x)を展開した式から、こ
のような点aを見出すことは非常に難しい。また二分法
では|a−b|が大きくなるようにaおよびbを設定す
ればa、bはより見出しやすい。しかしこの場合には反
復計算の回数が増えることが容易にわかる。逆に|a−
b|が小さくなるように設定すれば反復回数はより少な
くなる。しかし上述したような条件を満たす点a、bを
見出すまでに相当の計算量が必要となる。また、二分法
の収束性はニュートン法に比べて劣るので、反復計算の
回数はより多くなる。
【0015】 フェラリの解法は、4次方程式を3次
方程式に変えたうえでカルダノの方法などを用いたもの
である。カルダノの方法やフェラリの解法では、反復計
算の必要がなく、代数的な手法で根を求めることができ
るという利点がある。しかしこれらの方法は他の次数の
方程式には利用できない。また前述したように、四則計
算の他に開平計算(2乗根)、立方根計算(3乗根)に
加え、場合によっては三角関数や逆三角関数の計算が必
要となる。したがってこの場合に必要とされる計算量も
相当多い。以上のように高次非線形方程式の解法として
は種々考案されているが、前述したような条件をすべて
満たしているものがあるとは言い難い。それゆえにこの
発明の目的は、精度の良い解を少ない計算量で確実に得
ることができ、かつ機械的処理に適している、高次方程
式の求根装置を提供することである。
【0016】
【課題を解決するための手段】請求項1に記載の高次方
程式の求根装置は、整数A、B、C、D、EおよびF
(ただしA・F≠0)を係数とする方程式「Ax5 +B
4 +Cx3 +Dx2 +Ex=F」の実根を求めるため
の装置であって、根の仮数部と、符号と、小数部の桁数
とを記憶するための第1の記憶手段と、整数A、B、
C、D、EおよびFを初期値として記憶するための、第
2の記憶手段RA、RB、RC、RD、REおよびRF
と、求めるべき根の仮数部の桁数Nを記憶するための第
3の記憶手段と、第2の記憶手段に記憶されている数と
所定の定数との積と、それらの積の和とを求めるための
第1の演算手段と、第1の演算手段により得られた積
と、積の和と、所定の手順により求められる所定の初期
値とを記憶するための複数個の第4の記憶手段と、第2
の記憶手段に記憶されている数のうち、所定のものに記
憶されている数の符号の正負または0の判定を行なうた
めの第1の判定手段と、第1の判定手段の判定結果に基
づき、第2の記憶手段に記憶されている数の少なくとも
一部と、第1の記憶手段に記憶されている根の符号とに
対してそれぞれ所定の処理を行なうための第2の演算手
段と、整数Nならびに第2の記憶手段に記憶されている
数A0、B0、C0、D0およびE0に基づいて、次の
式 f(N)=A0 ・105N+B0 ・104N+C0 ・103N
+D0 ・102N+E0・10N により表わされるf(N)の値を求めるための第3の演
算手段と、値f(N)と、第2の記憶手段RFに記憶さ
れている数F0との大小関係を判定するための第2の判
定手段と、第2の判定手段により、値f(N)が数F0
より小さいと判定されたことに応答して、不等式F0<
f(N+1)が成立するまで整数Nに1を加算するため
の第4の演算手段と、判定手段により、値f(N)が数
F0より大きいと判定されたことに応答して、不等式f
(N)<F0が成立するまで第2の記憶手段に記憶され
ている値をそれぞれ所定の桁数だけ上位方向にシフトす
るとともに、第1の記憶手段に記憶された根の小数部の
桁数を1増加させるための第5の演算手段と、複数個の
第4の記憶手段のうち、一方および他方の所定の2つの
第4の記憶手段に記憶された2つの数の大小関係に応じ
て、一方の第4の記憶手段に記憶された数から他方の第
4の記憶手段に記憶された数を減算し、複数個の第4の
記憶手段のうち、所定のもの同士の間で加算を行ない、
かつ第1の記憶手段に記憶された根の仮数部に1を加え
る第1の処理と、複数個の第4の記憶手段のうち、所定
のものに記憶された数を所定の桁数だけ下位方向にシフ
トし、複数個の第4の記憶手段のうち、所定のもの同士
の間で減算を行ない、かつ第1の記憶手段に記憶されて
いる数を1桁上位方向にシフトさせる第2の処理と、の
いずれかを選択的に行なうための第6の演算手段と、所
定の条件が成立するまで、第1から第6の演算手段と、
第1から第4の記憶手段と、第1から第2の判定手段と
を制御して動作させるための第1の制御手段とを含む。
【0017】請求項2に記載の高次方程式の求根装置
は、整数C、D、EおよびF(ただしC・F≠0)を係
数とする方程式「Cx3 +Dx2 +Ex=F」の実根を
求めるための装置であって、根の仮数部と、符号と、小
数部の桁数とを記憶するための第1の記憶手段と、整数
C、D、EおよびFを初期値として記憶するための、第
2の記憶手段RC、RD、REおよびRFと、求めるべ
き根の仮数部の桁数Nを記憶するための第3の記憶手段
と、第2の記憶手段に記憶されている数と所定の定数と
の積と、それらの積の和とを求めるための第1の演算手
段と、第1の演算手段により得られた積と、積の和と、
それらより所定の手順に従って得られる所定の初期値と
を記憶するための複数個の第4の記憶手段と、第2の記
憶手段に記憶されている数のうち、所定のものに記憶さ
れている数の符号の正負または0の判定を行なうための
第1の判定手段と、第1の判定手段の判定結果に基づ
き、第2の記憶手段に記憶されている数の少なくとも一
部と、第1の記憶手段に記憶されている根の符号とに対
してそれぞれ所定の処理を行なうための第2の演算手段
と、整数Nならびに第2の記憶手段に記憶されている数
C0、D0およびE0に基づいて、次の式 f(N)=C0 ・103N+D0 ・102N+E0 ・10N により表わされるf(N)の値を求めるための第3の演
算手段と、値f(N)と、第2の記憶手段RFに記憶さ
れている数F0との大小関係を判定するための第2の判
定手段と、第2の判定手段により、値f(N)が数F0
より小さいと判定されたことに応答して、不等式F0<
f(N+1)が成立するまで整数Nに1を加算するため
の第4の演算手段と、判定手段により、値f(N)が数
F0より大きいと判定されたことに応答して、不等式f
(N)<F0が成立するまで第2の記憶手段に記憶され
ている値をそれぞれ所定の桁数だけ上位方向にシフトす
るとともに、第1の記憶手段に記憶された根の小数部の
桁数を1増加させるための第5の演算手段と、複数個の
第4の記憶手段のうち、一方および他方の所定の2つの
第4の記憶手段に記憶された2つの数の大小関係に応じ
て、一方の第4の記憶手段に記憶された数から他方の第
4の記憶手段に記憶された数を減算し、複数個の第4の
記憶手段のうち、所定のもの同士の間で加算を行ない、
かつ第1の記憶手段に記憶された根の仮数部に1を加え
る第1の処理と、複数個の第4の記憶手段のうち、所定
のものに記憶された数を所定の桁数だけ下位方向にシフ
トし、複数個の第4の記憶手段のうち、所定のもの同士
の間で減算を行ない、かつ第1の記憶手段に記憶されて
いる数を1桁上位方向にシフトさせる第2の処理と、の
いずれかを選択的に行なうための第6の演算手段と、所
定の条件が成立するまで、第1から第6の演算手段と、
第1から第4の記憶手段と、第1から第2の判定手段と
を制御して動作させるための第1の制御手段とを含む。
【0018】請求項3に記載の高次方程式の求根装置
は、整数D、EおよびF(ただしD・F≠0)を係数と
する方程式「Dx2 +Ex=F」の実根を求めるための
装置であって、根の仮数部と、符号と、小数部の桁数と
を記憶するための第1の記憶手段と、整数D、Eおよび
Fを初期値として記憶するための、第2の記憶手段R
D、REおよびRFと、求めるべき根の仮数部の桁数で
ある整数Nを記憶するための第3の記憶手段と、第2の
記憶手段に記憶されている数と所定の定数との積と、そ
れらの積の和とを求めるための第1の演算手段と、第1
の演算手段により得られた積と、積の和と、それらより
所定の手順に従って得られる所定の初期値とを記憶する
ための複数個の第4の記憶手段と、第2の記憶手段に記
憶されている数のうち、所定のものに記憶されている数
の符号の正負または0の判定を行なうための第1の判定
手段と、第1の判定手段の判定結果に基づき、第2の記
憶手段に記憶されている数の少なくとも一部と、第1の
記憶手段に記憶されている根の符号とに対してそれぞれ
所定の処理を行なうための第2の演算手段と、整数Nな
らびに第2の記憶手段に記憶されている数D0およびE
0に基づいて、次の式 f(N)=D0 ・102N+E0 ・10N により表わされるf(N)の値を求めるための第3の演
算手段と、値f(N)と、第2の記憶手段RFに記憶さ
れている数F0との大小関係を判定するための第2の判
定手段と、第2の判定手段により、値f(N)が数F0
より小さいと判定されたことに応答して、不等式F0<
f(N+1)が成立するまで整数Nに1を加算するため
の第4の演算手段と、判定手段により、値f(N)が数
F0より大きいと判定されたことに応答して、不等式f
(N)<F0が成立するまで第2の記憶手段に記憶され
ている値をそれぞれ所定の桁数だけ上位方向にシフトす
るとともに、第1の記憶手段に記憶された根の小数部の
桁数を1増加させるための第5の演算手段と、複数個の
第4の記憶手段のうち、一方および他方の所定の2つの
第4の記憶手段に記憶された2つの数の大小関係に応じ
て、一方の第4の記憶手段に記憶された数から他方の第
4の記憶手段に記憶された数を減算し、複数個の第4の
記憶手段のうち、所定のもの同士の間で加算を行ない、
かつ第1の記憶手段に記憶された根の仮数部に1を加え
る第1の処理と、複数個の第4の記憶手段のうち、所定
のものに記憶された数を所定の桁数だけ下位方向にシフ
トし、複数個の第4の記憶手段のうち、所定のもの同士
の間で減算を行ない、かつ第1の記憶手段に記憶されて
いる数を1桁上位方向にシフトさせる第2の処理と、の
いずれかを選択的に行なうための第6の演算手段と、所
定の条件が成立するまで、第1から第6の演算手段と、
第1から第4の記憶手段と、第1から第2の判定手段と
を制御して動作させるための制御手段とを含む。
【0019】請求項4に記載の高次方程式の求根装置
は、請求項1記載の装置であって、整数がA=0および
B・F<0なる第1の条件またはA=B=C=0および
D・F<0なる第2の条件を満たすか否かを判定するた
めの第3の判定手段と、第3の判定手段により第1の条
件または第2の条件が満足されたと判定されたことに応
答して、整数のC、DおよびEと、整数A〜Fより生成
される8BD−3C2 および8B2 E+C3 −4BCD
の符号を判定するための第4の判定手段と、第4の判定
手段の判定結果に従って、第1の制御手段による制御を
部分的に変更するための第2の制御手段と、第2の記憶
手段に記憶されている数A0、B0、C0、D0、E0
およびF0より生成される以下の4つの数 A0 ・105N+B0 ・104N+C0 ・103N+D0 ・1
2N+E0 ・10N −F0 4B0 ・103N+3C0 ・102N+2D0 ・10N +E
0 6B0 ・102N+3C0 ・10N +D0 4B0 ・10N +C0 の符号を判定するための第5の判定手段と、第4の記憶
手段に格納されている所定の5つの数の間に定義される
加算または減算結果の符号を判定するための第2の判定
手段とをさらに含む。
【0020】請求項5に記載の高次方程式の求根装置
は、整数B、C、D、EおよびF(ただしB・F≠0)
を係数とする方程式「Bx4 +Cx3 +Dx2 +Ex=
F」の実根を求めるための装置であって、根の仮数部
と、符号と、小数部の桁数とを記憶するための第1の記
憶手段と、整数B、C、D、EおよびFを初期値として
記憶するための、第2の記憶手段RB、RC、RD、R
EおよびRFと、求めるべき根の仮数部の桁数Nを記憶
するための第3の記憶手段と、第2の記憶手段に記憶さ
れている数と所定の定数との積と、それらの積の和とを
求めるための第1の演算手段と、第1の演算手段により
得られた積と、積の和と、所定の手順により求められる
所定の初期値とを記憶するための複数個の第4の記憶手
段と、第2の記憶手段に記憶されている数のうち、所定
のものに記憶されている数の符号の正負または0の判定
を行なうための第1の判定手段と、第1の判定手段の判
定結果に基づき、第2の記憶手段に記憶されている数の
少なくとも一部と、第1の記憶手段に記憶されている根
の符号とに対してそれぞれ所定の処理を行なうための第
2の演算手段と、整数Nならびに第2の記憶手段に記憶
されている数B0、C0、D0およびE0に基づいて、
次の式 f(N)=B0 ・104N+C0 ・103N+D0 ・102N
+E0 ・10N により表わされるf(N)の値を求めるための第3の演
算手段と、値f(N)と、第2の記憶手段RFに記憶さ
れている数F0との大小関係を判定するための第2の判
定手段と、第2の判定手段により、値f(N)が数F0
より小さいと判定されたことに応答して、不等式F0<
f(N+1)が成立するまで整数Nに1を加算するため
の第4の演算手段と、判定手段により、値f(N)が数
F0より大きいと判定されたことに応答して、不等式f
(N)<F0が成立するまで第2の記憶手段に記憶され
ている値をそれぞれ所定の桁数だけ上位方向にシフトす
るとともに、第1の記憶手段に記憶された根の小数部の
桁数を1増加させるための第5の演算手段と、複数個の
第4の記憶手段のうち、一方および他方の所定の2つの
第4の記憶手段に記憶された2つの数の大小関係に応じ
て、一方の第4の記憶手段に記憶された数から他方の第
4の記憶手段に記憶された数を減算し、複数個の第4の
記憶手段のうち、所定のもの同士の間で加算を行ない、
かつ第1の記憶手段に記憶された根の仮数部に1を加え
る第1の処理と、複数個の第4の記憶手段のうち、所定
のものに記憶された数を所定の桁数だけ下位方向にシフ
トし、複数個の第4の記憶手段のうち、所定のもの同士
の間で減算を行ない、かつ第1の記憶手段に記憶されて
いる数を1桁上位方向にシフトさせる第2の処理と、の
いずれかを選択的に行なうための第6の演算手段と、所
定の条件が成立するまで、第1から第6の演算手段と、
第1から第4の記憶手段と、第1から第2の判定手段と
を制御して動作させるための第1の制御手段とを含む。
【0021】
【作用】本発明に記載の高次方程式の求根装置では、根
の仮数部を導出する処理は固定小数点方式による加減算
とシフト処理のみである。したがって他の計算機能、す
なわち四則計算や開平計算などのサブルーチンやライブ
ラリには原則として依存する必要がない。また、必要と
する計算量が少ないので、従来よりも大幅に短い計算時
間で前述の式(1)の根を求めることができる。また根
の精度を任意に設定して、その精度の根が得られた時点
で計算処理を打ち切ることができる。さらに、次数にか
かわらず同様の手法で実根を求めることができる。ま
た、必要に応じて計算処理を並列に行なわせることがで
きるため、処理を高速化でき、機械的処理に適してい
る。
【0022】
【実施例】
[解法の説明]まず、本発明の高次方程式の求根装置に
ついて用いられる高次方程式の解法の概略を説明する。
与えられた方程式を次の式(1)とする。
【0023】
【数13】 求めるべき根の仮数部の桁数を(N+1)桁とする。 方程式(1)の係数A、B、C、D、EおよびFは
整数であり、かつF≠0であるものとする。与えられた
方程式の係数が小数部をもつ場合もあり得る。そのよう
な場合、容易に想定できる或る数を係数AからFに掛け
ることにより係数を整数化することができる。もちろ
ん、この処理によって根の値が影響されることはない。
F=0の場合には方程式(1)はx=0という根を持つ
ことが容易にわかる。x=0という根以外の根を必要と
する場合には、次の方程式(3)を解けばよい。
【0024】
【数14】 方程式(3)は、方程式(1)の両辺をxで割って得ら
れる方程式である。この式(3)は、式(1)において
A=0とし、Bの代わりにA、Cの代わりにB、Dの代
わりにC、Eの代わりにD、Fの代わりに−Eを代入し
て得られるものである。 方程式(1)は少なくとも1つの実根を持つものと
する。方程式(1)が5次方程式あるいは3次方程式の
場合には、実根を持つことが保証されている。しかし4
次方程式または2次方程式の場合には、係数の値によっ
ては実根を持つ場合とそうでない場合とがある。ここで
は、簡単のために、4次方程式でも2次方程式でも実根
を持つことが保証されているものとする。
【0025】 最終的に求めるべき根の仮数部の桁数
は(N+1)で与える。仮数部として(n+1)桁目以
降を切り捨てたn桁を求める場合は、N=n−1、(n
+1)桁目を四捨五入する場合にはN=nとする。四捨
五入する場合には、求めるべき根の仮数部の桁数よりさ
らに1桁多く求める必要があるためである。たとえば、
実根の仮数部として11桁目を四捨五入して上位10桁
を必要とする場合には、N=10と設定する。なお、以
下の説明では根の仮数部は少なくとも2桁以上求めるこ
ととする。方程式(1)と桁数を定める整数Nとが与え
られたとき、本発明による求根装置から得られるもの
は、与えられる係数によって異なってくる。それを次の
表1に示す。
【0026】
【表1】 表1においてアスタリスク(*)が付されているのは、
実根を持つことが保証されている場合のみについてであ
ることを示す。なお、上記6)の場合には、F・B<0
のときには根(4乗根)は求められない。また8)の場
合、F・D<0のときには根(2乗根)は求められな
い。なお、5)は1)の、6)は2)の、7)は3)
の、4)は8)のそれぞれ特殊な場合である。 [図面の概略構成] (1) 図1から図68 本発明の第1の実施例の求根装置のブロック図である。
装置において行なわれている処理をわかりやすく表現す
るために、共用しても差し支えがないような回路につい
てもあえて別個の回路として表記している。たとえばこ
の図1〜図68に示される装置では、合計して4個の加
減算器と37個の加算器と11個の減算器とを用いてい
るが、加算、減算をすべて直列的に1つずつ順に行なう
場合には、1個の加減算器のみがあればよい。しかし、
図に示すように別個の回路とすれば、前述のごとく処理
を並列的に行なうことができ、より高速化に適した装置
を実現できる。判定回路やその判定内容についても加減
算処理と同様である。
【0027】(2) 図69 本発明の第1の実施例の求根装置の概略の処理手順を示
したものである。 (3) 図70から図82および図91から図94 第69図の各ステップ内で行なわれる処理の流れをより
詳細に示したものである。なお、これらのフローチャー
トおよび本願明細書に添付された図面中に記載された他
のフローチャートのすべてにおいて、「判断」を示すブ
ロック(菱形)の中には、分岐するための条件が記載さ
れている。そしてその条件が満たされているときには、
制御は菱形の水平方向に出る矢印に沿って進む。条件が
満たされていないときには菱形の下に出る矢印に沿って
制御が進む。 (4) 図83から図84 これらの図は、初期値の設定のステップで、後述するレ
ジスタR0〜R5、R6A〜R6D、R7〜R25の合
計29個のレジスタに設定される初期値の有無およびそ
の値についてそれぞれ示したものである。解こうとする
方程式の次数により、図83に示されるように必要とな
るレジスタが異なってくる。5次方程式の根を得る場合
には29個のレジスタすべてが必要となる。しかし、た
とえば最大でも3次方程式のみを解けばよい場合には、
8個のレジスタ(R0〜R3、R6C、R6D、R7お
よびR8)のみでよい。3乗根を求める場合にのみこの
装置を用いるのであれば、さらに1個少ない7個のレジ
スタのみでよい。
【0028】図84は、各レジスタに設定する数を仮数
部と指数部とに分けて示してある。1つのレジスタに設
定される値は、そのレジスタに対応する行に記載された
数の和である。なお、図83において*1で示されてい
る5次方程式の場合、4次、3次、2次方程式も解くこ
とができる。また*2で示される4次方程式の場合に
は、3次、2次方程式を解くこともできる。また*3で
示される3次方程式の場合には、2次方程式をも解くこ
ともできる。さらに*4で示される5乗根を求める場合
には、レジスタR6B、R6C、R6Dを追加すれば、
4乗根、3乗根、2乗根を解くこともできる。また*5
で示される4乗根を求める場合には、レジスタR6C、
R6Dを追加すれば、3乗根、2乗根を求めることもで
きる。最後に*6で示される3乗根を求める場合には、
レジスタR6Dを追加すれば2乗根を求めることができ
る。
【0029】また図84においてA、B、C、Dおよび
Eはそれぞれ、式(1)の係数でありレジスタRA、R
B、RC、RDおよびREに記憶されている数を示す。
また図84において仮数部、指数部がともに空白となっ
ている部分のレジスタの値は「0」である。たとえばレ
ジスタR8には、図84から次の値が初期値として設定
されることがわかる。
【0030】
【数15】 (5) 図85から図90 上述の仮数部を各係数から生成する手順を示したもので
ある。 (6) 図98から図100 たとえば図91のステップS0407で行なわれる処理
KCについて、どのレジスタ間にどの演算器によりどの
ような演算が行なわれ、どこに格納されるかを詳細に示
した図である。 (7) 図101から図108 たとえば図91のステップS0411で行なわれる処理
KDについて、どのようなレジスタ間に、どのような演
算器によりどのような演算が行なわれ、どのレジスタに
その値が格納されるかを詳細に示した図である。
【0031】(8) 図109から図137 本発明の第2の実施例の求根装置であって、与えられる
方程式が3次方程式に限定されているもののブロック図
である。 (9) 図138から図145 第2の実施例の装置で行なわれる処理の概略手順を示
す。 (10) 図146から図151 第2の実施例の処理KCおよび処理KDの内容をより詳
細に示すものである。 (11) 図152から図154 第2の実施例の装置をより簡略化して示したものであ
る。第1の実施例 図1は、本発明の第1の実施例の求根装置のブロック図
である。図1を参照してこの装置は、前述した方程式
(1)の係数A、B、C、D、Eおよび定数Fや、それ
らがシフトされたものを記憶するためのレジスタを有
し、それらレジスタの値に基づいて一定の判定処理を行
なうための初期値格納部212と、初期値格納部212
内の各レジスタに従い、予め定める定数との積や、それ
らの積の和や、それらから所定の手順に従って得られる
所定の初期値を自己のレジスタ内に格納するためのレジ
スタ初期値設定部214と、初期値格納部212からの
判定結果およびレジスタ初期値設定部214からの判定
結果に従って、各レジスタ内で行なわれる処理のための
条件を判定する条件判定部216と、各レジスタの内容
をシフトする回数を制御するためのシフト回数制御部2
18と、一定の終了条件が成立したかどうかを判定し、
それによって根を求める処理を終了するか否かを定める
ための終了条件判定部220と、選択処理判定部222
と、これら各部212、214、216、218、22
0および222の出力に従ってこれら各部を制御するた
めの制御部210とを含む。なお、この装置200の各
部については、各部の主たる機能に従った名称を付して
いるが、それ以外の処理についても各部では実行してい
ることに注意すべきである。それらの詳細については以
後の説明から明らかとなるだろう。
【0032】以下、回路の詳細について説明するが、そ
の前にこの回路内に用いられている主な構成要素につい
て予め簡単に説明しておく。 (1) レジスタRA〜RF 与えられた係数やそれがシフトされたものを記憶するた
めのレジスタである。 (2) レジスタR0〜R5、R6A〜R6D、R7〜
R25 仮数部を求めるために用いられるレジスタである。 (3) レジスタRw1〜Rw5 後述する符号S1〜S4およびレジスタR1〜R25
(ただしR7、R20、R23を除く。)に設定する数
を求めるために用いるレジスタである。各レジスタにつ
いては、遅延用レジスタが設けられており、その遅延用
レジスタを用いてそれぞれ所定の桁数についてそれぞれ
のレジスタの内容を上位方向にシフトできる構造になっ
ている。たとえばレジスタRw1については5桁、レジ
スタRw2については1〜4桁、レジスタRw3につい
ては1〜3桁、レジスタRw4については1〜2桁、レ
ジスタRw5については1桁それぞれ上位方向にシフト
できる。n桁上位方向にシフトした場合、その値をたと
えばRw2<n>として表わす。他のレジスタも同様で
ある。
【0033】以上のレジスタRA〜RF、R0〜R5、
R6A〜R6D、R7〜R25、Rw1〜Rw5の各々
は仮数部と符号とを記憶する。小数点位置を記憶する必
要はない。したがって、これらのレジスタでは整数のみ
が取扱われる。なお、これらのレジスタの桁数は十分長
いものとする。その長さは、必要とする根の仮数部の最
大桁数や係数の仮数部の桁数によって定まる。 (4) 遅延用レジスタ 本実施例の装置では、或る数と整数「N」とを与え、そ
の或る数と10N とを掛ける処理がしばしば現われる。
この処理を迅速に行なうために、その或る数を、その或
る数が記憶されているレジスタ内において上位方向にシ
フトする方法をとっている。そのために、レジスタ内の
値をシフト桁数だけ遅延用レジスタを通すことによりこ
のシフトが実現されている。遅延用レジスタはそのため
の1桁のレジスタである。遅延用レジスタは上述したレ
ジスタの大部分と、後述するレジスタXAとに1個ない
し5個付加されている。たとえば或る数に105Nを掛け
る場合には、5N桁そのある数を上位方向にシフトす
る。すなわち遅延用レジスタを用いて、その或る数が格
納されているレジスタの内容を5桁シフトすることをN
回繰返せばよい。
【0034】(5) フラグYG 処理の流れを条件により変更させるためのフラグであ
る。フラグYGは0、1、2のいずれかの数を記憶す
る。この処理の流れの変更は、与えられる方程式が偶数
次である場合に、確実に根が得られるようにするための
ものである。 (6) レジスタXA 根の仮数部を記憶するためのレジスタである。1桁分の
遅延用レジスタを有している。レジスタXAの長さは、
求めるべき根の仮数部の最大桁数によって決められる。
この実施例では十分な桁長のレジスタXAが確保されて
いるものとする。 (7) レジスタXS 根の符号を記憶するためのレジスタである。その記憶内
容は「+」または「−」のいずれかである。
【0035】(8) レジスタXD レジスタXAに求められる根の仮数部のうちの小数点部
の桁数を記憶するためのレジスタである。レジスタXA
に求められる根の仮数部は整数であるが、レジスタXD
はレジスタXAに記憶された値のうち下何桁が小数部で
あるかを記憶する。2桁あれば十分であると考えられ
る。 (9) レジスタN 当初、求めるべき根の仮数部の桁数より「1」だけ小さ
い数を記憶するためのレジスタである。2桁あれば十分
であると考えられる。 (10) レジスタNN シフト処理を制御する際に用いられるカウンタである。
レジスタNNにシフトする回数を記憶し、シフトを1回
行なうごとに「1」を減ずる。そしてレジスタNNの値
が0となったときにシフト処理を停止する。
【0036】たとえば符号S1を得るときには、後述す
るようにRA・105Nが必要となる。この場合次のよう
にしてこの演算が行なわれる。まず、レジスタRAの内
容をレジスタRw1に、レジスタNの内容をレジスタN
Nにそれぞれ格納する。NN≠0ならばレジスタRw1
の内容を5桁上位方向へシフトし、レジスタNNの値か
ら「1」を減じる。この処理をレジスタNNの値が0と
なるまで繰返す。NN=0となったときには、レジスタ
RAに記憶されていた数を「105N」倍したものがレジ
スタRw1に得られる。すなわちレジスタRw1にはR
A・105Nが格納されている。 (11) 加減算器 図において左側に2つの入力、右側に1つの出力を有
し、「±」を付して示されている。左側の上方の入力か
ら与えられる数を被加減数、左側の下方から入力される
数を加減数として加減算を行ない、その結果(和または
差)を右側より出力する。加算器として動作するか、減
算器として動作するかは制御信号に従う。すなわち、制
御信号が与えられると減算器として、与えられないとき
は加算器として動作する。被加減数、加減数の符号は問
わない。
【0037】(12) 加算器 図において左側に2つの入力を、右側に1つの出力を有
し、かつ「+」を付したブロックとして示されている。
左側の上方から入力される数を被加数、左側の下から入
力される数を加数として加算を行ない、その結果(和)
を右側から出力する。被加数、加数の符号を問わないの
は同様である。 (13) 減算器 図において、左側に2つの入力を、右側に1つの出力を
有し、かつ「−」を付したブロックとして示されてい
る。左側の上方から入力される数を被減数、左側の下か
ら入力される数を減数として減算を行ない、その結果
(差)を右側から出力するためのものである。被減数、
減数の符号を問わないのは同様である。
【0038】(14) 乗算器 図において、左側に2つの入力を、右側に1つの出力を
有し、かつ「×」を付したブロックとして示されてい
る。左側から与えられる被乗数および乗数の積を右側か
ら出力する。被乗数および乗数の符号を問わないのは同
様である。 (15) 判定回路 図において、「JS」または「JH」で始まる名称を付
されたブロックとして示されている。「JS」で始まる
ものは、左側から与えられる数の符号を、場合によって
は「0」であるか否かも含めて判定するためのものであ
り、「JH」で始まるものは、入力された2個の値につ
いてその大小を判定するためのものである。
【0039】(16) セレクタ 図中において、左側に複数の入力、右側に1つの出力を
有し、かつ「S」で示されるブロックは、制御信号に従
って、入力のうちのいずれか1つを選択して右側に出力
するためのものである。これらセレクタの中には、レジ
スタの符号を反転させたり、あるいは特定の符号を設定
したりする処理を選択して行なうためのものもあるが、
説明を簡単にするためにすべて「セレクタ」として表記
した。 [個々の回路の説明]図2を参照して、初期値格納部2
12は回路230および232を含む。回路230およ
び232の詳細はそれぞれ図3および図10に示されて
いる。図3を参照して、回路230は6つの回路部分2
40、242、244、246、248および250を
含む。
【0040】図4を参照して、回路240はセレクタ2
60とレジスタ262と判定回路264とを含む。セレ
クタ260は、制御信号に応答してレジスタ262の格
納内容を再びレジスタ262に格納させるか、あるいは
レジスタ262内の数値の符号を反転させるためのもの
である。レジスタ262については前述した。以下、こ
れらレジスタについての説明は繰返さないこととする。
判定回路264は、RAが正か、および0と等しくない
かを判定して信号JS1aを出力するためのものであ
る。なお、以下ではレジスタ262をレジスタRA、そ
の値を単にRAと呼ぶことがある。他のレジスタも同様
である。図5を参照して、回路242は、セレクタ27
0とレジスタ272と遅延用レジスタ274と判定回路
276とを含む。セレクタ270はレジスタ272およ
び遅延用レジスタ274の出力との一方を選択してレジ
スタ272に格納させるか、あるいはレジスタ272内
のデータの符号を反転させるためのものである。判定回
路276は、RBが正か、および0でないかを判定し判
定信号JS2aを出力するためのものである。
【0041】図6を参照して、回路244は、セレクタ
280とレジスタ282と2つの遅延用レジスタ284
および286と判定回路288とを含む。セレクタ28
0は、レジスタ282の出力と、レジスタ286の出力
との一方を選択してレジスタ282に格納するか、ある
いはレジスタ282の格納データの符号を反転させるた
めのものである。判定回路288は、RCの値が0以上
か、0と等しいないか、0未満かを判定して判定信号J
S3aを出力するためのものである。図7を参照して、
回路246は、セレクタ290とレジスタ292と、3
つの遅延用レジスタ294、296および298と、判
定回路300とを含む。判定回路300は、RDの値が
0でないか、0以上か、0未満かを判定して判定信号J
S4aを出力するためのものである。
【0042】図8を参照して、回路248は、セレクタ
310と、レジスタ312と、4つの遅延用レジスタ3
14、316、318および320と、判定回路322
とを含む。判定回路322は、REの値が0以上か、0
未満かを判定して判定信号JS5aを出力するためのも
のである。図9を参照して、回路250は、セレクタ3
30と、レジスタ332と、5つの遅延用レジスタ33
4、336、338、340および342と、判定回路
344とを含む。判定回路344は、RFの値が0未満
かどうかを判定し、判定信号JS6aを出力するための
ものである。図10を参照して、図2に示される回路部
分232は、4つの回路350、352、354および
356を含む。以下これらについて図11〜図14を参
照して説明する。
【0043】図11を参照して、回路350は、セレク
タ360と、レジスタ362と、判定回路364とを含
む。セレクタ360は3つの定数0、1および2のいず
れか1つをレジスタ362中のフラグYGとして格納す
るためのものである。判定回路364は、フラグYGの
値が0か1かを判定して判定信号JS7aを出力するた
めのものである。図12を参照して、回路352はセレ
クタ370とレジスタ372とを含む。セレクタ370
は、レジスタ372に格納されている、根の仮数部の符
号を示す値XSに+を設定するか、あるいは符号を反転
するかいずれか一方の処理を選択して行なうためのもの
である。図12を参照して、回路354は、セレクタ3
80、384および388と、レジスタ382、390
および394と、加減算回路386および396と、判
定回路392とを含む。
【0044】セレクタ380は定数「0」、レジスタ3
82の出力、または加減算回路386の出力のいずれか
1つを選択してレジスタ382に根の仮数部の小数部の
桁数XDとして格納するためのものである。セレクタ3
84は定数「1」またはレジスタ390に格納された求
める根の桁数より1つ少ない値Nのいずれか一方を選択
して加減算回路386に与えるためのものである。セレ
クタ388は、上述の値N、レジスタ394に格納され
ている値NA、または加減算回路396の出力のいずれ
か1つを選択してセレクタ390に格納するためのもの
である。レジスタ394は、後述する係数処理でも述べ
るが、求める根の仮数部の桁数として入力されたNの値
が、係数処理を行なうことにより大きくなることを防ぐ
ためのレジスタである。このような問題は、与えられた
方程式の根の整数部の桁数がNの値より大きいときに発
生する。たとえば根が123456となるにもかかわら
ず、N=4とした場合である。レジスタ394には、係
数処理を行なう前にレジスタ390に格納されている値
Nを待避し、後述する仮数部の導出処理を行なう直前に
その内容を再びレジスタ390に戻す。こうした処理を
行なうことによりNの値が大きくなることが防がれる。
【0045】加減算回路386および396はそれぞ
れ、図1に示す制御部210の制御により加算回路また
は減算回路として動作する。加減算回路386は、レジ
スタ382の出力とセレクタ384の出力との和または
差をとりセレクタ380に与える。セレクタ396はレ
ジスタ390の出力と定数「1」との和または差をとり
セレクタ388に与える。判定回路392は、レジスタ
390に格納されている数Nが0と等しいかどうかを判
定し、判定信号JS8aを出力するためのものである。
図14を参照して、回路356は、セレクタ400とレ
ジスタ402と遅延用レジスタ404と加算回路406
とを含む。セレクタ400は、定数「0」と、遅延用レ
ジスタ404の出力と、レジスタ402の出力と、加算
回路406の出力とのいずれか1つを選択してレジスタ
402に値XAとして格納するためのものである。値X
Aは根の仮数部の絶対値を示す。加算器406は、レジ
スタ402の格納内容XAと定数「1」とを加算してセ
レクタ400に与えるためのものである。
【0046】図15を参照して、図1に示されるレジス
タ初期値設定部214は回路部分410、412、41
4、416、418、420、422、424、42
6、428および430を含む。以下各回路部分につき
図16〜図26を参照して説明する。なおこのレジスタ
初期値設定部214には、図1に示される初期値格納部
212から、前述の方程式(1)の係数の初期値または
それらをシフトした値が格納されたレジスタRA〜RF
の内容が与えられる。図16を参照して、回路410は
加算器440を含む。加算器440の2つの入力には値
RDが与えられる。加算器440はしたがって、値2R
Dを出力する。図17を参照して、回路412は2つの
加算器442および444を含む。加算器442の2つ
の入力には値RCが与えられる。したがって加算器44
2は値2RCを出力する。加算器444の2つの入力の
一方は加算器442の出力に接続されている。他方の入
力には値RCが与えられる。加算器444はしたがっ
て、値3RCを出力する。
【0047】図18を参照して、回路414は3つの加
算器448、450および452を含む。加算器448
は値RBを受けて値2RBを出力する。加算器450は
値2RBを受けて値4RBを出力する。加算器452は
加算器448から値2RBを、加算器450から値4R
Bを受けて値6RBを出力する。図19を参照して、回
路416はセレクタ460とレジスタ462と遅延用レ
ジスタ464とを含む。セレクタ460は、値REと、
図15に示される回路428が出力する値AG3と、レ
ジスタ462の出力と、遅延用レジスタ464の出力と
のいずれか1つを選択してレジスタ462に格納するた
めのものである。このレジスタ462(Rw5)につい
ては前述しているが、これも含めてレジスタRw1〜R
w5は、後述する符号S1〜S4およびレジスタR1〜
R25に設定する数を求めるために用いるレジスタであ
る。遅延用レジスタ464を用いることで、レジスタ4
62の格納内容は上位方向に1桁シフトできる。図20
〜図23に示されるレジスタRw1〜Rw4についても
同様である。
【0048】図20を参照して、回路418は、セレク
タ470とレジスタ472と2つの遅延用レジスタ47
4および476とを含む。セレクタ470は、図15に
示される回路428から出力される値AG3と、RD
と、図15に示される回路410から出力される値2R
Dと、レジスタ472の出力と、遅延用レジスタ474
および476のそれぞれの出力とのいずれか1つを選択
してレジスタ472に格納させるためのものである。図
21を参照して、回路420は、セレクタ480とレジ
スタ482と遅延用レジスタ484、486および48
8とを含む。セレクタ480は、値RAおよびRCと、
図15に示される回路412から与えられる値3RC
と、レジスタ482の出力と、遅延用レジスタ484、
486および488のそれぞれの出力とのいずれか1つ
を選択してレジスタ482に格納させるためのものであ
る。遅延用レジスタ488の出力Rw3<3>とレジス
タ482の出力Rw3とは、いずれも図15に示される
回路428に与えられる。
【0049】図22を参照して、回路422はセレクタ
490とレジスタ492と4つの遅延用レジスタ49
4、496、498および500とを含む。セレクタ4
90は、RA、RB、RCおよびRDと、図15に示さ
れる回路414から与えられる値6RBおよび4RB
と、図15の回路428から与えられる値AG3と、図
15の回路416の出力する値Rw5と、レジスタ49
2の出力と、遅延用レジスタ494、496、498お
よび500のそれぞれの出力とのいずれか1つを選択し
てレジスタ492に格納させるためのものである。遅延
用レジスタ494、496、498および500により
シフトされた値Rw2と、レジスタ492の出力する値
Rw2とは、いずれも図15に示される回路428に与
えられる。図23を参照して、図15に示される回路4
24は、セレクタ500と、レジスタ502と、5つの
遅延用レジスタ504、506、508、510および
512とを含む。セレクタ500は、値RAと、レジス
タ502の出力と、最終段の遅延用レジスタ512の出
力とのいずれか1つを選択してレジスタ502に与える
ためのものである。
【0050】図24を参照して、回路426は加算器5
20を含む。加算器520は、図15に示される回路4
16および418から与えられる2つの値Rw4および
Rw5を加算して図15に示される回路430に与える
ためのものである。図25を参照して、図15に示され
る回路428は、2つのセレクタ530および532
と、加減算器534とを含む。セレクタ530は、Rw
2と、回路422(図15参照)により1桁ないし4桁
上位方向にシフトされた値Rw2と、図15の回路41
8から出力される値Rw4とのいずれか1つを選択して
加減算器534の入力に与えるためのものである。セレ
クタ532は、回路422からの値Rw2と、回路42
0からの値Rw3およびそれが3桁上位方向にシフトさ
れた値Rw3<3>と、回路418から与えられる値R
w4と、回路416から与えられる値Rw5とのいずれ
か1つを選択して加減算器534の下側入力に与えるた
めのものである。加減算器530は、制御信号により加
算器または減算器として動作する。加算器として動作す
る場合には、加減算器534は2つの入力の値を加算し
て右側に値AG3として出力する。減算器として動作す
る場合には、加減算器534は、セレクタ530の出力
からセレクタ532の出力を減算して値AG3として出
力する。この値AG3は、図15に示される回路422
と、418と、416とにそれぞれ与えられる。
【0051】図26を参照して、図15の回路430
は、2つの加算器540および544と、減算器542
と、判定回路546とを含む。加算器540は、値Rw
1と値AG3とを加算して加算器594に与える。減算
器542は、図24に示される回路426から与えられ
る値Rw4+Rw5から値RFを減算して加算器544
の他方の入力に与える。加算器544は加算器540の
出力と減算器542の出力とを加算して値A9として出
力する。判定回路546はこの値A9の符号を判定する
ことにより判定信号JS9aを出力する。判定信号JS
9aは、符号S1、S2、S3およびS4を示す。ただ
し、動作タイミングにより、この判定信号JS9aが上
述の符号S1、S2、S3およびS4のいずれを示すか
が異なっている。すなわち図1に示される制御部210
は、自己が実行している命令により、この判定信号JS
9aの意味を判別し、符号S1〜S4を判定する。
【0052】図27を参照して、図1に示される条件判
定部216は次のような構造を有する。すなわち条件判
定部216は、7つの乗算器550、552、556、
558、562、564および566と、減算器560
と、2つの判定回路554および568とを含む。乗算
器550は値4RBと値2RDとを乗算して判定回路5
54の一方の入力に与える。乗算器552は値3RCと
値RCとを乗算して判定回路554の他方の入力に与え
る。乗算器556は値4RBと値RDとを乗算して減算
器564の上側入力に与える。乗算器558は値RCを
使用して減算器560の下側入力に与える。減算器56
0は乗算器556の出力する値から乗算器558の出力
を減算して乗算器562の一方入力に与える。乗算器5
62は、減算器560の出力と値RCとを乗算して判定
回路568の一方の入力に与える。乗算器564は値4
RBと2RBとを乗算して乗算器566の一方入力に与
える。乗算器566は乗算器564の出力と値REとを
乗算して判定回路568に与える。
【0053】したがって判定回路554には値8RB・
RDと値3RC2 とが与えられる。また判定回路568
の入力には値(4RB・RD−RC2 )・RCと8RB
2 REとが与えられる。判定回路554は不等式「3R
2 ≦8RB・RD」が成立するかどうかを判定して判
定信号JH1aを出力する。判定回路568は、不等式
8RB2 ・RE≦(4RB・RD−RC2 )RCが成立
するかどうかを判定して判定信号JH2aを出力する。
なお、この条件判定部216は、後述する「係数処理
4」での判定に用いられる。この判定が必要となるの
は、方程式(1)においてA=0、B<0、F>0が成
立する場合のみである。すなわち、方程式(1)が4次
方程式であって、最大実数の係数(B)が負で、かつ定
数項が正のときである。
【0054】図28を参照して、図1に示されるシフト
回数制御部218は、4つの加算器580、582、5
84および586と、2つのセレクタ588および59
2と、レジスタ590と、加減算器594と、判定回路
596とを含む。このシフト回数制御部は、レジスタR
1〜R5、R6A〜R6D、R7〜R25に設定する初
期値を生成するために、レジスタRw1〜Rw5に記憶
されている数をシフトする際のシフト回数を制御するた
めのものである。なおこのシフト回数制御部218に
は、初期値格納部212から値Nが与えられる。加算器
580は値Nから値2Nを生成する。加算器582は、
値2Nから値4Nを生成する。加算器584は加算器5
80の出力する値2Nと値Nとから値3Nを生成する。
加算器586は、加算器582から与えられる値4Nと
値Nとから値5Nを生成する。これら値N、2N、3
N、4Nおよび5Nとは、いずれもセレクタ588に与
えられる。セレクタ588はこれらの値と、レジスタ5
90の格納する値NNと、加減算器594の出力とのい
ずれか1つを選択してレジスタ590に格納させるため
のものである。セレクタ592は、定数1〜9および1
2、13のいずれか1つを選択して加減算器594の下
側入力に与える。加減算器594は、レジスタ590の
格納している値NNからセレクタ592の出力との和ま
たは差をとりセレクタ588に与える。判定回路596
は、レジスタ590の格納値NNが「0」か否かを判定
し判定信号JS10aを出力するためのものである。
【0055】たとえばまずレジスタ590に、値N〜5
Nのいずれか1つを格納する。次にセレクタ592によ
り、レジスタ590から減ずべき数1〜9または12、
13のいずれか1つが選択される。加減算器594を減
算器として動作させ、レジスタNNの内容から或る値を
減算したものを再びレジスタ590に格納する。この
後、レジスタRw1〜Rw5などにおいて上位方向への
1桁シフトが実行されるごとにセレクタ592が「1」
を選択し、レジスタ590の内容がカウントダウンされ
る。レジスタNNの内容が0と等しくなると判定信号J
S10aが出力され、シフト処理が終了する。図29は
図1に示す終了条件判定部220の概略構成を示す。終
了条件判定部220は、回路部分600、602、60
4および606を含む。以下各回路部分について順に説
明する。
【0056】図30を参照して回路600は、9つの回
路部分610、612、614、616、618、62
0、622、624および626と、2つのセレクタ6
28および630と加算器632とを含む。回路610
〜626についてはそれぞれ図33〜図41を参照して
後述する。これら各回路610、612、614および
616からは、それぞれ値R0、R7、R20、R23
が出力されセレクタ628に与えられる。回路618、
620、622、624、626からはそれぞれ、値R
2、R3、R8、R9、R21が出力されセレクタ63
0に与えられる。セレクタ628は値R0、R7、R2
0、R23のいずれか1つを選択して加算器632に与
える。セレクタ630は値R2、R3、R8、R9およ
びR21のいずれか1つを選択して加算器632に与え
る。加算器632は、セレクタ628および630の出
力を加算して回路618、620、622、624およ
626に与える。
【0057】図31を参照して回路602は、10個の
回路部分680、684、686、688、690、6
92、694、696、698および700と、加算器
704と減算器702とを含む。各回路部分については
図43〜図52を参照して後述するが、以下その概略を
説明する。回路680は、値A9および回路698から
の出力A30と減算器702の出力G4とを受け、値R
1を出力する。回路680は、値AG3と、回路698
の出力A22とを受け、R4を出力する。回路686
は、値AG3を受け、値R5を出力する。回路698
は、値R0、R1、R2、R3、R4およびR5を受
け、A20、A21、A22およびA30を出力する。
回路688、690、692、694および696はそ
れぞれ、AG3を受け、R6A、R6B、R6C、R6
D、R10を出力する。回路700は、R6A、R6
B、R6C、R6D、R7、R8、R9およびR10を
受け、A26〜A29を出力する。加算器704は、値
R7およびA26を加算してA24を減算器702の下
側入力に与える。減算器702は、回路680の出力す
るR1から加算器704の出力するA24を減算して出
力G4を回路680に与える。
【0058】図32を参照して、図29に示される回路
604は、14個の回路部分640、642、644、
646、648、650、652、654、656、6
58、660、662、664および666と、減算器
668および670とを含む。各回路部分の詳細につい
ては図53〜図66を参照して後述するが、ここでは概
略を述べる。回路640は、AG3および回路664の
出力A30を受け、R11を出力する。回路642、6
44および646はいずれもAG3を受け、それぞれR
12、R13およびR14を出力する。回路648はA
G3および回路664の出力A32を受け、R15を出
力する。回路650は、AG3を受けR16を出力す
る。回路664はR11〜R16およびR2とR9とを
受け、A30〜A32、G6およびG7を出力する。
【0059】回路652、656、658、660、6
62はいずれもAG3を受け、それぞれR17、R1
9、R22、R24、R25を出力する。回路654は
AG3と回路666の出力A34とを受け、R18を出
力する。回路666は、R17〜R25を受け、A33
〜A37とG9とを出力する。減算器668はR8から
A31を減算してG5を出力する。減算器679はR3
からA33を減算してG8を出力する。以下、図30に
示される各回路についてその構造を詳細に説明する。図
33を参照して回路610は、セレクタ710とレジス
タ712と遅延用レジスタ714と判定回路716とを
含む。セレクタ710は、RFとAG3とG3とレジス
タ712の出力と遅延用レジスタ714により1桁上位
方向にシフトされたレジスタ712の内容とのいずれか
1つを選択してレジスタ712に格納させるためのもの
である。判定回路716は、レジスタ712に格納され
た値が0と等しいかどうかを判定し判定信号JS14a
を出力するためのものである。
【0060】図34を参照して、回路612は、セレク
タ720と、レジスタ722と、遅延用レジスタ724
とを含む。セレクタ720は、A27と、AG3と、G
10と、定数「0」と、レジスタ722の出力と、遅延
用レジスタ720により1桁上位方向にシフトされたレ
ジスタ722の格納内容とのいずれか1つを選択してレ
ジスタ722に格納させるためのものである。図35を
参照して、回路614は、セレクタ730と、レジスタ
732と、遅延用レジスタ734とを含む。セレクタ7
30は、A35と、AG3と、G11と、定数「0」
と、レジスタ732の格納内容と、遅延用レジスタ73
4により1桁上位方向にシフトされたレジスタ732の
格納内容とのいずれか1つを選択してレジスタ732に
格納させるためのものである。
【0061】図36を参照して、回路616は、セレク
タ740と、レジスタ742と、遅延用レジスタ746
とを含む。セレクタ740は、A37と、AG3と、定
数「0」と、レジスタ742の格納内容と、遅延用レジ
スタ746によって1桁上位方向にシフトされたレジス
タ742の格納内容とのいずれか1つを選択してレジス
タ742に格納させるためのものである。図37を参照
して、回路618は、セレクタ750と、レジスタ75
2と、遅延用レジスタ754とを含む。セレクタ750
は、A20と、AG3と、G7と、A18と、レジスタ
752の格納内容と、遅延用レジスタ754により1桁
上位方向にシフトされたレジスタ752の格納内容との
いずれか1つを選択してレジスタ752に格納させるた
めのものである。
【0062】図38を参照して、回路620は、セレク
タ760と、レジスタ762と、遅延用レジスタ764
とを含む。セレクタ760は、A21と、AG3と、G
8と、A18と、レジスタ762の格納内容と、遅延用
レジスタ764により1桁上位方向にシフトされたレジ
スタ762の格納内容とのいずれか1つを選択してレジ
スタ762に格納させるためのものである。図39を参
照して、回路622は、セレクタ770と、レジスタ7
72と、遅延用レジスタ774とを含む。セレクタ77
0は、A28と、AG3と、G5と、A18と、レジス
タ772の格納内容と、遅延用レジスタ774により1
桁上位方向にシフトされたレジスタ772の格納内容と
のいずれか1つを選択してレジスタ772に格納させる
ためのものである。
【0063】図40を参照して、回路624は、セレク
タ780と、レジスタ782と、遅延用レジスタ784
とを含む。セレクタ780は、A29と、AG3と、G
6と、A18と、レジスタ782の格納内容と、遅延用
レジスタ784により1桁上位方向にシフトされたレジ
スタ782の格納内容とのいずれか1つを選択してレジ
スタ782に格納させるためのものである。図41を参
照して、回路626は、セレクタ790と、レジスタ7
92と、遅延用レジスタ794とを含む。セレクタ79
0は、A36と、AG3と、G9と、A18と、レジス
タ792の格納内容R21と、遅延用レジスタ794に
より1桁上位方向にシフトされたR21とのいずれか1
つを選択してレジスタ792に格納させるためのもので
ある。
【0064】図42を参照して、回路628は、2つの
セレクタ800および802と、加算器804とを含
む。セレクタ800は、R0と、R7と、R20と、R
23とのいずれか1つを選択して加算器804に与え
る。セレクタ802は、R2と、R3と、R8と、R9
と、R21とのいずれか1つを選択して加算器804に
与える。加算器804は、セレクタ800および802
の出力を加算して出力A18を与える。図43〜図52
は、図31に示される各回路の詳細を示す。図43を参
照して、回路680は、セレクタ810とレジスタ81
2とを含む。セレクタ810は、A19と、G3と、A
9と、レジスタ812の格納内容R1とのいずれか1つ
を選択してレジスタ812に格納させるためのものであ
る。
【0065】図44を参照して、回路682は、セレク
タ820と、レジスタ822と、遅延用レジスタ824
とを含む。セレクタ820は、A21と、A9と、レジ
スタ822の格納内容R4と、遅延用レジスタ824に
より1桁上位方向にシフトされたR4とのいずれか1つ
を選択してレジスタ822に格納させるためのものであ
る。図45を参照して、回路684は、セレクタ830
と、レジスタ832と、遅延用レジスタ834とを含
む。セレクタ830は、AG3と、レジスタ832の格
納内容R5と、遅延用レジスタ834により1桁上位方
向にシフトされたR5とのいずれか1つを選択してレジ
スタ832に格納させるためのものである。
【0066】図46を参照して、回路686は、セレク
タ840と、レジスタ842と、遅延用レジスタ844
とを含む。セレクタ840は、AG3と、レジスタ84
2の格納内容R6Aと、遅延用レジスタ844により1
桁上位方向にシフトされたR6Aとのいずれか1つを選
択してレジスタ842に格納させるためのものである。
図47を参照して、回路690は、セレクタ850と、
レジスタ852と、遅延用レジスタ854とを含む。セ
レクタ850は、AG3と、レジスタ852の格納内容
R6Bと、遅延用レジスタ854により1桁上位方向に
シフトされたR6Bとのいずれか1つを選択してレジス
タ852に格納させるためのものである。
【0067】図48を参照して、回路692は、セレク
タ860と、レジスタ862と、遅延用レジスタ864
とを含む。セレクタ860は、AG3と、レジスタ86
2の格納内容R6Cと、遅延用レジスタ864により1
桁上位方向にシフトされたR6Cとのいずれか1つを選
択してレジスタ862に格納させるためのものである。
図49を参照して、回路694は、セレクタ870と、
レジスタ872と、遅延用レジスタ874とを含む。セ
レクタ870は、AG3と、レジスタ872の格納内容
R6Dと、遅延用レジスタ874により1桁上位方向に
シフトされたR6Dとのいずれか1つを選択してレジス
タ872に格納させるためのものである。
【0068】図50を参照して、回路696は、セレク
タ880と、レジスタ882と、遅延用レジスタ884
とを含む。セレクタ880は、AG3と、レジスタ88
2の格納内容R10と、遅延用レジスタ884により1
桁上位方向にシフトされたR10とのいずれか1つを選
択してレジスタ882に格納させるためのものである。
図51を参照して、回路698は、減算器890と、4
つの加算器892、894、896および898とを含
む。減算器890はR0とR1との差をとりG3を出力
する。加算器892はR1とR2との和をA19として
出力する。加算器894はR2とR3との和をA20と
して出力する。加算器896はR3とR4との和をA2
1として出力する。加算器898はR4とR5との和を
A22として出力する。
【0069】図52を参照して、回路700は、6つの
加算器902、904、906、908および910を
含む。加算器900は、R6AとR6Bとの和を加算器
910の一方の入力に与える。加算器902はR6Cと
R6Dとの和を加算器910の他方の入力に与える。加
算器910はこれら入力の和をA25として出力する。
加算器904はR7とR8との和をA27として出力す
る。加算器906はR8とR9との和をA28として出
力する。加算器908はR9とR10との和をA29と
して出力する。図53〜図66は、図32に示される回
路の詳細図である。図53を参照して、回路640は、
セレクタ920と、レジスタ922と、遅延用レジスタ
920とを含む。セレクタ920は、A30と、AG3
と、レジスタ922の格納内容R11と、遅延用レジス
タ924により1桁上位方向にシフトされたR11との
いずれか1つを選択してレジスタ922に格納させるた
めのものである。
【0070】図54を参照して、回路642は、セレク
タ930と、レジスタ932と、遅延用レジスタ934
とを含む。セレクタ930は、AG3と、レジスタ93
2の格納内容R12と、遅延用レジスタ934により1
桁上位方向にシフトされたR12とのいずれか1つを選
択してレジスタ932に格納させるためのものである。
図55を参照して、回路644は、セレクタ940と、
レジスタ942と、遅延用レジスタ946とを含む。セ
レクタ940は、AG3と、レジスタ942の格納内容
R13と、遅延用レジスタ946により1桁上位方向に
シフトされたR13とのいずれか1つを選択してレジス
タ942に格納させるためのものである。
【0071】図56を参照して、回路646は、セレク
タ950と、レジスタ952と、遅延用レジスタ954
とを含む。セレクタ950は、AG3と、レジスタ95
2の格納内容R14と、遅延用レジスタ954により1
桁上位方向にシフトされたR14とのいずれか1つを選
択してレジスタ952に格納させるためのものである。
図57を参照して、回路648は、セレクタ960と、
レジスタ962と、遅延用レジスタ964とを含む。セ
レクタ960は、AG3と、A32と、レジスタ962
の格納内容R15と、遅延用レジスタ964により1桁
上位方向にシフトされたR15とのいずれか1つを選択
してレジスタ962に格納させるためのものである。
【0072】図58を参照して、回路650は、セレク
タ970と、レジスタ972と、遅延用レジスタ974
とを含む。セレクタ970は、AG3と、レジスタ97
2の格納内容R16と、遅延用レジスタ974により1
桁上位方向にシフトされたR16とのいずれか1つを選
択してレジスタ972に格納させるためのものである。
図59を参照して、回路652は、セレクタ980と、
レジスタ982と、遅延用レジスタ984とを含む。セ
レクタ980は、AG3と、レジスタ982の格納内容
R17と、遅延用レジスタ984により1桁上位方向に
シフトされたR17とのいずれか1つを選択してレジス
タ982に格納させるためのものである。
【0073】図60を参照して、回路654は、セレク
タ990と、レジスタ992と、遅延用レジスタ994
とを含む。セレクタ990は、AG3と、A34と、レ
ジスタ992の格納内容R18と、遅延用レジスタ99
4により1桁上位方向にシフトされたR18とのいずれ
か1つを選択してレジスタ992に格納させるためのも
のである。図61を参照して、回路656は、セレクタ
1000と、レジスタ1002と、遅延用レジスタ10
04とを含む。セレクタ1000は、AG3と、レジス
タ1002の格納内容R19と、遅延用レジスタ100
4により1桁上位方向にシフトされたR19とのいずれ
か1つを選択してレジスタ1002に格納させるための
ものである。
【0074】図62を参照して、回路658は、セレク
タ1010と、レジスタ1012と、遅延用レジスタ1
014とを含む。セレクタ1010は、AG3と、レジ
スタ1012の格納内容R22と、遅延用レジスタ10
14により1桁上位方向にシフトされたR22とのいず
れか1つを選択してレジスタ1012に格納させるため
のものである。図63を参照して、回路660は、セレ
クタ1020と、レジスタ1022と、遅延用レジスタ
1024とを含む。セレクタ1020は、AG3と、レ
ジスタ1022の格納内容R24と、遅延用レジスタ1
024により1桁上位方向にシフトされたR24とのい
ずれか1つを選択してレジスタ1022に格納させるた
めのものである。
【0075】図64を参照して、回路662は、セレク
タ1030と、レジスタ1032と、遅延用レジスタ1
034とを含む。セレクタ1030は、AG3と、レジ
スタ1032の格納内容R25と、遅延用レジスタ10
34により1桁上位方向にシフトされたR25とのいず
れか1つを選択してレジスタ1032に格納させるため
のものである。図65を参照して、回路664は、3つ
の加算器1040、1042および1048と、2つの
減算器1044および1046とを含む。加算器104
0はR11とR12との和をA30として出力する。加
算器1042はR11とR13との和をA31として出
力する。減算器1044はR9とR14との差をG6と
して出力する。減算器1046はR2とR15との差を
G7として出力する。加算器1048はR15とR16
との和をA32として出力する。
【0076】図66を参照して、回路666は、5つの
加算器1050、1052、1054、1056および
1058と減算器1060とを含む。加算器1050は
R17とR18との和をA33として出力する。加算1
052はR18とR19との和をA34として出力す
る。加算器1054はR20とR21との和をA35と
して出力する。加算器1056はR21とR22との和
をA36として出力する。加算器1058はR23とR
24との和をA37として出力する。減算器1060は
R21とR25との差をG9として出力する。図67
は、図29に示される回路606の詳細図である。図6
7を参照して、回路606は、2つの減算器1070お
よび1072を含む。減算器1070はR7とR20と
の差をG10として出力する。減算器1072はR20
とR23との差をG11として出力する。
【0077】図68を参照して、図1に示される選択処
理判定部222は、3つの加算器1080、1082お
よび1084と、4つの判定回路1086、1088、
1090および1092とを含む。加算器1080はR
1とR2との和を判定回路1088に与える。加算器1
082はR2とR3との和を判定回路1090に与え
る。加算器1084はR3とR4との和を判定回路10
92に与える。判定回路1086は、R1>R0が成立
するか否かを判定して判定信号JH3aを出力する。判
定回路1088は、R1+R2≧0が成立するか否かを
判定して判定信号JS11aを出力する。判定回路10
90は、R2+R3≧0が成立するか否かを判定して判
定信号JS12aを出力する。選択回路1092はR3
+R4≦0が成立するか否かを判定して判定信号JS1
3aを出力する。これら判定信号はいずれも制御部21
0(図1参照)に与えられて装置の制御に使用される。
【0078】図1に示される制御部210は、以上述べ
た各回路のセレクタ、加算器、減算器、加減算器、乗算
器などを制御して、これから述べるような処理を実行さ
せる。その処理手順については図69以下のフローチャ
ートを参照してこれから詳細に説明する。 [処理の概略]図69を参照して、本発明に係る求根装
置における処理手順は、ステップS01の準備処理と、
ステップS02の係数処理と、ステップS3の初期値の
設定処理と、ステップS04の仮数部の導出処理と、ス
テップS05の小数点位置の調整処理とからなる。以下
各々の概略について説明する。 (1) 準備処理(ステップS01) 準備処理では、根を求めるための準備として記憶装置な
どの初期化処理が行なわれる。
【0079】(2) 係数処理(ステップS02) 本発明における求根方式は、方程式(1)に表わした場
合、定数項Fが正となるような方程式において、その正
根を求めるものである。したがって、仮に与えられた方
程式が方程式(1)のように表記した場合にFが負とな
るようなものである場合には、以下に述べる根の計算を
行なう前に、すべての係数A〜Fに「−1」を掛ける必
要がある。そのような処理をすることにより方程式
(1)のように表記した場合に定数項Fが正となる。こ
のような変換をしても、根の値が影響されることはな
い。また、与えられた方程式(1)は、前述のように実
根を持つことが保証されている。しかし、方程式(1)
が正根を持つことか否かについては不明である。したが
って、方程式(1)に必要であれば何らかの変換を行な
って、方程式(1)が正根を持つようにすることが必要
である。また、与えられた方程式(1)から(N+1)
桁の根を求められるようにする処理も必要である。この
ような処理を行なうのが係数処理である。
【0080】係数処理では与えられた係数に対して次の
ような操作を行なう。 与えられた係数や根の符号の反転 係数の上位方向への桁シフトおよび根の小数部桁の
操作 与えられたNに対して「1」の加算、減算 処理の流れを制御するために設けられるフラグYG
の設定 この係数処理については図71〜図77および図79、
図82に示されるように係数処理1〜7がある。これら
の処理は一見複雑のように見えるが、実際に係数に対し
て行なわれる処理は上の〜の3種類のみである。ど
の処理を何回行なうかは、与えられた係数などの関係に
より決まる。この、どの処理を行なうかを決定する手順
は、4次方程式や2次方程式の場合には、奇数次の方程
式の場合と比較してやや複雑である。
【0081】与えられた方程式と係数処理および設定さ
れるフラグYGの値の関係を表2に示す。
【0082】
【表2】 (3) 初期値の設定(ステップS03) 初期値の設定処理では、根の仮数部を導出するために、
係数から予め定められた方法により生成される数や、初
期値としての「0」を前述の29個のレジスタに設定す
る処理が行なわれる。 (4) 仮数部の導出(ステップS04) 仮数部の導出処理では、根の仮数部が求められる。ここ
では、仮数部は整数値として求められる。 (5) 小数点位置の調整(ステップS05) 小数点位置の調整処理では、ステップS04で求められ
た根の仮数部について、その小数点位置を設定する処理
が行なわれる。
【0083】以下、ステップS01〜S05の処理の詳
細について説明する。 [準備処理の詳細]準備処理では、根を記憶するレジス
タが初期化される。すなわち図70を参照して、ステッ
プS0101で、根の仮数部を記憶するレジスタXA
と、その小数部の桁数を記憶するレジスタXDとにそれ
ぞれ「0」が設定される。また根の符号を記憶するレジ
スタXSには「+」が設定される。さらに、処理の流れ
を制御するためのフラグYGにも初期値として「0」が
設定される。レジスタXDは、前述のようにレジスタX
Aに記憶される仮数部の下位何桁が小数部であるかを示
す数を記憶するためのものである。たとえば、最終的に
レジスタXAに「123456789」が、レジスタX
Dに「3」が格納されている場合には、根の絶対値は
「123456.789」である。
【0084】フラグYGは、与えられた方程式が4次方
程式または2次方程式であって、かつ、その方程式を方
程式(1)のように表記したときに定数項Fが正であっ
てかつ最大次数の係数が負となる場合に、仮数部を導出
する処理の流れを部分的に変更させるために使用され
る。フラグYGは、特許請求の範囲で述べた第2の制御
手段に相当する。方程式(1)が5次または3次方程式
であるとき、または、4次もしくは2次方程式であっ
て、かつ最大次数の係数が正のときには、フラグYGを
用いて処理の流れを変えるための制御は不要である。こ
れらのケースではフラグYGには「0」を設定してお
く。すなわちフラグYGに「0」が設定されていれば、
余分な判定処理が回避される。フラグYGの設定は後述
する係数処理の中で行なう。設定の内容については前述
の表2を参照のこと。より具体的には、図11に示され
るセレクタ360を操作して「0」を選択しレジスタ3
62に記憶させる。レジスタXDに対しても、図13に
示されるセレクタ380を操作して「0」を設定する。
またレジスタXAには、図14に示されるセレクタ40
0を操作して「0」を設定する。レジスタXSには、図
12に示されるセレクタ370を操作して「+」を設定
する。
【0085】なお、係数A〜Fは、レジスタRA〜RF
に既に格納済みであるものとする。根の仮数部はレジス
タXAの最下位桁に「1」が加えられることおよびレジ
スタXAの内容が上位方向に1桁シフトされることによ
り求められていく。 [係数処理の詳細]以下の係数処理の説明を簡略化する
ために、最初に用語の定義を行なうことにする。なお、
前述のとおりレジスタに記憶されている数をそのレジス
タと同じ名称で表わす場合がある。 (1) 符号の反転1 符号の反転1処理とは、レジスタRA、RCおよびRE
に記憶されている数の符号および根の符号XSを反転す
る処理をいう。レジスタRA、RCおよびREについて
は、格納されている数が「0」のときは符号を反転する
必要はない。
【0086】(2) 符号の反転2 符号の反転2処理とは、レジスタRA〜RFに記憶され
ている数の符号を反転する処理をいう。この場合にも、
対象となる数が「0」のときには符号を反転する必要は
ない。 (3) 係数シフト 係数シフトとは、レジスタRB、RC、RD、REおよ
びRFに記憶されている数を上位の方向にそれぞれ1、
2、3、4および5桁シフトし、レジスタXDの内容を
1増加させる処理をいう。レジスタRB〜RFについて
は、対象となる数が「0」のときにはシフトする必要は
ない。レジスタXDの内容を1加算するのは、レジスタ
RB〜RFに記憶されている係数のシフトを行なうこと
により、求められる根の小数部の桁数が1桁増加するた
めである。
【0087】ただし、上述の係数シフト処理で行なわれ
るシフト桁数は、対象とする方程式によって変えた方が
効率が良い。上述したシフト桁数は5次〜2次方程式の
場合について述べたものであるが、4次、3次、2次を
それぞれ最高次とする方程式の場合をまとめたものを表
3に示す。
【0088】
【表3】 表3にも示されるように、最大何次の方程式の根を求め
る必要があるかによって、処理を効率的に行なえるシフ
ト桁数は変化する。たとえば、対象方程式が3次方程式
に限定されている場合または3次方程式および2次方程
式に限定されている場合には、レジスタRD、REおよ
びRFに記憶されている数を上位の方向へそれぞれ1、
2および3桁シフトするのみでよい。 (4) 符号S1 符号S1は、次の式で表わされる値の符号である。
【0089】
【数16】 数16は、レジスタRA〜REに記憶されている数につ
き、レジスタRAは5N桁、レジスタRBは4N桁、レ
ジスタRCは3N桁、レジスタRDは2N桁、レジスタ
REはN桁だけ上位の方向へそれぞれシフトしたものの
和から、レジスタRFに記憶されている数を減じて得ら
れる数である。 (5) 符号S2 符号S2は、次の式で表わされる値の符号である。
【0090】
【数17】 数17で表わされる数は、レジスタRB、RCおよびR
Dに記憶されている数につき、レジスタRBは3N桁、
レジスタRCは2N桁、レジスタRDはN桁だけ上位の
方向にシフトし、さらにそれぞれ4倍、3倍、2倍した
ものと、レジスタREに記憶されている数との和を示
す。 (6) 符号S3 符号S3は、次の式で表わされる値の符号である。
【0091】
【数18】 数18によって表わされる数は、レジスタRBに記憶さ
れている数を2N桁、レジスタRCに記憶されている数
をN桁だけ上位の方向にシフトし、それぞれ6倍および
3倍したものと、レジスタRDに記憶されている数との
和を示す。 (7) 符号S4 符号S4は次の式により表わされる値の符号である。
【0092】
【数19】 数19により表わされる数は、レジスタRBに記憶され
ている数をN桁だけ上位の方向へシフトし、さらに4倍
したものと、レジスタRCに記憶されている数との和を
示す。係数処理の流れの概略を図71に示す。図71を
参照して、係数処理はステップS0201の係数処理1
と、ステップS0202の係数処理2と、ステップS0
204の係数処理3と、ステップS0205の係数処理
4と、ステップS0206の係数処理4’と、ステップ
S0208の係数処理5と、ステップS0209の係数
処理6と、ステップS0210の係数処理7とを含む。
ステップS0202の係数処理2は、ステップS020
3で、次に進む処理をステップS0204、S020
5、S0206のどの処理にするかを判定するための演
算処理である。この判定の内容については後述する。
【0093】ステップS0204に処理が進んだ場合、
この処理が終わると係数処理も終了する。ステップS0
205およびS0206のいずれかに処理が進んだ場
合、その処理の結果によりさらにステップS0207
で、ステップS0208、S0209、S0210のい
ずれの処理を行なうかが選択される。この判定の内容に
ついても後述する。ステップS0208〜S0210の
後、係数処理は終了する。以下各ステップの処理内容に
つき図72〜図82を参照して順に説明する。 (1) 係数処理1(図72) 図72を参照して、まずステップS02011で、与え
られた方程式を方程式(1)のように表記した場合、定
数項Fの値、すなわち記憶装置RFに記憶されている数
が負かどうかについての判断が行なわれる。負であれば
制御はステップS02012に進み、「符号の反転2」
が実行される。これによりレジスタRA〜RFに記憶さ
れている数の符号が反転される。ステップS02012
の後係数処理1は終了する。一方ステップS02011
でレジスタRFに記憶されている数が負でないと判定さ
れた場合には、処理は何もされずに係数処理1は終了す
る。この係数処理1により根の値が影響されることはな
い。
【0094】この係数処理1で回路で行なわれる処理に
ついて説明する。図9を参照して、レジスタ332の格
納内容RFが負であれば、判定回路344は判定信号J
S6aを出力する。この判定信号JS6aに応答して、
図1に示される制御部210が、図4〜図9に示される
セレクタ260、270、280、290、310、3
30を制御して、各レジスタ262、272、282、
292、312、332の符号を反転させる。判定信号
JS6aが出力されなかったときにはこのような処理は
行なわれない。 (2) 係数処理2(図73) 係数処理2では、次に進む処理を図71に示される係数
処理3、4、4’の3つのうちのいずれにするかを決定
するための処理が行なわれる。なおこの場合必要であれ
ば符号の反転1の処理も行なわれる。
【0095】まずステップS020201で、レジスタ
RAの内容が0以外かどうかについての判断が行なわれ
る。0以外であれば制御はステップS020212に、
0の場合にはステップS020202に進む。ステップ
S020202では、レジスタRBの内容が0以外かど
うかについての判断が行なわれる。0以外であれば制御
はステップS020210に進む。0であれば制御はス
テップS020203に進む。ステップS020203
では、レジスタRCの格納内容が0以外かどうかについ
ての判断が行なわれる。0以外であれば制御はステップ
S020207に、0である場合には制御はステップS
020204に進む。ステップS020204では、レ
ジスタRDの格納内容が0以外かどうかについての判断
が行なわれる。0以外であれば制御はステップS020
205に進む。0であれば係数A〜Dがいずれも0であ
ることから、与えられた方程式(1)が実質上1次方程
式であると判断される。したがって処理は1次方程式の
解法に移る。1次方程式の解法は周知であるのでここで
は説明しない。
【0096】ステップS020212、S02021
0、S020207、S020205では、それぞれレ
ジスタRA、RB、RC、RDの格納内容が正かどうか
についての判断が行なわれる。正であると判断された場
合にはいずれも制御はステップS020209に進み、
次に進む処理を係数処理3として係数処理2の処理を終
了する。すなわち、方程式(1)の最大次数の係数が正
である場合には、係数処理3に進むことになる。ステッ
プS020212およびS020207で正でないと判
断された場合には、制御はそれぞれステップS0202
13、S020208に進む。このステップS0202
13およびS020208では符号の反転1が行なわ
れ、さらに制御はステップS020209に進む。すな
わち、方程式(1)の最大次数の係数が負で、それが5
次方程式または3次方程式である場合には、符号の反転
1の処理を行なったうえで係数処理3に制御が進むこと
になる。
【0097】一方、ステップS020210でレジスタ
RBの格納内容が正でないと判断された場合は次の処理
として係数処理4が選択されて係数処理2を終了する。
ステップS020205でレジスタRDの格納内容が正
でないと判断された場合には制御はステップS0202
06に進み、次の処理として係数処理4’が選択されて
係数処理2が終了する。すなわち4次方程式および2次
方程式において最大次数の係数が負である場合には、そ
れぞれ次の処理として係数処理4と係数処理4’とが選
択される。係数処理2に対応する回路の動作について説
明する。レジスタRA〜RDに記憶されている数が
「0」であるかどうかの判定、およびそれらが正かどう
かについての判定は、図4〜図7に示される判定信号J
S1a〜JS4aにより行なわれる。なおこれら各判定
信号JS1a〜JS4aとしては、たとえば2ビットの
信号を用い、「00」の場合には「0」であることを、
「01」である場合には「+」であることを、「11」
であるときは「−」であることをそれぞれ示すような形
にすればよい。また、レジスタRA〜RDに格納されて
いる数が0かどうかを示す信号と、正か負かを示す信号
とを別個のものにすることもできる。
【0098】図1に示される制御部210は、これら判
定信号JS1a〜JS4aに従って図73の処理を行な
い、必要であれば符号の反転1の処理を行なう。符号の
反転1の処理は、図4、図6および図8に示されるセレ
クタ260、280および310を制御して、レジスタ
262、282および312の符号を反転させることに
より行なわれる。この係数処理2で行なわれる符号の反
転1の処理では、実質的には根の符号を記憶するレジス
タXSの符号が「+」から「−」に設定される。 (3) 係数処理3(図74) 係数処理3では、まず符号S1を求め、その結果により
ステップS02041で次のような判断が行なわれる。
すなわち符号S1が「−」であれば制御はステップS0
2042に、それ以外の場合には制御はステップS02
045に進む。この符号S1を導出する処理については
図75を参照して後述する。
【0099】ステップS02042では、レジスタNの
値を1加算し、制御はステップS02043に進む。ス
テップS02043で再び符号S1の導出が行なわれ、
「−」であれば制御はもう一度ステップS02042に
戻る。符号S1が「−」でなければ制御はステップS0
2044に進む。ステップS02044では、レジスタ
Nの値を1減算する。この後係数処理3を終了する。一
方ステップS02045では係数シフト処理を行なう。
この係数シフト処理の内容については前述した。さらに
ステップS02046で、再び導出された符号S1が
「−」かどうかについての判断が行なわれる。「−」で
あれば係数処理3を終了するが、「−」でないときには
制御は再びステップS02045に戻る。
【0100】後述する係数処理4〜7でも同様である
が、係数処理3では、「係数シフト」あるいはレジスタ
Nへの「1」の加算を行なうのか否か、行なうとすれば
何回行なうのかを判定して実行する処理が行なわれる。
そのために、与えられた係数を基に種々の判定を行なっ
ている。係数処理3で判定に使用された符号S1は、後
述する係数処理4、4’、係数処理5、係数処理6およ
び係数処理7でも使用されている。この符号S1の判定
処理の内容につき図75を参照して説明する。符号S1
は、前述したとおり次の式の値の符号である。
【0101】
【数20】 この値を求めるには、図23、図22、図21、図2
0、図19にそれぞれ示されるセレクタ500、49
0、480、470、460を制御してRA〜REの値
をそれぞれレジスタ502、492、482、472、
462に転送する。さらに図13を参照して、レジスタ
390に記憶されている数Nを、図28に示されるセレ
クタ588を制御してレジスタ590(NN)に転送す
る(SA1)。さらに図19〜図23に示されるセレク
タ460、470、480、490、500をそれぞれ
操作して、レジスタ462、472、482、492、
502に格納されている値をそれぞれ1桁、2桁、3
桁、4桁、5桁上位方向へシフトして元のレジスタに格
納することを繰返す。繰返す回数は図13のレジスタ3
90に記憶されている数Nである。前述のようにシフト
を1回行なうごとに図29においてレジスタ590に記
憶されている数NNからセレクタ592および加減算器
594を用いて1ずつ減算することを実行し、判定信号
JS10aが出力されたときに繰返しを終了する。
【0102】たとえば、当初レジスタRA〜REに1、
2、3、4および5が、レジスタNに6がそれぞれ記憶
されていた場合を考える。判定信号JS10aが出力さ
れたとき、レジスタRw1〜Rw5にはそれぞれ、次の
ような値が格納されている。
【0103】
【数21】 以上の繰返し処理が、図75のステップSA2およびS
A3の処理である。さらにステップSA4ではRSが、
レジスタRw1〜Rw5に格納された数の和からレジス
タRFの格納内容を減算することにより求められる。こ
の値RSは、図26に示される加算器544の出力A9
として得られる。なおこの場合、図25に示されるセレ
クタ530はレジスタRw2の値を、セレクタ532は
レジスタRw3の値をそれぞれ選択しており、加減算器
534は加算器として動作する。加減算器534の出力
AG3はしたがってRw2+Rw3となっている。前述
の判定信号JS10aが出力された後、図26に示され
る加算器544の出力A9の符号が判定回路546によ
り判定され、判定信号JS9aが出力される。この処理
が図75のステップSA4およびSA5に対応する。
【0104】前述のRASが0以上であればステップS
A6で符号S1に「−」が、そうでなければステップS
A7で符号S1に「+」がそれぞれ設定される。以上で
符号S1の導出は終了である。 (4) 係数処理4(図76) まずステップS02051で、第1の不等式 3RC2 ≦8RB・RD が成立するかどうかについての判断が行なわれる。成立
する場合には制御はステップS02061に、成立しな
い場合にはステップS02052にそれぞれ進む。 ステップS02052では、次の不等式 8RB2 ・RE≦(4RB・RD−RC2 )・RC が成立するかどうかについての判断が行なわれる。成立
する場合には制御はステップS02058に、成立しな
い場合には制御はステップS02053にそれぞれ進
む。
【0105】ステップS02053では、RC、RD、
REのいずれもが負かどうかについての判断が行なわれ
る。この条件が成立する場合には制御はステップS02
054に、成立しない場合には制御はステップS020
57にそれぞれ進む。ステップS02054では、符号
の反転1の処理が行なわれ、前述のフラグYGに1が設
定される。ステップS02054の後制御はステップS
02055に進む。一方、ステップS02057ではフ
ラグYGに2がセットされステップS02061に進
む。さらにステップS02052で第2の不等式が成立
すると判断された場合、ステップS02058で、RC
≧0、RD<0、RE≧0が成立するかどうかについて
の判断が行なわれる。この条件が満足された場合には制
御はステップS02059に進み、フラグYGに1がセ
ットされてステップS02055に進む。
【0106】一方この条件が成立しない場合にはステッ
プS02060に制御が進み符号の反転1の処理が行な
われ、さらにフラグYGに2がセットされてステップS
02061に進む。ステップS02055では、再び符
号S1が導出され、符号S1が「−」かどうかについて
の判断が行なわれる。「−」であればステップS020
56に進み次の処理として係数処理7が選択される。
「−」でなければ制御はステップS02063に進む。
一方ステップS02061では、同様に符号S1が導出
されて「−」かどうかについての判断が行なわれる。
「−」であれば制御はステップS02062に進み、次
の処理として係数処理6が選択される。「−」でなけれ
ば制御はステップS02063に進む。
【0107】ステップS02063では、係数シフトの
処理が行なわれさらにステップS02064でもう一度
符号S1が導出され「−」かどうかについての判断が行
なわれる。「−」であればステップS02065で次の
処理として初期値の設定処理が選択される。すなわちこ
の場合には係数処理が終了する。一方符号S1が「−」
でなければ制御は再びステップS02063に戻る。再
びステップS02051に戻り、第1の不等式が成立す
ると判断された場合、ステップS02061でフラグY
Gに1が設定される。続いてステップS02062でR
E≧0が成立するかどうかについての判断が行なわれ
る。成立しない場合にはステップS02063で符号の
反転1の処理が行なわれ、いずれの場合も制御はステッ
プS02064に進む。
【0108】ステップS02064では、符号S1が導
出され「−」かどうかについての判断が行なわれる。
「−」であればステップS02065で次の処理として
係数処理5が選択される。「−」でなければ制御は前述
したステップS02063に進む。図76のステップS
02051で行なわれる判断は、図27の判定回路55
4で行なわれる判定処理に相当する。またステップS0
2052で行なわれる判断は、図27の判定回路568
で行なわれる処理に相当する。RC、RD、RE、S1
の符号の判断は、それぞれ図6の判定回路288と、図
7の判定回路300と、図8の判定回路322と、図2
6の判定回路546で行なわれる処理に相当する。
【0109】(5) 係数処理4’(図76) 係数処理4’は、係数処理4の一部の処理である。すな
わち図76に示されるように、係数処理4’の場合に
は、最初にステップS02061に制御が進む。以下、
ステップS02062から始まる処理については係数処
理4と全く同様である。 (6) 係数処理5(図77) 図77は係数処理5のフローチャートである。図77を
参照して、まずステップS02081で符号S2が導出
され、その内容が「−」かどうかについての判断が行な
われる。「−」であれば制御はステップS02086
に、「−」でなければ制御はステップS02082にそ
れぞれ進む。S2の導出については後述する。
【0110】ステップS02082ではレジスタNの内
容が1加算され、さらにステップS02083で符号S
1が「−」かどうかについての判断が行なわれる。
「−」であれば制御はステップS02084に、さもな
ければ制御はステップS02085にそれぞれ進む。ス
テップS02084では、符号S2が「−」かどうかに
ついての判断が再び行なわれる。「−」であれば制御は
ステップS02085に進み、それ以外の場合には制御
はステップS02082に戻る。ステップS02085
ではレジスタNの値が1減算され係数処理5を終了す
る。一方ステップS02081で符号S2が「−」であ
ると判断された場合、ステップS02086で前述した
係数シフト処理が行なわれる。さらにステップS020
87で符号S1が「−」かどうかについての判断が行な
われる。「−」であれば制御はステップS02088に
進み、「−」でなければ制御はステップS02086に
戻る。
【0111】ステップS02088では符号S2が
「−」かどうかについての判断が行なわれる。「−」で
あれば制御はステップS02086に戻り、「−」でな
ければ係数処理5を終了する。この係数処理5のステッ
プS02081で行なわれる符号S2の導出処理につい
て、図78を参照して説明する。なお符号S2の導出処
理は、図79および82の係数処理6および7において
も使用されている。既に述べたとおり、符号S2は次の
式で示される値の符号である。
【0112】
【数22】 まずステップSB1で、4RB、3RC、RD、RE、
Nをそれぞれ図22のレジスタ492、図21のレジス
タ482、図20のレジスタ472、図19のレジスタ
462、および図28のレジスタ590(NN)にそれ
ぞれ設定する。このときの各セレクタの制御については
自明であろう。続いてステップSB2でレジスタNNの
格納内容が0かどうかについての判断が行なわれる。0
であれば制御はステップSB4に、0でなければ制御は
ステップSB3にそれぞれ進む。この判断は図28の判
定回路596からの判定信号JS10aにより行なわれ
る。ステップSB3では、レジスタNNの値を1減算
し、レジスタRw2、Rw3、Rw4の内容をそれぞれ
3桁、2桁、1桁上位方向にシフトしてそれぞれ元のレ
ジスタに格納する処理が行なわれる。レジスタNNの減
算については図28を参照して、セレクタ592および
加減算器594によりレジスタ590(NN)から1減
算し、その値をセレクタ588を介してレジスタ590
に再格納させればよい。各レジスタRw2、Rw3およ
びRw4のシフトについては図22、図21、および図
20において、各セレクタ470、480および490
の上から2番目の入力を選択して対応するレジスタに格
納すればよい。
【0113】このステップSB2、SB3の処理によ
り、レジスタRw2、Rw3およびRw4の内容をそれ
ぞれ3桁、2桁および1桁上位方向へシフトする処理が
N回繰返される。たとえば、当初、レジスタRB〜RE
に2、3、4、5が、レジスタNに6が、それぞれ記憶
されていたものとする。すると、図28に示される判定
信号JS10aが出力されたとき、レジスタRw2〜R
w5には、それぞれ次のような値が格納されている。 Rw2=2・4・1018=8・1018 Rw3=3・3・1012=9・1012 Rw4=4・2・106 =8・106 Rw5=5 判定信号JS10aが出力された後、図25のセレクタ
530および532によりRw2、Rw3をそれぞれ選
択することにより、図26の加算器594から上述の値
RS(A9)が出力される。判定回路546によりその
符号を判定して判定信号JS9aが得られる。なお、こ
のとき、加算器540の上側入力と減算器542の下側
入力には、Rw1、RFが入力されないようにしてお
く。そのためには、各入力部分にゲートを設けておく
か、あるいは「0」を選択することができるセレクタを
設けておけばよい。
【0114】これらの処理が図78のステップSB4お
よびSB5で行なわれる処理に相当する。RSが正であ
れば符号S2として「+」を、さもなければ符号S2と
して「−」を設定する。これにより符号S2が導出され
た。 (7) 係数処理6(図79) 係数処理6では、まずステップS02091で符号S
2、S3、S4が導出され、いずれもが「−」かどうか
についての判断が行なわれる。符号S3およびS4の導
出方法については図80および図81を参照して後述す
る。この条件が成立する場合には制御はステップS02
096に、成立しない場合には制御はステップS020
92にそれぞれ進む。
【0115】ステップS02092では、レジスタNの
値を1加算する。続いてステップS02093で符号S
1が「−」かどうかについての判断が行なわれる。
「−」であれば制御はステップS02094に、さもな
ければ制御はステップS02095に進む。ステップS
02094では、再び符号S2、S3、S4のいずれも
が「−」かどうかについての判断が行なわれる。この条
件が成立すれば制御はステップS02095に進み、さ
もなければ制御はステップS02092に戻る。ステッ
プS02095ではレジスタNの値を1減算して係数処
理6を終了する。
【0116】一方ステップS02091で符号S2、S
3およびS4のすべてが「−」であると判断された場合
には、ステップS02096で係数シフト処理が行なわ
れる。さらにステップS02097で符号S1が「−」
かどうかについての判断が行なわれる。「−」であれば
制御はステップS02098に進み、さもなければ制御
はステップS02096に戻る。ステップS02098
では再び符号S2、S3およびS4のいずれもが「−」
かどうかについての判断が行なわれる。この条件が成立
すれば制御はステップS02076に戻り、さもなけれ
ば係数処理6を終了する。図80を参照して、図79の
ステップS02091等で使用される符号S3の導出処
理は次のようにして行なわれる。
【0117】まずステップSC1で、レジスタRw2、
Rw3、Rw4、NNにそれぞれ6RB、3RC、R
D、Nを設定する。この設定はたとえば符号S2で行な
われていたものと類似である。続いてステップSCでレ
ジスタNNの値が0かどうかについての判断が行なわれ
る。0であれば制御はステップSC4に、さもなければ
制御はステップSC3に進む。ステップSC3では、レ
ジスタNNの値を1減算し、レジスタRw2、Rw3の
内容をそれぞれ上位方向に2桁、1桁シフトさせる処理
が行なわれる。ステップSC3の後制御は再びステップ
SC2に戻る。このステップSC2、SC3の処理によ
り、レジスタRw2、Rw3の値をそれぞれ2桁、1桁
上位方向へシフトする処理がN回繰返し行なわれる。
【0118】ステップSC4では、Rw2+Rw3+R
w4の値を加算してRSを得る。このRSの値は図26
の加算器544の出力A9として現われる。なおこのと
きにも、図24の加算器520への入力のうちRw5は
与えられず、図26の加算器540への入力のうち、R
w1も、減算器542の入力RFも与えられないことに
注意すべきである。このようにして算出された値RSは
次の式で示される値を表わす。
【0119】
【数23】 ステップSC5でRSが正かどうかについての判断が行
なわれ、正のあればステップSC7で符号S3に「+」
が設定され、さもなければステップSC6で符号S3に
「−」が設定される。符号S3を求めるための回路は、
具体的には次のように動作する。 図22を参照して、セレクタ490を制御して6R
BをレジスタRw2(492)に格納する。図21を参
照して、セレクタ480を制御して、3RCをレジスタ
Rw3(482)に格納させる。図20を参照して、セ
レクタ470を制御してRDをレジスタRw4(47
2)に格納する。さらに図28を参照して、セレクタ5
88を制御してNをセレクタNN(590)に格納す
る。
【0120】 図28を参照して、セレクタ592を
制御して1を選択させる。加減算器594によりレジス
タNNと「1」との差をとり、セレクタ588を介して
レジスタNNに再び格納する。同時に、Rw2は2桁、
Rw3は1桁、その内容を上位方向にシフトする。この
処理を判定信号JS10a(図28)が出力されるまで
繰返し行なう。 図25を参照して、セレクタ530および532を
制御して、それぞれRw2、Rw3を選択させる。加減
算器534で両者の和をとりその出力AG3を図26の
加算器540、594を介して出力A9とする。このと
き、Rw1、A10、RFはそれぞれの加算器540、
542には与えない。判定回路546から出力される判
定信号JS9aにより符号S3が求められる。
【0121】図81には、符号S4の導出処理のフロー
チャートを示す。符号S4は、次の式によって表わされ
る値RSの符号を示す。 RS=4RB・10N +RC まずステップSD1で、レジスタRw2、Rw3、NN
にそれぞれ4RB、RC、Nが設定される。続いてステ
ップSD2でレジスタNNの値が0かどうかについての
判断が行なわれる。0であれば制御はステップSD4
に、さもなければ制御はステップSD3にそれぞれ進
む。ステップSD3ではレジスタNNの値が1減算さ
れ、レジスタRw2の値が上位方向に1桁シフトされ
る。ステップSD3の後制御はステップSD2に戻る。
ステップSD2、SD3の処理により、レジスタRw2
の内容を1桁上位方向にシフトする処理がN回繰返し行
なわれることになる。
【0122】ステップSD4では、前述のRSの値がR
w2+Rw3の値として図26の加算器544の出力A
9に得られる。なおこのときにも、図26においてRw
1、A10、RFのいずれも加算器540または減算器
542に与えられないことに注意すべきである。再び図
81を参照して、ステップSD5でRSが正かどうかに
ついての判断が、図26の判定信号JS9aを用いて行
なわれる。正であればステップSD7で符号S4に
「+」が設定され、さもなければステップSD6で符号
S4に「−」が設定される。なお、レジスタR1〜R2
5には、後述する初期値の設定処理で初期値が設定され
るが、符号S1とほぼ同様にして、レジスタR1に設定
する初期値を得ることができる。レジスタR1の初期値
と、符号S1〜S4を求める処理を次の表4に示す。
【0123】
【表4】 表4は、図75、図78、図80および図81を参照し
て説明した処理をまとめたものであるので、ここではさ
らにはその詳細は説明しない。 (8) 係数処理7(図82) 係数処理7では、まずステップS02101で、符号S
2およびS4の双方が「+」であり、符号S3が「−」
であるという条件が満足されているかどうかについての
判断が行なわれる。この条件が満足されていれば制御は
ステップS02105に、さもなければ制御はステップ
S02102に進む。ステップS02102では、係数
シフト処理を行ない、ステップS02103で符号S1
が「−」かどうかについての判断が行なわれる。「−」
であれば制御はステップS02104に進み、さもなけ
れば制御はステップS02102に戻る。
【0124】ステップS02104では、再びステップ
S02101と同じ判断が行なわれる。条件が満足され
ていれば係数処理7は終了し、さもなければ制御はステ
ップS02102に戻る。一方ステップS02105で
はレジスタNの値が1加算される。続いてステップS0
2106で符号S1が「−」かどうかについての判断が
行なわれる。「−」であれば制御はステップS0210
7に進み、さもなければ制御はステップS02108に
進む。ステップS02107では、ステップS0210
1と同じ処理が繰返して行なわれる。条件が満足されて
いれば制御はステップS02105に戻り、さもなけれ
ば制御はステップS02108に進む。
【0125】ステップS02108ではレジスタNの内
容が1減算され係数処理7を終了する。 (9) 「係数処理」のまとめ 以上述べた係数処理、特に係数処理4は一見複雑なよう
に見える。しかし、前述したように係数処理で係数に対
して行なっている処理は「符号の反転1」と「符号の反
転2」と「係数シフト」とのみである。他に行なわれて
いる演算としてはNの加減算や、フラグYGの設定のみ
である。符号S1〜S4の処理も、前述したようにレジ
スタに記憶されている数をシフトした後、それらの和や
差を求めるもので、計算処理としては複雑なものは含ま
れていない。どちらかと言えば計算機が最も得意とする
演算処理である。したがってこのような係数処理は高速
に実行することができる。
【0126】ただし、式(1)が4次方程式であり、定
数Fが正で、かつ4次項の係数Bが負であるときには、
係数処理4(図76)のステップS02051およびS
02052で行なわれる次の不等式が成立しているかど
うかの判定が必要となる。
【0127】
【数24】 最終的には、既に述べたようにこれらの判定には乗算処
理も用いられるが、しかし大小比較のみであるために、
部分的な工夫を行なうことが可能である。たとえばDが
正であれば3C2 ≦8BDは常に成立しないことがわか
る。なぜならばBが条件から負であるためである。また
乗算処理における計算精度もそれほど高いものは要求さ
れない。また上述の説明において用いた図71〜図82
のフローチャートは、係数処理の流れの一例である。こ
の図は、必要な処理をすべて別個に表わしたのでかなり
のステップ数となるが、実際にはより簡単な流れとする
ことが可能である。たとえば係数処理5(図77)と係
数処理6(図79)とはほとんど同じであり、ステップ
S02081、ステップS02091で行なわれる判定
内容が異なるのみである。したがって、係数処理5と6
とを区別するためのフラグを1個設ければ、これらを1
つのフローチャートとして扱うこともできることに注意
すべきである。本実施例の説明ではわかりやすくするた
めに、これらを別個のフローチャートとして示してい
る。
【0128】(10) 係数処理の具体例 以下、係数処理の実際につき具体例を挙げて説明する。
なお、以下では説明を簡略化するために次のように置く
ものとする。
【0129】
【数25】 すなわち、符号S1、S2、S3およびS4は、それぞ
れf1 (N)、f2 (N)、f3 (N)およびf
4 (N)の符号ということになる。 例1 与えられた方程式は
【0130】
【数26】 であり、求めるべき根の仮数部の桁数は4桁であるもの
とする。初期値を格納するためのレジスタRA、RB、
RC、RD、RE、RFおよびNには、それぞれ−2、
246912、0、0、−3、−370368、3が記
憶される。ここでNとしては、求めるべき根の仮数部の
桁数より「1」だけ小さい数が記憶されることに注意す
べきである。 (a) 準備 準備処理では、YG、XAおよびXDにそれぞれ「0」
が、XSに「+」が設定される。 (b) 係数処理1 RFが負であるため、「符号の反転2」が実行される。
すなわちRA〜RFに「−1」が乗算される。その結果
各レジスタRA、RB、RC、RD、RE、RF、N、
XA、XD、XSおよびYGにはそれぞれ2、−246
912、0、0、3、370368、3、0、0、+、
0が記憶される。
【0131】(c) 係数処理2 最大次数(5次項)の係数(RAに記憶されている数)
が正である。したがって直ちに次のステップである係数
処理3に進む。 (d) 係数処理3 f1 (N)の符号、すなわち符号S1を求める。N=3
であるから次が成立し符号S1=「−」となる。
【0132】
【数27】 したがって、図74においてステップS02042に進
みNが1加算され4となる。次のステップS02043
で再びS1が「−」かどうかについての判断が行なわれ
る。この場合f1 (4)については次のようになり、し
たがってS1=「−」となる。
【0133】
【数28】 したがって制御は再びステップS02042に戻りNが
さらに1加算され5となる。再びステップS02043
でf1 (5)が次の式により求められ、S1=「−」と
なる。
【0134】
【数29】 さらにステップS02042でNが1加算され6とな
る。ステップS02043でf1 (6)が次のようにし
て求められ符号S1が「+」となる。
【0135】
【数30】 したがってN=6となって初めて制御はステップS02
044に進む。ステップS02044でNが1減算され
(すなわち5となる)、係数処理3を終了する。このと
き、レジスタRA、RB、RC、RD、RE、RF、
N、XA、XD、XSおよびYGにはそれぞれ、2、−
246912、0、0、3、370368、5、0、
0、+、0が格納されている。 例2 与えられた方程式が
【0136】
【数31】 であり、求めるべき根の仮数部の桁数が4桁である場合
を考える。この場合レジスタRA、RB、RC、RD、
RE、RFおよびNに初期値として記憶される数はそれ
ぞれ−2、0、0、−123、4、12807527、
および3となる。 (a) 準備 YG、XAおよびXDに「0」が、XSに「+」がそれ
ぞれ設定される。 (b) 係数処理1 RFが正であるため、係数処理2に進む。 (c) 係数処理2 最大次数(5次項)の係数が負であるため、図73のス
テップS020213で符号の反転1の処理が行なわれ
る。すなわち、レジスタRA、RCおよびREに「−
1」が乗算され、根の符号XSが反転される。その結果
レジスタRA、RB、RC、RD、RE、RF、N、X
A、XD、XSおよびYGにはそれぞれ、2、0、0、
−123、−4、12807527、3、0、0、
「−」、0が格納される。
【0137】さらに次の処理として係数処理3が選択さ
れる。 (d) 係数処理3 f1 (N)(N=3)が次の式のようにして求められ、
符号S1は「+」となる。
【0138】
【数32】 したがって、図74においてステップS02045に進
み係数シフトの処理が実行される。すなわち、レジスタ
RB、RC、RD、REおよびRFに記憶されている数
を上位方向にそれぞれ1、2、3、4および5桁シフト
し、XDに「1」を加える処理が行なわれる。その結
果、レジスタRA〜RF、N、XA、XD、XSおよび
YGに記憶される数または符号はそれぞれ2、0、0、
−123000、−40000、1280752700
000、3、0、1、「−」、0となる。さらにステッ
プS02046で、次のようにしてf1 (3)を計算す
ることにより符号S1が求められる。この場合S1は
「+」となる。
【0139】
【数33】 したがって図74において制御は再びステップS020
45に戻る。ステップS02045の係数シフト処理の
結果、レジスタRA〜RF、N、XA、XD、XSおよ
びYGにはそれぞれ、2、0、0、−123・106
−4・108 、12807527・1010、3、0、
2、「−」、0がそれぞれ格納される。そして再びステ
ップS02046で次の式によりf1 (3)を計算し符
号S1を求める。この場合には符号S1は「−」に転ず
る。
【0140】
【数34】 したがって係数処理3の処理を終了して次の初期値の設
定処理に進む。このときの各レジスタの内容は、レジス
タRA〜RF、N、XA、XD、XS、YGの順に2、
0、0、−123・106 、−4・108 、12807
527・1010、3、0、2、「−」、0となってい
る。 例3 与えられた方程式が
【0141】
【数35】 であり、求めるべき根の仮数部の桁数が4桁であるもの
とする。レジスタRA〜RF、Nに初期値として記憶さ
れる数はそれぞれ0、−1、180、−2176、−1
36896、56098867、3である。 (a) 準備 YG、XAおよびXDに「0」が、XSに「+」が設定
される。 (b) 係数処理1 RFが正であるため、係数処理2に進む。 (c) 係数処理2 図73を参照して、ステップS020201から制御は
ステップS020202に進む。レジスタRBに記憶さ
れている数(2次項の係数)が負であるために、制御は
ステップS020210からステップS020211に
進み、次の処理として係数処理4が選択される。
【0142】(d) 係数処理4 この係数処理4に制御が移ったとき、レジスタRA〜R
F、N、XA、XD、XSおよびYGには、それぞれ
0、−1、180、−2176、−136896、56
098867、3、0、2、「−」、0が記憶されてい
る。図76を参照して、ステップS02051では、3
RC2 と8RB・RDの大小比較が行なわれる。
【0143】
【数36】 となるので、制御は図76のステップS02052に進
む。ステップS02052では、8RB2 ・REと(4
RB・RD−RC2 )RCとの大小比較が行なわれる。
【0144】
【数37】 となるので、制御はステップS02053に進む。RC
>0であるので、RDおよびREの符号とは関わりな
く、制御はステップS02057に進む。ステップS0
2057でフラグYGに2が設定され、ステップS02
061に処理が進む。ステップS02061では次のよ
うにf1 (N)(N=3)が求められ、符号S1が
「−」となる。
【0145】
【数38】 その結果制御はステップS02062に進み、次の処理
として係数処理6が選択される。 (e) 係数処理6 図79を参照して、ステップS02091で、次のよう
にf2 (N)、f3 (N)およびf4 (N)(N=3)
が求められ、それぞれの符号S2、S3およびS4を得
る。
【0146】
【数39】 すなわち符号S2、S3およびS4はすべて負となる。
したがって図79において制御はステップS02096
に進む。ステップS02096では係数シフト処理が行
なわれる。その結果レジスタRA〜RF、N、XA、X
D、XS、YGにはそれぞれ、0、−10、1800
0、−2176000、−1368960000、56
09886700000、3、0、1、「+」、0が記
憶されている。さらにステップS02097で次のよう
にf1 (N)(N=3)が計算され、符号S1は「−」
と求められる。
【0147】
【数40】 したがって制御はステップS02098に進む。ステッ
プS02098では再びf2 (N)、f3 (N)および
4 (N)(N=3)を求め、その符号S2、S3およ
びS4がすべて負かどうかを判定する。この場合
【0148】
【数41】 となるので、符号S2は「+」となる。したがって符号
S3およびS4の値にかかわらず、係数処理6が終了す
る。このとき、レジスタRA〜RF、N、XA、XD、
XS、YGにはそれぞれ0、−10、18・103 、2
176・103 、−136896・104 、56098
867・105 、3、0、1、「+」、0が記憶されて
いる。なお、上述の例1に見られるように、求めるべき
根の仮数部の桁数が、係数処理を行なうことによって大
きくなる場合がある。例1では当初設定したのは4桁
(N=3)である。しかし、係数処理が終わった段階で
はN=5に変化してしまっており、このまま処理を進め
れば仮数部として6桁が根として求められる。このよう
な問題を回避するために、図13に示されるレジスタ3
94に一旦レジスタ390の内容Nを退避しておき、係
数処理が終了した段階で再びセレクタ388を介してレ
ジスタ390に戻しておけばよい。
【0149】[初期値の設定の詳細]上述の係数処理ま
での処理で得られたレジスタRA〜RFおよびNに記憶
されている数から、図1〜図68までのブロック図に示
されたような演算器を用いて、29個のレジスタR0〜
R5、R6A〜R6D、R7〜R25に初期値を設定す
る。ただし、レジスタR7、R20およびR23にはそ
れぞれ「0」が初期値として与えられる。また、レジス
タR0にはレジスタRFに記憶されている数が初期値と
して与えられる。各レジスタに与えられる数は次のよう
にして定められている。なお、ここでは説明の簡略化の
ために、レジスタRA〜RFに記憶されている数をそれ
ぞれA〜Fと表記している。
【0150】
【数42】 ここで設定する数は5次方程式から2次方程式まで共通
である。しかし、対象とする方程式の次数が低い場合に
は、より少ないレジスタを用いることができる。対象と
する方程式と、必要となるレジスタとの関係を図83に
表形式で示す。この図83については、既に図面の概略
構成の項で説明した。たとえば、対象となる方程式が3
次方程式または2次方程式である場合には、8個のレジ
スタ(R0、R1、R2、R3、R6C、R6D、R7
およびR8)のみでよい。また、3乗根を求める場合に
は7個のレジスタ(R0、R1、R2、R3、R6C、
R7およびR8)のみでよい。図84は、前述のとお
り、これらのレジスタに設定する数をレジスタごとに仮
数部および指数部に分けて表形式で示したものである。
最も左の列にはレジスタ名が記載されている。各レジス
タに設定される値は、そのレジスタの行に記述されてい
る数をすべて加えたものである。各指数部の値は、対応
する仮数部に付加される「0」の個数と考えればよい。
たとえば図84を参照して、レジスタR3に設定される
数は、「レジスタRAに記憶されている数Aを3倍して
その右に0を「5N+1」個付加したもの」と「レジス
タRBに記憶されている数Bを12倍してその右に0を
「4N」個付加したもの」と「レジスタRCに記憶され
ている数Cを6倍してその右に0を「3N」個付加した
もの」との和である。なおレジスタR3の場合には、数
D、Eには関係がなく、その部分が空白になっている。
空白の部分はその仮数部が「0」として設定されると考
えればよい。
【0151】図84に示す初期値の設定方法は一例を示
したものであり、他の方法も考えられる。たとえばレジ
スタR6A、R6B、R6CおよびR6Dの和を、次の
ように1個のレジスタR6に記憶する方法も考えられ
る。
【0152】
【数43】 レジスタR6A〜R6Dに記憶されている数は、それら
の加算値が後の処理で用いられる。したがって上述の数
43で示されるように1つのレジスタR6にまとめれば
必要となるレジスタの数は減少するように思われる。し
かし、実際には後に述べるようにそうではなく、このよ
うに分割した方がレジスタの数は少なくてすむ。Nの値
によっては、指数部が負になる場合が考えられる。Nが
小さい場合である。たとえばレジスタR24およびR2
5の指数部はそれぞれ5N−12、5N−13である。
N=2のときには、これらはいずれも負となる。このよ
うな場合は、そのようなレジスタにいかなる数を設定し
ても、求められる根の仮数部には影響がない。したがっ
てここでは、そのような場合には「0」を設定すること
とする。
【0153】以下に、各レジスタに設定する数の生成方
法について述べる。この生成方法はあくまで一例であ
り、各々のレジスタに設定する数を生成する手段は他に
も種々考えられる。以下に述べる例は、固定小数点方式
による加算機能および桁シフト機能を用いてこれらの数
を生成する方法である。整数の乗算機能および加減算機
能を用いてもよいが、本例のようにすることによりより
高速に処理することができる。生成する手順の概略とし
ては、まずレジスタRA〜RFに記憶されている数の所
定の倍数を求め、求めた倍数ごとに桁シフトを行なって
最後に必要なものについて加算をすることとする。 (1) 倍数の処理(仮数部を得る) 図84を参照して、レジスタRAに記憶されている数A
については、「3、12、54、99、198、29
7、1782、4212、9999、23895、13
85505、2365605、4450545、124
69545」を乗じたものを求めればよい。数Bについ
ては「2、12、24、108、198、936、99
9、3564、8424」を乗じたものを求めればよ
い。数Cについては「6、27、99」を乗じたものを
求めればよい。数Dについては「2、9」を乗じたもの
を求めればよい。
【0154】上述した数Aの倍数を求める手順を図85
〜図87に示す。図86および図87は、図85の各部
をそれぞれ詳細にしたものである。図86および図87
において、各ボックスの上段には、生成される数を、各
ボックスの下段にはその生成された数が格納されるレジ
スタをそれぞれ示した。レジスタ名が記載されていない
ものと、空いているレジスタのいずれを使用してもよい
ことを示す。図85〜図87においては、途中で生成さ
れる数を、できるだけ有効に利用するように工夫したも
のである。すなわち、無駄な処理が極力省かれている。
しかもシフトと加減算のみを用いて倍数が求められる。
図86および図87において、与えられた数を2倍、9
倍、99倍、999倍、9999倍するサブルーチンを
想定している。2倍を計算するためにはたとえば図16
に示されるように同一の入力を加算すればよい。或る数
を9倍する場合には、その数を1桁左側にシフト(10
倍)したものからその数を引けばよい。また99倍する
場合には、その数を2桁左にシフト(100倍)しその
数を引けばよい。同様に999倍や9999倍した数を
生成するサブルーチンも簡単に作成できる。2倍、9
倍、99倍、999倍、9999倍の組合せと、多少の
加減算処理および左シフト処理を行なうことにより、図
86および図87に示されるように初期値として必要と
なる倍数(この場合にはAの倍数)を生成することがで
きる。他の数B、CおよびDについても同様であり、そ
れらについては後述する。
【0155】例として、数Aから、レジスタR21に設
定する数のうちのAの倍数を求める処理について説明す
る。 (a) 図86を参照して、基になる数Aを2倍して2
Aを生成する。この値はいずれのレジスタに格納しても
よい。この2Aと基の数Aとを加算し3Aを生成し、レ
ジスタR3に転送、記憶させる。3Aを2倍することに
より6Aが生成され、さらにこれを9倍して54Aが生
成され、レジスタR10およびR19に転送、記憶され
る。同様に6Aを2倍した12Aが生成されレジスタR
5に転送され記憶される。レジスタR10(またはR1
9)に記憶された数54Aから、先に得られた数2Aを
引くことにより、52Aが生成される。さらに図87を
参照して52Aを9倍する処理を2回経ることにより4
212Aが生成されレジスタR12に転送され記憶され
る。この4212Aと2Aおよび別途生成される265
5A(生成手順は略す)より、1555A(=4212
A−2655A−2A)を生成し、9倍、99倍する処
理を行なうことにより1385505Aが生成される。
この値がレジスタR21に転送され記憶される。さらに
この値を9倍すれば12469545Aが生成され、レ
ジスタR25に転送され記憶される。
【0156】途中で生成された1555Aから、Aを3
桁左シフトした値1000Aを引くことにより、555
Aが生成され、9倍する処理を2度、さらに99倍する
処理を行なうことにより4450545Aが生成され、
レジスタR24に転送、記憶される。その他、297A
がレジスタR17に、198AがレジスタR9に、17
82AがR14、R22に、23895AがR8に、2
365605AがR13に、それぞれ記憶される。 (b) 上述の数Aと同様の処理を数B、C、Dに対し
ても行なう。これらの生成方法はそれぞれ図88、図8
9、図90に示されている。その内容は数Aからの数を
生成する場合と同様であるのでここでは詳細には説明し
ない。 (2) 指数部の処理 たとえばレジスタR1に記憶する数は、「数Aを左(上
位方向)へ5N桁シフトしたもの」と「数Bを左へ4N
桁シフトしたもの」と「数Cを左へ3N桁シフトしたも
の」と「数Dを左へ2N桁シフトしタもの」と「数Eを
左へN桁シフトしたもの」とを加えればよい。仮にこれ
ら数が負のときには減算となることは当然である。
【0157】同様にレジスタR8に記憶する数は「数A
を23895倍したものを左へ(5N−4)桁シフトし
たもの」と「数Bを936倍したものを左へ(4N−
3)桁シフトしたもの」と「数Cを27倍したものを左
へ(3N−2)桁シフトしたもの」とを加えればよい。
すなわち、基本的には、レジスタRA〜REに記憶され
ている数を、図84に示されるように何倍かしたもの
を、さらに何桁か左(上位方向)へシフトしたうえで、
必要であればそれらの和をとったうえで対応するレジス
タに格納すればよい。ここで注意すべきことは、レジス
タR3やR8などのように、倍数を2個あるいは3個加
えたものを1個のレジスタに記憶させる場合に、演算用
のレジスタまたは他の空いているレジスタにまずここの
倍数を求め、左へシフト処理を行なったうえで互いに加
算する必要があることである。すなわちレジスタR3に
は、図84に示されるように3Aを用いた値と、12B
を用いた値と、6Cを用いた値とを加算する必要があ
る。しかもこれらにはそれぞれの指数部に対応したシフ
ト処理を行なっておく必要がある。たとえばレジスタR
3に最終的に設定する数を得るには次のようにする。ま
ず、3A・105 N+1をレジスタR3に求める。次に
レジスタR7に12B・104Nを求める。そしてそれを
レジスタR3に加える。次に、6C・103Nをレジスタ
R7に得、それをレジスタR3に加える。このように途
中に用いたレジスタは、必要であればこの処理が終了し
た後「0」を記憶させておけばよい。この例の場合に
は、レジスタR7の代わりにレジスタR6Dを用いても
よい。
【0158】[仮数部の導出の詳細] (3) これら初期値の設定処理について、対応する回
路部分を以下に説明する。 (a) 2倍、9倍、99倍、999倍、9999倍サ
ブルーチン 2倍するサブルーチン 対象はレジスタRA〜RDに記憶されている数である。
図22のセレクタ490を制御し、対象となる数を記憶
しているレジスタの内容をレジスタ492に転送する。
次に図25を参照して、セレクタ530および532を
制御してともにRw2を選択し、加減算器534でこれ
らを加算する。この出力AG3を所定のレジスタに格納
する。
【0159】 9倍するサブルーチン 対象はレジスタRA〜RDに記憶されている数である。
図22に示されるセレクタ490を制御し、対象となる
数を記憶しているレジスタの内容をレジスタ492(R
w2)に転送する。転送された数をZとする。図25に
示されるセレクタ530を制御してRw2<1>を選択
させ、セレクタ532を制御してRw2を選択させる。
加減算器534で両者の差をとることにより、加減算器
534の出力は(10Z−Z)、すなわち9Zとなる。
これを所定のレジスタに格納する。 99倍するサブルーチン 対象はレジスタRA〜RCに記憶されている数である。
【0160】図22のレジスタ492に対象となる数を
記憶しているレジスタの内容を転送することは今までと
同様である。転送された数をZとする。図25を参照し
て、セレクタ530によりRw2<2>を、セレクタ5
32によりRw2をそれぞれ選択させる。加減算器53
4で両者の差をとると、その出力は(100Z−Z)、
すなわち99Zとなる。これを所定のレジスタに転送し
格納させる。 999倍、9999倍するサブルーチン 対象はレジスタRA、RBに記憶されている数である。
上述の99倍するサブルーチンと同様の処理であり、図
25のセレクタ530で選択するものをそれぞれRw2
<3>、Rw2<4>とすればよい。 (b) 初期値の設定1(仮数部) ここでは一例として、図84に示した、レジスタRAに
記憶されている数を整数倍したもの、すなわち16個の
レジスタR3、R5、R6A、R8〜R10、R12〜
R14、R16〜R19、R21、R22、R24およ
びR25に設定する数の仮数部を求める場合について対
応する回路の動作を説明する。なお以下の説明において
<>中に記載されているのは、処理後にレジスタが記憶
している数であり、アンダーラインが付されている部分
は新たに設定されたものを示している。
【0161】(b01)図22および図21に示される
セレクタ490および480を制御して、レジスタRA
に記憶されている数AをレジスタRw2およびRw3に
転送する。
【0162】
【数44】 (b02)図25を参照して、セレクタ530、532
を制御して、それぞれRw2<4>とRw2とを選択さ
せ、加減算器534でその差をとる。加減算器534の
出力AG3(10000A−A=9999A)をレジス
タR6Aに格納する。なお、レジスタRw2およびRw
3は元の値Aを保持する。以下の説明では、このように
内容を保持する場合については、命令も含めて表記を省
略する。
【0163】
【数45】 (b03)図25を参照して、セレクタ530および5
32を制御してそれぞれRw2<2>、Rw2を選択さ
せる。加減算器534により両者の差をとる。加減算器
534の出力AG3(100A−A=99A)をレジス
タR16に格納する。
【0164】
【数46】 (b04)セレクタ530および532を制御して、そ
れぞれRw2を選択させる。加減算器534により両者
の和をとる。加減算器534の出力AG3(2A)をレ
ジスタRw2およびRw4に格納させる。
【0165】
【数47】 (b05)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<2>、Rw2を選択
させる。加減算器534で両者の差をとる。加減算器5
34の出力AG3(200A−2A=198A)をレジ
スタRw2およびRw9に格納する。
【0166】
【数48】 (b06)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとる。加減算器5
34の出力AG3(1980A−198A=1782
A)をレジスタR14およびR22に格納する。
【0167】
【数49】 (b07)図25を参照して、セレクタ530および5
32を制御して、それぞれRw4、Rw3を選択させ
る。加減算器534で両者の和をとり、その出力AG3
(3A)をレジスタRw2およびR3に格納する。
【0168】
【数50】 (b08)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<2>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(300A−3A=297A)をレジスタRw2お
よびR17に格納する。
【0169】
【数51】 (b09)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2およびRw4を選択さ
せる。加減算器534により両者の差をとり、その出力
AG3(297A−2A=295A)をレジスタRw2
に格納する。
【0170】
【数52】 (b10)図25を参照して、セレクタ530および5
32を制御して、Rw2<1>、Rw2を選択させる。
加減算器534で両者の差をとり、その出力AG3(2
950A−295A=2655A)をレジスタRw2お
よびRw5に格納する。
【0171】
【数53】 (b11)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(26550A−2655A=23895A)をレ
ジスタRw2およびR8に格納する。
【0172】
【数54】 (b12)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534により両者の差をとり、その出
力AG3(238950A−23895A=23656
05A)をレジスタR13に格納する。
【0173】
【数55】 (b13)図25を参照して、セレクタ530および5
32を制御して、それぞれRw4、Rw3を選択させ
る。加減算器534で両者の和をとり、その出力AG3
をレジスタRw2に格納する。
【0174】
【数56】 このとき、「3A」はレジスタR3で既に求められてい
る。したがって、レジスタR3の内容をレジスタRw2
に転送してもよい。(b14)図25を参照して、セレ
クタ530および532を制御して、いずれもRw2を
選択させる。加減算器534で両者の和をとり、その出
力AG3(6A)をレジスタRw2に格納する。
【0175】
【数57】 (b15)図25を参照して、セレクタ530および5
32を制御して、いずれもRw2を選択させる。加減算
器534で両者の和をとり、その出力AG3(12A)
をレジスタR5に格納する。
【0176】
【数58】 (b16)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3をレジスタRw2、R10およびR19に格納す
る。
【0177】
【数59】 (b17)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2、Rw4を選択させ
る。加減算器534で両者の差をとり、その出力AG3
(54A−2A=52A)をレジスタRw2に格納す
る。
【0178】
【数60】 (b18)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(520A−52A=468A)をレジスタRw2
に格納する。
【0179】
【数61】 (b19)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(4680A−468A=4212A)をレジスタ
Rw2およびR12に格納する。
【0180】
【数62】 (b20)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2、Rw5を選択させ
る。加減算器534で両者の差をとり、その出力AG3
(4212A−2655A=1557A)をレジスタR
w2に格納する。
【0181】
【数63】 (b21)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2、Rw4を選択させ
る。加減算器534で両者の差をとり、その出力AG3
(1557A−2A=1555A)をレジスタRw2お
よびRw5に格納する。
【0182】
【数64】 (b22)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2、Rw3<3>を選択
させる。加減算器534で両者の差をとり、その出力A
G3(1555A−1000A=555A)をレジスタ
Rw2に格納する。
【0183】
【数65】 (b23)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(5550A−555A=4995A)をレジスタ
Rw2に格納する。
【0184】
【数66】 (b24)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3をレジスタRw2に格納する。
【0185】
【数67】 (b25)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<2>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(4495500A−44955A=445054
5A)をレジスタR24に格納する。
【0186】
【数68】 (b26)図22を参照して、セレクタ490を制御し
て、レジスタRw5の内容(1555A)をレジスタR
w2(492)に格納する。
【0187】
【数69】 (b27)再び図25を参照して、セレクタ530およ
び532を制御して、それぞれRw2<1>、Rw2を
選択させる。加減算器534で両者の差をとり、その出
力AG3(15550A−1556A=13995A)
をレジスタRw2に格納する。
【0188】
【数70】 (b28)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<2>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(1399500A−155995A=13855
05A)をレジスタRw2およびR21に格納する。
【0189】
【数71】 (b29)図25を参照して、セレクタ530および5
32を制御して、それぞれRw2<1>、Rw2を選択
させる。加減算器534で両者の差をとり、その出力A
G3(13855050A−1385505A=124
69545A)をレジスタR25に格納する。
【0190】
【数72】 以上(b01)〜(b29)の処理を行なった結果、各
レジスタは次のような数を記憶している。
【0191】
【表5】 (c) 初期値の設定2(指数部) 次に、上記(b)の処理で得られた仮数部を、図84の
指数部の欄に掲げた数だけ上位方向にそれぞれシフトす
る。シフト桁数を制御するのは、図28に記載したカウ
ンタ(レジスタNN(590))である。シフト桁数
は、図84に示された各指数部の内容に従って、セレク
タ588で選択してレジスタ590に格納する。さら
に、図84の指数部の定数項に相当する数を加減数、レ
ジスタ590の内容NNを被加減数として加減算器59
4で加算または減算することにより、セレクタ588経
由でレジスタ590に得られる。加減算器594を加算
器として動作させるか、減算器として動作させるかは、
図84の各指数部の欄の定数項の符号に従う。
【0192】図28を参照して、既に述べたように、上
述したレジスタR3、R5、…、R25の内容を上位方
向に1桁ずつシフトするとともに、レジスタ590の値
を1ずつ減算する。そして判定回路596から判定信号
JS10aが出力されるまでこのシフトを行なえばよ
い。図33、図41、図44〜図50、図53〜図64
に示される各レジスタR0、R2〜R25に付加されて
いる遅延用の1桁レジスタはこのシフト処理を行なうた
めのものである。たとえばレジスタR3の値の設定は次
のようにして行なう。 図28を参照して、セレクタ588を制御して5N
を選択しレジスタNN(590)に格納する。 セレクタ592により「1」を選択し、加減算器5
94で加算をしたもの(5N+1)を、セレクタ588
を介して再度レジスタNN(590)に格納する。
【0193】 次に、セレクタ592で1を選択し、
加減算器594で減算を行なわせ、その結果をセレクタ
588を介してレジスタNN(590)に格納する。減
算を行なうごとに、図38に示されるセレクタ760を
介して遅延用レジスタ764により1桁遅延されたレジ
スタR3(762)の内容を再び遅延用レジスタR3
(762)に格納する。これによりレジスタR3(76
2)の内容は1桁上位方向にシフトされたことになる。
このレジスタNNの減算処理とレジスタR3のシフト処
理とを、図28に示される判定回路596から判定信号
JS10aが出力されるまで繰返し行なう。 この繰返しが終了したときには、レジスタR3には
3A・105N+1が記憶されている。
【0194】他のレジスタR5、R6A、…、R25に
ついても、同様の処理を行なう。それらのレジスタの処
理がすべて終了すると、各レジスタには次のような数が
格納されている。
【0195】
【表6】 なお、レジスタR10とR19、R14とR22に設定
される仮数部は図84に示されるようにそれぞれ同じで
ある。したがってレジスタR10とR22とについて
は、それぞれレジスタR19およびR14に得た仮数部
を図84のレジスタR19およびR14の欄に示した指
数部の桁数だけシフトした後、それぞれレジスタR10
およびR22に転送し、さらに2桁シフトを行なう方法
で得てもよい。 (d) 初期値の設定3 以上(b)および(c)の初期値の設定1および2で
は、レジスタRAに記憶されている数から生成する初期
値につき、その生成方法を述べた。レジスタRB、RC
およびRDに記憶されている数から生成する初期値につ
いても同様である。
【0196】ただし、図84に示される、レジスタR2
に設定する2D・102Nと、レジスタR3に設定する1
2B・104Nおよび6C・103Nと、レジスタR8に設
定する936B・104N-3および27C・103N-2と、
レジスタR21に設定する3564B・104N-6につい
ては、とりあえず他のレジスタ(R0、R7またはR2
0)にその仮数部を求め、シフトを行なった後に所定の
レジスタに加算する必要がある。たとえば、初期値の設
定1と同様の方法でレジスタR0に12Bを求め、初期
値の設定2と同様の方法で4N桁上位方向にシフトす
る。その後、図30に示されるセレクタ628および6
30を制御してそれぞれレジスタR0およびR3に記憶
されている数(R0=12B・104N、R3=3A・1
5N+1)を選択させ、加算器632でその和を計算し、
回路620内のレジスタR3に再格納する。このような
処理を繰返すことにより、レジスタR2〜R25に必要
な初期値を設定する。
【0197】(e) 初期値の設定4 レジスタR0およびR1の初期値については、特に次の
ような処理を行なう。 レジスタR0 レジスタR0には、初期値の設定1〜3の処理が終わっ
た後、図33に示されるセレクタ710を制御して、レ
ジスタRFに記憶されている数を格納する。 レジスタR1 レジスタR1の初期値を求める方法は、図75を参照し
て説明した符号S1を求める方法と類似している。レジ
スタR1の初期値を求める場合には、図75のステップ
SA4においてレジスタRw1〜Rw5の和からレジス
タRFに記憶されている数を引く代わりに、レジスタR
w1〜Rw5の和をレジスタR1に転送すればよい。こ
の場合、既に符号S1の導出処理で説明したように、図
26の加算544の出力A9にこれらレジスタRw1〜
Rw5の和が得られる。RFは減算器542には与えな
い。したがって図43において、セレクタ810を制御
してA9を選択しレジスタR1(812)に格納させる
必要がある。
【0198】[仮数部の導出]図69のステップS04
の「仮数部の導出」処理は、上述の初期値の設定処理ま
でにより29個のレジスタR0〜R25に設定した値
と、レジスタNに記憶されている数とを用いて、根の仮
数部をレジスタXAに求める処理である。なお、係数処
理の段階で、既に根の小数部の桁数XDおよび符号XS
が求められていることに注意すべきである。仮数部の導
出処理の概略の手順を図91に示す。 (1) 処理内容 図91のフローチャートを説明する前に、根を導出する
処理について説明する。根を導出する処理は、大別する
と図91のステップS04Aにより示される「処理C」
とステップS04Bに示される「処理D」の2種類であ
る。処理Cは、仮数部の値をカウントアップする処理K
C(ステップS0407)と、終了条件2の判定を行な
う処理ステップS0408とからなる。処理Dは、終了
条件1の判定を行なう処理(ステップS0409)と桁
を移動する処理(S0410およびS0411)からな
る。
【0199】いずれの処理を実行するかは、図91のス
テップS0401〜S0406での、レジスタR0〜R
4に関する4種の判定と、フラグYGの値とによる。図
91の処理を、YG=0、1、2のときに分けて簡略化
して示したのが図94〜図96である。図94〜図96
に示されるステップS04AおよびS04Bの処理は、
図91に示されるものと同一である。与えられる方程式
と、フラグYGとにより、実際の制御の流れは次の表7
に示されるようになる。
【0200】
【表7】 5次方程式〜2次方程式の根を得るための汎用的なフロ
ーチャートは図91である。しかし、与えられる方程式
が、たとえば5次方程式または3次方程式に限定されて
いる場合には、図95の流れのみでよい。 (2) 仮数部の導出処理の流れ 図91を参照して、仮数部の導出処理の汎用的な流れは
次のようになる。まずステップS0401で、レジスタ
R0に記憶されている数とレジスタR1に記憶されてい
る数との大小の判定処理が行なわれる。R1>R0のと
きには制御はステップS0409に進む。さもなければ
制御はステップS0402に進む。ステップS0409
以下の処理については後述する。
【0201】ステップS0402では、フラグYGが0
か否かについての判断が行なわれる。「0」である場合
には制御はステップS0407に進む。ステップS04
07以下の処理については後述する。フラグYGが0で
ない場合には制御はステップS0403に進む。ステッ
プS0403に制御が進むのは、与えられた方程式が4
次または2次方程式の場合のみである。ステップS04
03では、レジスタR1に記憶されている数とレジスタ
R2に記憶されている数との和の符号の判定処理が行な
われる。R1+R2≧0が成立する場合には制御はステ
ップS0407に進む。さもなければ制御はステップS
0404に進む。ステップS0404ではフラグYGが
1かどうかについての判定が行なわれる。フラグYGが
1であれば制御はステップS0409に、さもなければ
制御はステップS0405にそれぞれ進む。
【0202】ステップS0405に制御が進むのは、与
えられた方程式が4次方程式の場合のみである。ステッ
プS0405では、レジスタR2に記憶されている数と
レジスタR3に記憶されている数との和の符号を判定す
る処理が行なわれる。R2+R3≧0のときには制御は
ステップS0407に進む。さもなければ制御はステッ
プS0406に進む。ステップS0406では、レジス
タR3に記憶されている数とレジスタR4に記憶されて
いる数との和が負かどうかについての判断が行なわれ
る。R3+R4<0であれば制御はステップS0409
に、さもなければ制御はステップS0407に進む。図
91のステップS0401〜S0406に行なわれる判
断に対応する回路について以下説明する。ステップS0
401の判断は、図68の判定信号JH3aによる。ス
テップS0403の判定は、図68の判定信号JS11
aによる。ステップS0405の判定は、図68の判定
信号JS12aによる。そしてステップS0406の判
定は、図68の判定信号JS13aによる。ステップS
0402、ステップS0404のフラグYGについての
判定は、図11の判定信号JS7aによる。これらの判
定結果により制御の流れを変更するのは、図1に示され
る制御部210である。
【0203】(3) 処理C 処理Cは、図91のステップS04Aに示されるように
処理KC(S0407)と終了条件2の判定処理(S0
408)からなる。 ステップS0407で行なわれる処理KCのフロー
チャートを図92に示す。図92に示されるように処理
KCでは、ステップSE1〜SE3により、A、Bおよ
びCグループの3種類の加減算処理をこの順序で実行す
る。なお、Aグループの計算処理はBグループの計算処
理よりも先に行なわれなければならない。ただしCグル
ープについては、他のグループとの計算順序が前後して
もよい。さらに同じグループの中での計算順序は自由で
ある。各グループ内で行なわれる処理は、図92にも示
してあるが以下のとおりである。
【0204】
【数73】 Aグループ、Bグループのように計算処理をグループ分
けするのは、たとえばレジスタR1のように、2つの計
算処理に関与するものがあるためである。この場合に
は、当然その計算順序が問題となり、計算順序が異なれ
ば結果も異なってくる可能性がある。そうした問題を回
避し、正しい結果を得られるようにするためには、計算
順序を明確にしておく必要がある。上述のグループ分け
はそれを明確にするためである。もちろん数73に示さ
れるグループ分けは単なる例であり、他のグループ分け
を行なうことも考えられる。その場合、たとえばレジス
タR1に関してはR0−R1→R0、R1+R2→R1
の計算順序が守られていればよい。
【0205】上述の数73に示した計算が、図1〜図6
8に示した回路により実行できることは明らかであろ
う。 終了条件2 根の仮数部を無限に求めることはできない。したがっ
て、どこかで仮数部を求める処理を打ち切る必要が生ず
る。この終了条件2は、根の仮数部を求める処理を打ち
切るための条件の判定である。ただし、後に述べるステ
ップS0409の終了条件1の判定処理が、終了のため
の本質的な判定処理であるのに対し、このステップS0
408の終了条件2の判定処理は、特定の係数において
処理を早期に打切り、無駄を省くための処理である。こ
の終了条件2は、たとえば根の仮数部を10桁求める場
合に、X=「123」というような、より少ない桁数の
ものが根として得られた場合の終了の判定である。
【0206】終了条件2の判定は、レジスタR0に記憶
されている数が「0」か否かを調べることにより行なわ
れる。この処理は具体的な回路では、図33の判定回路
716で行なわれ、その判定信号JS14aにより図1
に示す制御部210が処理を終了するか否かを決定す
る。たとえば次の除算を行なう場合を考える。 1222155÷99 この答えは「12345」である。ところが、仮に商の
仮数部を10桁求めるように指定している場合、仮数部
として「1234500000」という10桁の数字が
求められてしまう。終了条件1のみの判断では、この無
用な5つの「0」が求められるまで計算処理が続行され
る。しかし、この終了条件2の判定処理を設けることに
より、「12345」が仮数部に求められた時点で計算
処理を終了することができる。したがってこの終了条件
2の判定処理は必ずしも必要ではないことに注意すべき
である。しかしこの終了条件2の判定処理を設けること
により、前述のように処理速度をより向上させることが
できる。
【0207】(4) 処理D 再び図91を参照して、ステップS04Bの処理Dで
は、終了条件1の判定(S0409)と、Nの減算(S
0410)と、後述する処理KDの実行(S0411)
とが行なわれる。ステップS0411の処理KDの後制
御はステップS0401に戻る。終了条件1(S040
9)により終了条件が成立すれば仮数部の導出処理は終
了する。 終了条件1 終了条件1の判定処理は、ステップS0401でのNの
減算処理と合わせ、Nが0が否かを判定して、「0」で
あれば仮数部の導出処理を終了する。後述する処理KD
における処理は、除算における、「被除数から除数を引
けなくなるまで繰返し引き、引けなくなれば、被除数を
上位方向へシフトする」という処理に相当する。したが
って、処理KDを1回実行するごとに根の仮数部が1桁
求められる。処理KDを1回実行するごとにNをカウン
トダウンしていき、Nが「0」になればN桁の根の仮数
部が得られたことになる。したがってこの時点で処理を
終了すればよい。
【0208】ただしこのような終了条件の判定は一例で
あり、他の方法も考えられる。たとえば根の仮数部を記
憶するレジスタXAの下位から数えて(N+1)桁目を
モニタする方法も考えられる。なお、この終了条件1の
判定処理に対応する回路は、図13の判定回路392
(JS8)である。判定信号JS8aにより、図1に示
す制御部210が仮数部の導出処理を終了させる。 処理KD 処理KDは、前述したように、除算における「被除数か
ら除数を何回か引き、引けなくなれば被除数を上位方向
へシフトする」処理に相当する。より具体的には、図9
3に示されるようなフローチャートに従って計算処理を
行なう。
【0209】図93を参照して、処理KDでは、ステッ
プSF1〜SF7により、D、Kグループ、Eグルー
プ、Fグループ、Gグループ、Hグループ、Iグループ
およびJグループの計算処理をこの順序で実行する。た
だし、Kグループの実行順序はこの例に限らず、他のい
ずれの位置でもよい。また同一グループの中では計算順
序は任意である。図93にも示したが、本実施例のグル
ープ分けは次のようなものである。なお、表記をわかり
やすくするために以下のような表記方法を用いる。 Rn[Z]:レジスタRnの内容を右方向にZ桁シフト
することを示す。すなわちレジスタRnの内容を下位方
向にZ桁シフトする。 XA<1>:根の仮数部を記憶するレジスタXAの内容
を左方向に1桁シフトすることを表わす。すなわちレジ
スタXAの内容を上位方向に1桁シフトする。
【0210】
【数74】 なお、レジスタR6A、R6B、R6CおよびR6Dに
記憶されている数の和をたとえば、別個のレジスタR6
を設けてこれに記憶させることが考えられる。そのよう
にすれば、Eグループの最初の計算は簡単になるように
見える。しかし、数74のFグループに示されるよう
に、レジスタR6A〜R6Dのシフト回数はそれぞれ互
いに異なっている。したがって上述のように設けたレジ
スタR6ではFグループの計算を行なうことができず、
再度それぞれシフト後のR6A〜R6Dの和を求め直す
必要がある。結果的には、必要となる計算量は変わらな
い。逆に、和を保持するためのレジスタR6が別途必要
になるだけである。したがって本実施例ではそのような
レジスタR6は設けていない。
【0211】(5) 図97〜図99に処理KCで行な
われる計算のためのレジスタ間およびレジスタと必要な
演算器との接続を、図100〜図107に処理KDで行
なわれる計算処理で使用されるレジスタおよび演算器と
の接続関係を示す。これらの接続関係を得るために、図
1〜図68に示される回路内の各セレクタをどのように
設定したらよいかは容易にわかるので、ここでは詳細に
は説明しない。ただし、図97〜図107において、図
1〜図68に示される回路内の各部品と同一の部品には
同一の参照符号を与えてある。なお、レジスタの内容の
上位方向へのシフトについては既に説明してあるが、下
位方向へのシフトについては図面上その方法を説明する
ような回路は記載していない。しかしたとえばレジスタ
がいわゆるシフトレジスタである場合には、レジスタの
最上位ビットに「0」が入力されるようにしておいて、
1桁分のシフト用のクロックパルスを与えてやればよ
い。
【0212】[小数点位置の調整]図69のステップS
05で行なわれる小数点位置の調整処理の詳細を図10
8に示す。この小数点位置の調整処理は、図91におい
て終了条件1が検出されて仮数部の導出処理が終了した
場合には特にその必要はない。しかし、図91のステッ
プS0408で終了条件2が検出されて仮数部の導出処
理が終了したときに必要となる場合がある。終了条件2
が検出されて仮数部の導出処理が終了した場合には、N
=0となっていない場合がある。そのような場合には、
小数部の桁数を示すレジスタXDから、レジスタNの内
容を引く必要がある。これが小数点位置の調整である。
この処理をステップS051に示す。その結果、根の値
は次のようになる。
【0213】
【数75】 すなわち、与えられた方程式(1)の根として符号が
「XS」で、仮数部がXA(整数)で、小数点位置が
「−XD」で与えられる。この小数点位置の調整処理を
実行した時点で根が完全に求められたことになる。たと
えばXA=1234500、XD=3、XS=「−」で
あれば根は次のようになる。
【0214】
【数76】 この処理を行なうための回路部分が図13である。図1
3において、セレクタ384を制御してレジスタN(3
90)の値を選択させる。加減算器386によりレジス
タXD(382)とNとの差をとり、レジスタ380を
介してレジスタXD(382)に格納する。これにより
レジスタXD(382)に最終的な小数部の桁数が得ら
れる。第1の実施例の動作例 [動作例]以下、上述の実施例を用いて、[A]最大次
数である5次方程式と、[B]4次方程式との根をそれ
ぞれ1個ずつ求める具体的な計算例を順に示す。なお、
3次方程式の根を求める事例については、図1〜図10
8をより簡略化した図109〜図154を使用して第2
の実施例で説明する。
【0215】[A]5次方程式の例 (1) 与えられた方程式を次の方程式とする。
【0216】
【数77】 また根の仮数部を4桁求めることとする。すなわちN=
3である。レジスタRA〜RFおよびNには次のような
数が設定される。
【0217】
【数78】 (2) 準備(図70) フラグYG、レジスタXA、XDには「0」が設定され
る。レジスタXSには「+」が設定される。 (3) 係数処理1(図72) レジスタRFの内容は正である。したがって符号の反転
2は実行されず、そのまま係数処理2に進む。 (4) 係数処理2(図73) RA>0が成立する。したがって図73において制御は
ステップS020201からS020212に進み、符
号の反転1は行なわれずに次の処理として係数処理3が
選択される。このときの各レジスタの内容は次のとおり
である。
【0218】
【数79】 (5) 係数処理3(図74) (S02041)符号S1の判定以下の手順で符号S1
を求める。この手順は図75に示してあるとおりであ
る。 (a) 図23、図22、図21、図20および図19
を参照して、セレクタ500、490、480、470
および460を制御し、それぞれレジスタRA、RB、
RC、RDおよびREに記憶されていた数をレジスタR
w1〜Rw5に転送する。また図28を参照して、レジ
スタNに記憶されていた数を、セレクタ588を介して
レジスタNN(590)に転送する。この結果、レジス
タRw1〜Rw5およびNNにはそれぞれ、1、−12
345、6789、−83803416、−82000
000および3が格納される。
【0219】(b) 図28を参照して、レジスタNN
(590)の内容を判定回路JS10(596)で判定
する。NN=0であれば判定信号JS10aが出力され
る。この場合レジスタNNの内容は「3」である。した
がって図75のステップSA3で示されるようにレジス
タNNを1減算し、レジスタRw1〜Rw5をそれぞれ
5桁、4桁、3桁、2桁および1桁上位方向にシフトす
る。この処理は次の(b1)および(b2)の手順で行
なわれる。 (b1)図28を参照して、セレクタ592に「1」を
選択させる。加減算器594は減算器として動作させ
る。減算器594の出力をセレクタ588を介してレジ
スタNN(590)に格納する。したがってレジスタN
Nの内容は「2」となる。
【0220】(b2)図23、図22、図21、図2
0、図19を参照して、セレクタ500、490、48
0、470および460を制御して、それぞれ遅延用レ
ジスタ512、500、488、476、464の出力
をレジスタ502、492、482、472、462に
格納させる。これによりレジスタRw1〜Rw5の内容
がそれぞれ5〜1桁上位方向にシフトされる。この結果
レジスタRA〜RF、N、XD、XS、XAの値は変わ
らないが、他のレジスタについては以下のように変化す
る。
【0221】
【数80】 (c) NN=0となるまで上述の(b1)、(b2)
の処理が繰返される。この例では合計3回行なわれる。
したがって、レジスタRw1〜Rw5に当初設定された
数は、それぞれ15桁、12桁、9桁、6桁および3桁
上位方向にシフトされる。これらレジスタとレジスタN
Nとの内容は次のように変わる。
【0222】
【数81】 (d) NN=0となったとき、図25のセレクタ53
0および532を制御してそれぞれRw2、Rw3を選
択させる。また加減算器534を加算器として動作させ
る。これにより出力AG3としてRw2+Rw3が得ら
れる。図26を参照して、減算器542の入力A10に
は、図24に示されるようにRw4+Rw5が与えられ
る。したがって加算器594の出力A9(RS)として
レジスタRw1〜Rw5に記憶されている数の和からレ
ジスタRFに記憶されている数を引いたものが得られ
る。この値は判定回路JS9(546)に与えられる。
本具体例の場合には、図25の加減算器534、図24
の加算器520、図26の減算器542、加算器54
0、加算器544の出力はそれぞれ次のようになる。
【0223】
【表8】 したがって判定回路JS9(546)(図26)では符
号S1は「−」と判定される。(S02042)図74
のステップS02041でS1が「−」と判定されるた
め、ステップS02042でNの加算が実行される。N
=4となる。次に処理はステップS02043に進む。
このときの各レジスタの内容は次のとおりである。
【0224】
【数82】 (S02043)符号S1の判定 再度符号S1を求める。ステップS02041で求めた
ときとはNの値が変化しているのみである。したがって
既に述べたのと同じように符号S1を求めればよい。そ
の結果は次のようになる。
【0225】
【表9】 この結果符号S1は「−」となる。したがって制御は図
74に示されるようにステップS02042に戻る。
(S02042)再びステップS02042でNの加算
が行なわれる。その結果N=5となる。次に処理は再び
ステップS02043に進む。このときの各レジスタの
内容は次のとおりである。
【0226】
【数83】 (S02043)符号S1の判定 再度図74のステップS02043で符号S1を求め
る。この場合も上記した場合とNの値が変化しているの
みである。符号S1はしたがって同じように求めればよ
い。その結果は次のようになる。
【0227】
【表10】 したがって符号S1は「+」となる。図74のステップ
S02043から制御はステップS02044に進む。
(S02044)Nの減算が実行される。これにより係
数処理3が終了し、次の「初期値の設定処理」(図83
〜図93)に制御が進む。このときの各レジスタの内容
は次のとおりである。
【0228】
【数84】 (6) 初期値の設定(図83〜図93) レジスタRAについて レジスタRAに記憶されている数については、次のよう
な処理が行なわれる。 (a) 仮数部の設定(図84および図87) レジスタR3、R5、R6A、R8、R9、R10、R
12、R13、R14、R16、R17、R19、R2
1、R22、R24およびR25にレジスタRAに記憶
されている数を整数倍したものを設定する。その倍数は
図84に示されるとおりである。設定の手順は図85〜
図87に示したとおりである。本具体例の場合にはレジ
スタRA=1である。したがってこの処理により各レジ
スタには次のような仮数部が設定される。
【0229】
【数85】 (b) 指数部の設定(図84) 次に各レジスタの指数部の設定を行なう。本具体例の場
合にはN=4である。したがって図84の「指数部」の
欄に従い、各レジスタについて次の桁数だけ上位方向に
仮数部がシフトされる。すなわち各レジスタは次の桁数
だけ左の方に仮数部がシフトされる。
【0230】
【表11】 この指数部の設定処理の結果、各レジスタの内容は次の
ようになる。
【0231】
【数86】 レジスタRBについて (a) 仮数部の設定 10個のレジスタR2、(R0)、R4、R6B、(R
7)、(R20)、R11、R15、R18および(R
23)にレジスタRBに記憶されている数を整数倍した
ものを設定する。括弧で囲ったレジスタR0、R7、R
20およびR23はそれぞれ、レジスタR3、R8、R
9およびR21の代用である。すなわち、レジスタR
3、R8、R9およびR21には既に数が設定されてい
るために、先に設定された数を保護する必要があるため
である。次の処理(b)で指数部の設定を行ない、処理
(c)でそれぞれの数を加算してレジスタR3、R8、
R9およびR21にそれぞれの数が設定されることにな
る。
【0232】本具体例の場合にはRB=−12345で
ある。したがってこの仮数部の設定処理(a)により各
レジスタには次のような仮数部が設定される。
【0233】
【数87】 (b) 指数部の設定 次に、図84に示される指数部の設定を行なう。本具体
例の場合にはN=4であるため、各レジスタについて次
の桁数だけ上位方向にシフトされる。すなわち左の方向
にシフトされる。
【0234】
【表12】 その結果、各レジスタの内容は次のようになる。
【0235】
【数88】 (c) 上述の処理(b)で得た値のうち、レジスタR
0、R7、R20およびR23の内容をそれぞれ、レジ
スタR3、R8、R9およびR21に加える。この場
合、図30を参照して、セレクタ628および630を
制御して加算すべきレジスタ同士を選択して加算器63
2で加算し、その加算結果を回路620、622、62
4および626のレジスタR3、R8、R9およびR2
1に格納させればよい。この結果レジスタR3、R8、
R9およびR21の格納内容は次のようになる。
【0236】
【数89】 レジスタRCについて レジスタRCに記憶されている数については次のような
処理が行なわれる。 (a) 仮数部の設定 3個のレジスタ(R0)、R6Cおよび(R7)に、レ
ジスタRCに記憶されている数を整数倍したものを設定
する。括弧で囲った2個のレジスタR0およびR7はそ
れぞれ、レジスタR3およびR8の代用である。レジス
タR3およびR8には既に数が設定されている。この先
に設定された数を保護するために、レジスタR3および
R8には直接数の設定はされず、次の処理(b)で指数
部の設定を行ない、処理(c)でそれらの数を加算す
る。
【0237】本具体例の場合にはRC=6789であ
る。したがって各レジスタには次のように仮数部が設定
される。
【0238】
【数90】 (b) 指数部の設定 次に、図84に示すように指数部の設定を行なう。本具
体例の場合にはN=4である。したがって各レジスタに
ついては次の桁数だけ上位方向にシフトされる。
【0239】
【表13】 その結果、各レジスタの内容は次のようになる。
【0240】
【数91】 (c) 上記処理(b)で得た値のうち、レジスタR0
およびR7の内容をそれぞれ、レジスタR3およびR8
に加える。この処理は、図30のセレクタ628および
630においてそれぞれ、レジスタR0およびR7、セ
レクタ630においてR3およびR8を選択させて加算
器632により加算を行なわせる。加算結果をそれぞれ
回路620および622のレジスタR3およびR8に格
納すればよい。この結果レジスタR3、R8、R9およ
びR21の内容は次のようになる。
【0241】
【数92】 レジスタRDについて レジスタRDに記憶されている数については次のような
処理が行なわれる。 (a) 仮数部の設定 2個のレジスタ(R0)およびR6Dに、レジスタRD
に記憶されている数を整数倍したものを設定する。その
倍数については図84に示したとおりである。括弧で囲
ったレジスタR0はレジスタR2の代用である。レジス
タR2には既に数が設定されているため、先に設定され
た数を保護するためである。次の処理(b)で指数部の
設定を行ない、処理(c)でそれぞれの数を加算するこ
とによりレジスタR2の値が設定される。
【0242】本具体例の場合にはRD=−838034
16である。したがって各レジスタには次のように仮数
部が設定される。
【0243】
【数93】 (b) 指数部の設定 次に、図84に示すように指数部の設定を行なう。本具
体例の場合にはN=4である。したがって各レジスタに
つき次の桁数だけ上位方向にシフトが行なわれる。
【0244】
【表14】 その結果、各レジスタの内容は次のようになる。
【0245】
【数94】 (c) 上述までの処理で得た値のうち、レジスタR0
の内容をレジスタR2に加える。図30において、セレ
クタ628および630によりそれぞれR0およびR2
を選択させる。加算器632の出力を回路618内のレ
ジスタR2に格納する。レジスタR2の内容は次のよう
になる。
【0246】
【数95】 レジスタR0、R1、R7、R20およびR23の
設定 (a) レジスタR0には、初期値としてレジスタRF
に記憶されている数を転送する。図33においてセレク
タ710によりレジスタRFの値を選択すればよい。 (b) レジスタR1の初期値は、上述の〜で述べ
た方法でも求められる。しかし、図75を参照して既に
説明した符号S1を求める手順とほとんど同じ手順でレ
ジスタR1の初期値を求めることができる。なぜなら
ば、符号S1とレジスタR1に設定する値とはそれぞれ
次の2つの式の第1の式の値RSの値と、第2の式の値
とに相当するからである。
【0247】
【数96】 したがって、符号S1を得る場合と同様にして計算が行
なえる。すなわちシフト処理を終了した後、図25のセ
レクタ530および532によりそれぞれレジスタRw
2およびRw3を選択させて加減算器530で加算処理
を行ない、さらに図26において減算器542への入力
RFを与えないようにして加算器540および544の
加算処理を行なう。これにより加算器540の出力A9
(RS)として上記の数96の2番目の式の値が得られ
る。 (c) レジスタR7、R20およびR23の初期値 他のレジスタへの初期値の設定が終了した後、図34の
セレクタ720、図35のセレクタ730、図36のセ
レクタ740をそれぞれ制御して「0」をレジスタR
0、R20およびR23に設定する。
【0248】 以上〜の処理でレジスタR0〜R
25への初期値の設定が完了する。この結果各レジスタ
には次の数が記憶されている。
【0249】
【数97】 (7) 仮数部部の導出(図91〜図96) 次のステップとして根の仮数部を導出する。このとき、
レジスタN、XA、XD、XS、フラグYGは次のよう
になっている。なお、以降の処理ではレジスタRw1〜
Rw5やレジスタRA〜RFの内容は処理に影響を与え
ない。 N=4、XA=0、XD=0、XS=「+」、YG=0 フラグYGの値は「係数処理」で一旦設定されるとその
後は変化しない。本具体例の場合にはフラグYG=0で
ある。したがって処理の流れは実質的に図94に示され
るものとなる。図91を参照して、ステップS0409
またはS0408で終了条件1または2が検出されない
場合、次のような処理が繰返し行なわれる。すなわち図
91のステップS0401の条件が成立するときはステ
ップS04Bの処理Dを実行し、またステップS040
1の条件が成立しないときにはステップS04Aの処理
Cを実行し、再びステップS0401の判定処理に戻る
ことを繰返す。終了条件1または2のいずれかが検出さ
れた場合には仮数部の導出処理を終了し次の「小数点位
置の調整」に進む。
【0250】(I) R0およびR1の大小判定 本具体例ではR1>R0は成立しない。したがって次に
処理Cを実行する。 (II) 処理C 処理Cの実行内容は、図92に示した処理KCと終了条
件2の判定である。処理KCではAグループ、Bグルー
プ、Cグループの処理がこの順で実行される(図92参
照)。この例ではグループA、B、Cの順で処理を行な
った後、判定回路JS14(図33参照)により終了条
件2の判定を行なうこととする。ただし、終了条件2の
判定は、実際には、図92のステップS1で行なわれる
Aグループでの減算器890(図51参照)を用いた減
算(R0−R1→R0)が終了した後であればよい。
【0251】(a) 図92を参照して、処理KCのス
テップS1で行なわれるAグループの演算では、1個の
減算と5個の加算とを行なう。これらの加減算では、被
減数および被加数を記憶していたレジスタに、その加減
算の結果(差または和)が再格納される。減数および加
数を記憶していたレジスタの内容は変わらない。その結
果、各レジスタの内容は次のようになる。
【0252】
【表15】 (b) 続いてステップSE2のBグループでは、4個
の加算処理が行なわれる。これらの加算では、被加数を
記憶したレジスタに、その加算結果(和)が再格納され
る。加数を記憶していたレジスタの内容は変わらない。
なお、このBグループでの加算の加数となる数(レジス
タR2、R4およびR9に記憶されている数)は、上述
のAグループによる計算の結果得られたものであること
は言うまでもない。このBグループの計算処理の結果各
レジスタの格納内容は次のようになる。
【0253】
【表16】 (c) Cグループでは、図92のステップSE3にも
図示したように、5個の加算処理が行なわれる。これら
の加算処理では、被加数を記憶していたレジスタにその
加算結果(和)が再格納される。加数を記憶していたレ
ジスタの内容は変わらない。その結果、各レジスタの内
容は次のようになる。
【0254】
【表17】 (d) ここで、終了条件2の判定を行なう。すなわち
図33に示される判定回路716により、レジスタR0
(712)の内容が0か否かを判定する。本具体例の場
合にはR0≠0であるため判定信号JS14aは出力さ
れず、処理は図91のステップS0408からS040
1に戻る。以下の終了条件2の判定についても同様であ
るので、この終了条件2に関しては、その終了条件が検
出されるまでその内容についてはここでは繰返さないこ
ととする。 (III) S0401 再びステップS0401の大小判定に制御が戻る。この
ときの各レジスタの内容は次のとおりである。
【0255】
【数98】 したがってステップS0401の条件が成立し、ステッ
プS04Bの処理Dが実行されることになる。 (IV) 処理D 処理Dの実行内容は、図91に示したように終了条件1
の判定(S0409)と、Nの減算(S0410)と、
処理KD(S0411)とである。処理KDについては
図93にその詳細が示されている。処理KDでは、図9
3に示されるようにD、Kグループ、Eグループ、Fグ
ループ、Gグループ、Hグループ、IグループおよびH
グループの処理がこの順で行なわれる。
【0256】(a) 終了条件1の判定(S0409) レジスタNの内容は「4」である。したがって制御はS
0410に進む。S0410の結果レジスタNの値は
「3」となる。 (b) 処理KD(S0411、図93) (i) D、Kグループ(SF1) D、Kグループでは、次のような処理が行なわれる。ま
ずXAの内容を上位方向にシフトする。このためには図
14を参照してセレクタ404によりレジスタ404を
介して1桁上位方向にシフトされたレジスタXAの内容
を再びレジスタXA(402)に格納する。また図93
のD、Kグループに示される14個のレジスタに対して
は、これらのレジスタに記憶されている数を下位方向に
それぞれ1〜5桁シフトさせる。そのシフト桁数につい
ては図93に示してある。対象となるレジスタおよびシ
フト桁数は次のとおりである。
【0257】
【表18】 これらレジスタに対するシフト処理により、関係する各
レジスタの内容は次のようになる。なお、内容が変化し
ないレジスタについては表記を省略する。
【0258】
【数99】 このD、Kグループで行なわれる処理対象のレジスタお
よびその処理については図100に示した。 (ii) Eグループ Eグループでは、図93のステップSF2に示した計算
が行なわれる。この計算に使用されるレジスタおよび演
算器については図101〜図106に示した。もちろん
これらは一例であって他の方法を用いて計算を行なって
もよい。たとえば図103におけるように加算器105
0および減算器670をこの順で演算に用いる代わり
に、先にレジスタR3からR17を引き、さらにR18
を引いてもよい。このEグループの計算を実行すること
により各レジスタの格納内容は次のようになる。
【0259】
【表19】 (iii) Fグループ 図93のステップSF3では、Fグループの計算処理が
行なわれる。Fグループでは、上述した(i)と同様
の、各レジスタの内容の下位方向へのシフトが実行され
る。対象となるレジスタとシフト桁数とは次のとおりで
ある。
【0260】
【表20】 このとき使用されるレジスタとそのシフト桁数とをグル
ープ化して図107(a)に示す。このFグループの処
理の結果レジスタの格納内容は次のようになる。
【0261】
【表21】 (iv) GおよびHグループ 次に、GグループおよびHグループの計算処理をこの順
に実行する(図93、ステップSF4およびSF5)。
この処理の対象レジスタおよび使用される演算器を図1
07(b)および(c)に示す。この処理の結果各レジ
スタの内容は次のようになる。
【0262】
【表22】 (v) IおよびJグループ 次に、IグループおよびJグループの計算処理をこの順
に実行する。このときの対象レジスタおよび使用される
演算器を図107(d)および(e)に示す。この処理
の結果各レジスタの内容は次のようになる。
【0263】
【表23】 以上で図91のステップS04Bの「処理D」を終わ
り、制御は再びステップS0401に戻る。このときの
各レジスタの内容は次のとおりとなっている。
【0264】
【数100】 以上(I)〜(IV)の処理を繰返して行なうことによ
り、レジスタXAに根の仮数部が1桁ずつ求められてい
く。上の数100で示したレジスタXAは、まず根の仮
数部の最上位桁の「1」が求められた後、上位方向にシ
フトされた状態である。以下、この具体例につきS04
01のR0とR1との大小判定と、ステップS04Aお
よびS04Bの処理Cと処理Dとの結果のみを述べる。 (V) S0401レジスタR0の内容は(II)
(a)で求めた値のままである。処理DではレジスタR
0の内容は変化しないためである。この値(23,45
1,…)とレジスタR1の新しい内容(3,758,
…)との大小判定を行なう。本具体例ではS0401の
条件は成立せず、ステップS04Aの処理Cが実行され
る。
【0265】(VI) 処理C 上ので述べた手順を繰返すことにより、各レジスタの
内容は次のようになる。
【0266】
【数101】 (VII) S0401および処理C S0401の条件が満足されず、再び処理Cが実行され
る。各レジスタの内容は次のようになる。
【0267】
【数102】 (VIII) S0401および処理D 図91のステップS0401の条件が成立する。したが
ってS0410でNが1減算されS0411の処理KD
が実行される。各レジスタの内容は次のようになる。
【0268】
【数103】 上の数103において内容が「−−−」となっているレ
ジスタR23、R24およびR25は以降の処理に全く
寄与しない。以下このような表記をしたレジスタについ
ても同様である。それらのレジスタについてはその内容
の表記は省略する。なお、ここまでの処理で根の仮数部
の上位2桁(「12」)が求められている。さらに処理
は図91のステップS0401に戻る。 (IX) S0401および処理C ステップS0401の条件は成立せず、S04Aの処理
Cが実行される。その結果各レジスタの内容は次のよう
になる。
【0269】
【数104】 この処理CはステップS0401の条件が成立するまで
さらに2回実行される。処理Cを2回実行した後の結果
は次のようになっている。
【0270】
【数105】 (X) S0401および処理D 図91のステップS0401の条件が今度は成立する。
したがってステップS04BのステップS0410とS
0411の処理が行なわれる。すなわちNが1減算され
処理KD(図93)が実行される。その結果、各レジス
タの内容は次のようになる。
【0271】
【数106】 (XI) S0401および処理C この後、S0401(図91)の条件は4回連続して成
立しない。したがってS0401およびS04Aの処理
を4回繰返す。4回繰返した後の各レジスタの内容は次
のようになっている。
【0272】
【数107】 (XII) S0401および処理D このとき図91のS0401の条件が成立する。したが
ってステップS04Dを実行する。すなわちNを1減算
し、処理KDを実行する。その結果、各レジスタの内容
は次のようになる。
【0273】
【数108】 (XIII) S0401および処理C この後、5回連続してステップS0401(図91)の
条件が成立しない。したがってステップS0401およ
び処理Cを5回繰返す。5回繰返した後の各レジスタの
値は次のようになる。
【0274】
【数109】 ここでR0=0となる。したがって図33の判定回路7
16から判定信号JS14aが出力される。すなわち終
了条件2が検出される(図91のS0408)。したが
って仮数部の導出処理が終了し次の「小数点位置の調
整」に進む。上のレジスタXAに求められている値「1
2,345」が、与えられた5次方程式の根の仮数部で
ある。 (8) 小数点位置の調整(図69のS05、図10
8) 小数点位置の調整処理とは、得られた仮数部に対し小数
点を付与する処理を言う。図13を参照して、セレクタ
384を制御してレジスタ390の値Nを選択し加減算
器386に与える。加減算器386は減算器として動作
させる。加減算器386の出力「XD−N」を、セレク
タ380を介してレジスタXD(382)に格納させ
る。本具体例ではXD=N=0である。したがってこの
処理の結果レジスタXDには「0」が格納される。すな
わち得られた仮数部のうちの小数部は「0」桁である。
得られた仮数部がそのまま根となる。なお、符号はレジ
スタXSの格納内容に従って付与される。すなわち、根
xは次の式で与えられる。
【0275】
【数110】 この値は、本具体例で与えられた5次方程式の1個の根
である。本例では、求めるべき根の仮数部の桁数として
N=3が設定されていた。すなわち4桁求めるはずであ
った。にもかかわらず、ここでは5桁の仮数部が求めら
れている。しかしこのように5桁の仮数部を求めず、4
桁の仮数部が得られた時点で処理を打ち切る方法も考え
られる。 [B] 4次方程式の例 以下、4次方程式を本実施例の装置を用いて解く場合
(1つの実根を求める場合)を説明する。 (1) 与えられた方程式を次の式とする。
【0276】
【数111】 根の仮数部は4桁求めることとする。すなわちN=3と
する。なおこの例では、4次方程式を、最大次数の係数
が「0」である5次方程式として解釈し、第1の具体例
と同じ方法で根を得ることとする。レジスタRA〜RF
およびNには次のような数が設定される。
【0277】
【数112】 (2) 準備(図70) YGおよびレジスタXA、XDにそれぞれ「0」が設定
される。レジスタXSには「+」が設定される。 (3) 係数処理1(図72) レジスタRFの内容は正である。したがってステップS
02012の符号の反転2の処理は実行されず、直ちに
図71のステップS0202の係数処理2の処理が実行
される。 (4) 係数処理2(図73) RA≠0は成立しない。RB≠0は成立する。かつRB
>0が成立しない。したがって図73においてステップ
S020201、S020202、S020210、S
020211と処理が進み、次の処理として係数処理4
が選択される。このときの各レジスタの内容は次のよう
になっている。
【0278】
【数113】 (5) 係数処理4(図76) この処理は、「符号の反転1」や「係数シフト」を実行
するか否かを判定し、判定結果に従って実行を行なう処
理である。係数処理4ではさらに、仮数部の導出処理の
流れを指定するフラグYGの値も設定する。 (a) 係数の判定(S02051) ステップS02051では、第1の不等式、すなわち3
RC2 ≦8RB・RDが成立するか否かの判定が行なわ
れる。そのために図27を参照して、乗算器550で4
RBと2RDの積を、乗算器552で3RCとRCとの
積をそれぞれ計算し、その大小を判定回路554で判定
する。乗算器552の出力が乗算器550の出力よりも
小さいか等しいときに、判定回路554は判定信号JH
1aを出力する。
【0279】本具体例の場合には次が成立する。
【0280】
【数114】 この結果判定信号JH1aは出力されず、処理は図76
のステップS02052に進む。 (b) 係数の判定 S02052では、第2の不等式、すなわち8RB2
RE≦(4RB・RD−RC2 )・RCが成立するか否
かについての判断を行なう。そのために、図27を参照
して、乗算器556によりRDと4RBとの積を計算す
る。乗算器558によりRCの2乗を求める。減算器5
60により両者の差を求める。減算器560の出力とR
Cとを乗算器562により乗算し判定回路568に与え
る。一方、乗算器564により4RBと2RBとの積を
計算する。さらに乗算器506により、乗算器504の
出力とREとの積を計算し、判定回路568に与える。
【0281】判定回路568は、乗算器506の出力が
乗算器562の出力よりも小さいか等しいときに判定信
号JH2aを出力する。本具体例の場合には次が成立す
る。
【0282】
【数115】 その結果判定信号JH2aが出力され、図76において
制御はステップS02058に進む。 (c) 係数の判定(S02058) ここでは係数そのものの符号を判定する。レジスタRC
に記憶されている数は負である。したがってレジスタR
DまたはREの内容を判定する必要もなく、ステップS
02058の条件は成立しない。制御はステップS02
060に進み符号の反転1処理がされ、フラグYGに
「2」が設定され処理はステップS02061に進む。
このときの各レジスタの内容は次のようになっている。
【0283】
【数116】 (d) 符号の反転(S02061) 符号S1を求め、「−」かどうかについての判定を行な
う。符号S1を求める方法は図75を参照して既に述べ
たとおりである。本具体例では符号S1は「−」とな
る。したがって制御は図76においてステップS020
62に進み、次処理として係数処理6が選択される。 (6) 係数処理6(図79) 係数処理6では、符号S1、S2、S3およびS4を判
定することにより、Nまたは係数シフトのいずれを実行
するかを定め、選択された処理を実行するか、あるいは
次の「初期値の設定」処理に進むか否かを決める。符号
S1〜S4を求める手順は、図75、図78、図80お
よび図81に示したとおりである。
【0284】 S02091(図79) ステップS0291では、符号S2、S3およびS4が
すべて「−」かどうかについての判定を行なう。そのた
めに、前述のとおりの手順で符号S2、S3およびS4
を求める。以下では、符号S2を求める具体的な手順に
つき数値を用いて説明する。符号S3およびS4につい
ても、レジスタRw2〜Rw4に設定する値と、NN=
0のときの上位方向へのシフト桁数と、RSに合計を求
めるときの項目数とが異なるのみで、他は符号S2を求
める手順とほぼ同じ手順で求めることができる。したが
ってここではそれらについての詳細な説明は行なわな
い。 (a) 図22を参照して、セレクタ490を制御して
4RBをレジスタRw2(492)に転送する。図21
を参照して、セレクタ480を制御して3RCを選択し
レジスタRw3(482)に転送する。図20を参照し
て、セレクタ470を制御し、2RDを選択してレジス
タRw4(472)に転送する。また図19を参照し
て、セレクタ460を制御してレジスタREに記憶され
ている数をそのままレジスタRw5(462)に転送す
る。さらに図28を参照して、レジスタNに記憶されて
いる数をセレクタ588を介してレジスタNN(59
0)に転送する。
【0285】これを、演算に使用される加算器とともに
示すと次のようになる。
【0286】
【数117】 (b) レジスタNNの内容を図28に示される判定回
路596により判定する。レジスタNNの内容は「3」
であるため、NN=0となるまで、レジスタRw2、R
w3およびRw4についてそれぞれ3桁、2桁および1
桁上位方向にシフトするとともにレジスタNNの値を1
減算する処理を3回繰返す。このためには図20〜図2
2においてセレクタ470、480、490を制御し、
それぞれシフトレジスタ474、486、498により
シフトされたレジスタの値を各レジスタに再格納すれば
よい。 (c) 次にレジスタRw2〜Rw5の内容を加算す
る。図25を参照して、セレクタ530および532に
よりRw2およびRw3をそれぞれ選択させ、加減算器
534を加算器として動作させる。図26においてRw
1およびRFをそれぞれ加算器540および減算器54
2に与えないようにして加算器540および544と減
算器542とを動作させる。これにより加算器544の
出力A9(RS)に、レジスタRw2〜Rw5の和が得
られる。判定回路546によりその符号を判定する。
【0287】本具体例の場合には、次のようにして符号
S2が定められる。また符号S3、S4についても以下
のように求められる。
【0288】
【数118】 S2、S3およびS4のすべてが「−」となる。ステッ
プS02091(図79)の条件が満足され、制御はス
テップS02096に進む。 係数シフト(S02096) レジスタRB〜RFに記憶されている内容をそれぞれ1
〜5桁上位方向にシフトする。そのために、図5〜図9
の各レジスタ274、286、298、320および3
42の出力をそれぞれのセレクタで選択して各レジスタ
RB〜RFに格納する。またレジスタXDに1を加算す
る。レジスタXDへの1の加算は、図13を参照して、
セレクタ384により1を選択し、加減算器386を加
算器として動作させる。加減算器386の出力をセレク
タ380により選択してレジスタXD(382)に転送
する。この処理の後各レジスタの内容は次のようにな
る。
【0289】
【数119】 符号の判定(S02097およびS02098) シフトされたレジスタRB〜RFの値を用いて符号S
1、S2、S3およびS4を求める。そして符号S1が
「−」、符号S2〜S4のいずれかが「+」となるまで
S02096の「係数シフト」を繰返す。本具体例では
「係数シフト」をさらにもう1回行ない(合計2回)、
係数処理6を終了して次の「初期値の設定処理」に進
む。係数処理6が終了したときの各レジスタの内容は次
のとおりである。
【0290】
【数120】 (7) 初期値の設定(図83〜図90) レジスタR0〜R25に初期値を設定する。レジスタR
Aに記憶されている数が「0」であるため、R5、R6
A、R10、R12、R13、R14、R16、R1
7、R19、R22、R24およびR25の12個のレ
ジスタには「0」が設定される。この他レジスタR7、
R20およびR23には、係数に関係なく「0」を設定
する。なお、与えられる方程式の最大次数が「4次」と
されているのであれば、上述の12個のレジスタとレジ
スタR23との合計13個のレジスタは不要である。初
期値を得る手順は5次方程式の場合と同じである。得ら
れた初期値は、本具体例の場合には次のようになる。
【0291】
【表24】 (8) 仮数部の導出(図91〜図96) 次のステップとして、根の仮数部を導出する。手順は5
次方程式の場合と同様である。ただしフラグYGが
「2」となっている点のみが異なる。処理中において、
「0」を加算したり減算したりする場合が生ずる。たと
えば図92のステップS1におけるAグループの加算処
理(R4←R4+R5)や、図93のEグループにおけ
る減算(R21←R21−R25)である。与えられる
方程式の最大次数が4次である場合には、このような無
駄な加減算を回避するために不要なレジスタを除去し、
処理の簡略化を図ってもよい。仮数部の導出は図91の
処理の流れに沿って行なわれる。ただしフラグYGに記
憶されている数により、ステップS04Aの処理Cまた
はステップS04Bの処理Dのいずれかが選択的に行な
われる。
【0292】(a) YG=0のとき、R1>R0であ
れば処理Dが行なわれる。R1≦R0ならば処理Cが行
なわれる。 (b) YG=1のとき、R1>R0であれば処理Dが
行なわれる。R1≦R0かつR1+R2≧0であれば処
理Cが行なわれる。R1≦R0かつR1+R2<0であ
れば処理Dが行なわれる。 (c) YG=2のときは、R1>R0であれば処理D
が行なわれる。R1≦R0かつR1+R2≧0であれば
処理Cが行なわれる。R1≦R0、かつR1+R2<
0、かつR3+R4<0ならば処理Dが行なわれる。R
1≦R0、かつR1+R2<0、かつR3+R4≧0で
あれば処理Cが行なわれる。本具体例ではYG=2であ
る。したがって図96に沿った処理が行なわれる。
【0293】 R0〜R4の判定 本具体例の場合には、図96を参照して、ステップS0
401の条件は成立せず、ステップS0403の条件は
成立する。したがってステップS04Aの処理Cが実行
される。その後再びこの判定に戻るが、2回目の判定で
も同様の結果となる。結局、合計4回連続して同じ判定
結果となり、ステップS04Aの処理Cが4回連続して
行なわれる。その結果各レジスタの内容は次のようにな
る。ただし、上述の内容が「0」となるレジスタの表記
は省略した。以下においても同様である。
【0294】
【数121】 R0〜R4の判定 上述のの後、図95のステップS0401の処理に戻
る。ステップS0401の条件はやはり成立しない。次
にステップS0403の判定が行なわれる。ステップS
0403の条件も成立しない。またステップS0405
の条件も成立しない。しかし、ステップS0406の条
件が成立する。したがって処理は図96のステップS0
4Bに進み処理Dが実行される。処理Dの結果各レジス
タの内容は次のようになる。
【0295】
【数122】 R0〜R4の判定 この後、再びステップS0401の判定に戻る。ステッ
プS0401の条件は成立しない。しかし次のステップ
S0403の条件は成立する。したがって次にステップ
S04Aの処理Cが実行される。この処理Cを3回実行
した後の各レジスタの内容は次のようになる。
【0296】
【数123】 なお、上記レジスタの数値として「−−−」を記したも
のは、これより後の以下の処理には関与しない数であ
る。また上の内容は、正確には、3回目の処理KCを実
行した後、3回目の終了条件2の判定の直前のものであ
る。次に終了条件2の判定処理が行なわれる。R0=0
であるため、図33の判定回路716から判定信号JS
14aが出力され、仮数部を求める繰返し処理が終了す
る。 (9) 小数点位置の調整(図108) この処理は、5次方程式の場合と全く同様である。本具
体例ではXD=2、N=2である。したがってXD=0
となる。与えられた方程式の根xは次の式で与えられ
る。
【0297】
【数124】 この具体例では、最初に4桁の仮数部を得るためにN=
3とした。しかし上の説明からも明らかなように仮数部
が2桁の根が求められ、終了条件2が成立して途中で仮
数部の導出処理が終了した。第2の実施例 3次方程式は5次方程式(または4次方程式)の特殊な
場合と考えることができる。すなわち、5次および4次
項の係数が「0」である5次方程式(または4次項の係
数が「0」である4次方程式)と考えることができる。
したがって、前述の(a)や(b)と全く同様にして根
を得ることが可能である。しかし、以下では、与えられ
る方程式が3次方程式に限定されている場合について述
べる。
【0298】与えられる方程式が3次方程式に限定され
ている場合には、必要な装置は、上述の第1の実施例の
場合と比較して遙かに簡略にすることができる。その例
を図109〜図137に示す。図109を参照して、3
次方程式のための装置1200は、制御部1210と、
初期値格納部1212と、レジスタ初期値設定部121
4と、条件判定部1216と、シフト回数制御部121
8と、選択処理判定部1222とを含む。これら各部
は、図1に示される第1の実施例の装置200の各部2
10、212、214、216、218、220および
222にそれぞれ対応する。以下各部についてより詳し
く説明する。なお、図1〜図68に示される各部品と同
一の部品には同一の参照符号および名称を与える。それ
らの機能も第1の実施例の場合と全く同様である。した
がって、そうした部品については詳細な説明は繰返さな
い。ただし、第1の実施例とこの第2の実施例の装置と
の図面の対応関係については随時述べておく。
【0299】図109を参照して、初期値格納部121
2は、回路部1230および1232を含む。これら各
回路部はそれぞれ、図2に示される回路部230および
232に相当する。図110を参照して、回路1230
は、4つの回路1244、1246、1248および1
250を含む。これら各回路は、図3に示される回路2
44、246、248および250に相当する。図11
1に示される回路1240は、図6に示される回路24
4に相当する。同一の部品には同一の参照符号が付され
ている。したがってここではそれらについての詳しい説
明は繰返さない。以下同様である。図112の回路12
46は図7の回路246に相当する。図113の回路1
248は図8の回路248に相当する。図114の回路
1250は図9の回路250に相当する。これら各回路
1244、1246、1248および1250が第1の
実施例の回路244、246、248および250と相
違するのは、設けられた遅延用レジスタの数が2個ずつ
減少していることである。
【0300】図115を参照して、回路1232は、3
つの回路352、1354、1356を含む。これら各
回路は、図10に示される回路352、354および3
56にそれぞれ相当する。図116を参照して、回路3
52は、図12に示す回路352と同一である。図11
7を参照して、回路1354は、図13に示される回路
に相当する。ただし図117に示される回路1354で
は、図13のレジスタNA(394)を設けていない。
したがってセレクタ1388は、図13のセレクタ38
8と異なり2入力である。なお図13のレジスタNA
(394)は、前述のようにレジスタN(390)の内
容が、係数処理の間に大きくなってしまうことを防ぐた
めに、レジスタN(390)の内容を一時退避しておく
ためのものである。
【0301】図118を参照して、回路1356は、図
14に示される回路356と同一である。図119を参
照して、レジスタ初期値設定部1214は6つの回路1
416、1418、1420、1422、1428およ
び1430を含む。これら各回路は、図15に示される
回路416、418、420、422、428および4
30にそれぞれ相当する。図120に示される回路14
22は、図22に示される回路422に相当する。ただ
し、図22に示されるセレクタ490に代えて、4入力
のセレクタ1490が用いられる。セレクタ1490に
は、RC、RD、レジスタRw2の出力およびAG3が
それぞれ接続される。
【0302】図121を参照して、回路1420は、図
21に示される回路420に相当する。ただし、図21
のセレクタ480に代えて、3入力のセレクタ1480
が用いられる。セレクタ1480の入力には、RCと、
レジスタRw3の出力と、遅延用レジスタ488の出力
とが接続されている。図122を参照して、回路141
8は、図20に示される回路418に相当する。ただ
し、図20のセレクタ470に代えて、3入力のセレク
タ1470が用いられる。セレクタ1470には、RD
と、レジスタRw4の出力と、遅延用レジスタ476の
出力とが接続される。図123を参照して、回路141
6は、図19に示される回路416に相当する。ただ
し、図19のセレクタ460に代えて、3入力のセレク
タ1460が用いられる。セレクタ1460の入力に
は、REと、レジスタRw5と、遅延用レジスタ464
の出力とが接続される。
【0303】図124に示される回路1428は、図2
5に示される回路428に相当する。ただし図25のセ
レクタ530に代えて、4入力のセレクタ530が、図
25のセレクタ532に代えて3入力のセレクタ153
2がそれぞれ用いられる。セレクタ1530には、Rw
3と、Rw2と、Rw2<1>と、Rw2<2>とが与
えられる。セレクタ1532の入力には、Rw4と、R
w3と、Rw2とが与えられる。図125に示される回
路1430は、図26に示される回路430に相当す
る。ただし、この実施例ではレジスタRw1が存在しな
いため、図124の加減算器534の出力AG3が直接
加算器544の入力に与えられている。図126に示さ
れるシフト回数制御部1218は、図28に示されるシ
フト回数制御部218に相当する。ただし、必要となる
Nの倍数が少なくなるために、図218におけるセレク
タ588に代えて5入力のセレクタ1588が用いられ
る。また図28の加算器584は設けられていない。さ
らに、図28のセレクタ592に代えて3入力のセレク
タ1592が用いられる。セレクタ1592には、定数
1、2、3が与えられる。
【0304】図127に示される選択処理判定部122
2は、図68に示される選択処理判定部222に相当す
る。しかしこの選択処理判定部1222においては、図
68の判定回路1088、1090および1092はい
ずれも設けられていない。判定回路1086が設けられ
ているのみである。図128を参照して、終了条件判定
部1220は、9個の回路1610、1680、161
8、1620、1692、1694、1612、162
2および1698を含む。回路1610は図30の回路
610に相当する。回路1680は図31の回路680
に相当する。回路1618は、図30の回路618に相
当する。回路1620は、図30の回路620に相当す
る。回路1692は、図31の回路692に相当する。
回路1694は、図31の回路694に相当する。回路
1612は、図30の回路612に相当する。
【0305】回路1622は、図30の回路622に相
当する。回路1698は、図30のセレクタ628およ
び630と、加算器632と、図31の回路698およ
び700と、加算器704と、減算器702と、図32
の回路664および666と、減算器668および67
0に相当する。図129を参照して、回路1610は、
図33に示される回路610に相当する。ただし図33
のセレクタ710に代えて、2入力のセレクタ1710
が用いられる。セレクタ1710の入力にはRFと、図
137に示される減算器890の出力G3とが与えられ
る。図130を参照して、回路1680は、図43に示
される回路680に相当する。ただし、図43のセレク
タ810に代えて、3入力のセレクタ1810が用いら
れる。セレクタ1810の入力には、R9と、図137
の減算器702および加算器892の出力G4、A19
がそれぞれ与えられる。
【0306】図131を参照して、回路1618は、図
37に示す回路618に相当する。ただし図37のセレ
クタ750に代えて、3入力のセレクタ1750が用い
られる。セレクタ1750の入力には、AG3と、図1
37の加算器894の出力A20と、図131の遅延用
レジスタ1754の出力とが与えられる。図132を参
照して、回路1620は、図38に示す回路620に相
当する。ただし図38のセレクタ760に代えて、2入
力のセレクタ1760を用いる。セレクタ1760の入
力には、AG3と、遅延用レジスタ764の出力とが与
えられる。図133を参照して、回路1692は、図4
8に示す回路692に相当する。ただし図48のセレク
タ860に代えて、2入力のセレクタ1860を用い
る。セレクタ1860の入力には、AG3と、遅延用レ
ジスタ864の出力とが与えられる。
【0307】図134を参照して、回路1694は、図
49に示す回路694に相当する。ただしセレクタ87
0に代えて、2入力のセレクタ1870を用いる。セレ
クタ1870の入力には、AG3と、遅延用レジスタ8
74の出力とが与えられる。図135を参照して、回路
1612は、図34に示す回路612に相当する。ただ
しセレクタ720に代えて、2入力のセレクタ1720
を用いる。セレクタ1720の入力には、図137の加
算器904の出力A27と、定数「0」とが与えられ
る。図136を参照して、回路1622は、図39に示
される回路622に相当する。ただし、図39のセレク
タ770に代えて、2入力のセレクタ1770を用い
る。セレクタ1770の入力には、AG3と、遅延用レ
ジスタ1774の出力とが与えられる。
【0308】図137を参照して、回路1698は、減
算器890および702と、加算器892、894、9
02、904および704とを含む。減算器702およ
び加算器704は、図31に示される減算器702およ
び加算器704に対応する。減算器890と加算器89
2、894とは、図51の減算器890と、加算器89
2および894にそれぞれ相当する。図137の加算器
902および904はそれぞれ、図52の加算器902
および904にそれぞれ相当する。このように3次方程
式に限定されている場合には、必要となる記憶装置は8
個とすることができる。実際には7個とすることも可能
であるが、ここでは説明を簡略化するために8個の構成
とした。図138〜図145に、この第2の実施例の装
置において3次方程式の根を導出する処理の流れを示し
た。この流れは、第1の実施例のものと比較して大幅に
簡略化されている。なお、係数処理については、5次方
程式に限定されている場合も、3次方程式に限定されて
いる場合と同じ処理に簡略化できる。
【0309】この3次方程式に限定されている場合の処
理では、図71に示されている係数処理4、4’、5〜
7を省略することができる。すなわち係数処理として
は、係数処理1〜3のみを行なえばよい。また、3次方
程式の場合には符号S1が求められればよく、他の符号
S2、S3およびS4を求める処理は不要である。また
初期値の設定処理についても、記憶装置が少ないだけ簡
略化できる。すなわち5次の係数項および4次の係数項
に関する部分の処理は不要となる。さらに3次方程式に
限定されている場合には、仮数部を導出する処理におい
ても流れを制御することが不要となる。したがってそれ
を制御するフラグYGが不要となる。流れ自体も簡略化
できる。全体的な流れを図138に示す。準備処理の概
略を図139に、係数処理1の内容を図140に、係数
処理2の内容を図141に、係数処理3の内容を図14
2に、符号S1の導出処理を図143に、仮数部の導出
処理を図144に、小数点位置の調整を図145にそれ
ぞれ示した。
【0310】図139〜図145において各ステップに
与えられている番号は、図143を除いて、図69〜図
82、図91〜図96、および図108における対応す
るステップの先頭から2つの文字を「S0」から「S
1」に変更したものである。また各ステップで行なわれ
る処理は、第1の実施例で行なわれる処理と同じか、あ
るいはそれを簡略化した処理であるために、ここではそ
れらについての詳細な説明は行なわないこととする。以
下、この第2の実施例の装置を用いた3次方程式の根を
求める過程を、具体例を用いて説明する。 (1) 与えられた3次方程式を次の式とする。
【0311】
【数125】 N=4とする。すなわち、3次方程式の根を仮数部5桁
まで求めることとする。図111〜図114のレジスタ
RC〜RFおよび図117のレジスタNには次のような
数が設定される。 RC=84 RD=880 RE=−617 RF=−78 N=4 (2) 準備(図139) レジスタXAおよびXDに「0」がそれぞれ設定され
る。レジスタXSに「+」が設定される。
【0312】(3) 係数処理1(図140) ステップS12011において、レジスタRFの内容が
負であるため、符号の反転2の処理(S12012)が
実行される。すなわち、図111〜図114においてレ
ジスタ282、292、312、332の符号が反転さ
れる。各レジスタに記憶される数は次のようになる。
【0313】
【数126】 (4) 係数処理2(図141) ステップS12021において、レジスタRCの内容が
負であるため、制御はステップS12022に進む。符
号の反転1が行なわれる。すなわちレジスタRCおよび
REに記憶されている数の符号と、根の符号を記憶する
XSの内容とが反転される。この結果各レジスタの内容
は次のようになる。
【0314】
【数127】 (5) 係数処理3(図142) ステップS12041 符号S1が「−」かどうかについての判定が行なわれ
る。その導出の手順については図143に示す。基本的
には、図75に示したものと同様であるが、やや内容が
簡略化されている。S1の導出は以下のとおりである。 (a) (SA1)図121、図122、図123を参
照して、セレクタ1480、1470および1460を
制御してそれぞれレジスタRC、RDおよびREに格納
されている値を選択し、レジスタRw3、Rw4および
Rw5に転送する。さらに図126を参照して、セレク
タ1588を制御してレジスタNの内容をレジスタ59
0に転送する。
【0315】(b) (SA2,3)レジスタNN(図
126)の内容を判定回路596により判定する。この
段階ではレジスタNNの内容は「4」である。したがっ
て判定信号JS10aは出力されない。セレクタ159
2により定数1を選択し、加減算器594を減算器とし
て動作させる。減算器594の出力をセレクタ1588
を介してレジスタNNに格納する。これによりNNが1
減算される。さらに図121〜図123を参照して、レ
ジスタRw3、Rw4およびRw5の内容をそれぞれ3
桁、2桁および1桁上位方向へシフトする。この処理を
NN=0となるまで繰返す。以上の処理が図143のス
テップSA2およびSA3で行なわれる処理に相当す
る。本具体例の場合には、当初のNNが「4」であった
ため、ステップSA3(図143)のシフト処理を4回
行なった後、次のステップに進む。これによりたとえ
ば、レジスタRw3の内容については12桁(3×4=
12)シフトされる。ステップSA2の後制御はステッ
プSA4に進むが、このときの各レジスタの内容の次の
ようになっている。
【0316】
【数128】 (c) (SA4)NN=0となった時点で、図143
のステップSA4でRw3+Rw4+Rw5−RFを求
める。すなわち、図124を参照して、セレクタ153
0および1532を制御してそれぞれレジスタRw3お
よびRw4の値を選択させ、加減算器534に与える。
加減算器534を加算器として動作させ、その出力を図
125の加算器544に与える。加算器544の他方の
入力には、減算器542からRw5−RFが与えられ
る。したがって加算器544の出力A9にステップSA
4に示すRSの値が得られる。RSの値は次のようにな
る。
【0317】
【数129】 したがってステップSA5(図143)の条件が成立
し、制御はステップSA7に進んで符号S1が「+」と
なる。したがって再び図142を参照して、制御はステ
ップS12041からS12045に進む。 係数シフト(S12045) シフト桁数は5次方程式の場合と同じでもよい。しか
し、レジスタ長をできるだけ節約するために、係数処理
でも述べたように、レジスタRDは1桁、REは2桁、
RFは3桁だけシフトすることとし、レジスタRCのシ
フトは行なわない。これらのシフトと同時にXDの加算
も実行する。これらは、図112〜図114においてセ
レクタ290、310および330によりシフトされた
ものを各レジスタに格納させればよい。また図117に
おいてセレクタ384により定数1を選択させ、加減算
器386を加算器として動作させる。セレクタ380を
制御してレジスタXD(382)に加減算器386の出
力を格納させる。この処理により、各レジスタの内容は
次のようになる。
【0318】
【数130】 符号S1の判定(S12046) ステップS12041(図142)と同様に符号S1を
求める。この場合にはRSは次のようになる。
【0319】
【数131】 したがって符号S1は「+」となる。処理はS1204
5の係数シフトに戻る。 係数シフト(S12045) と同様に係数シフト処理を行なう。係数シフト処理を
全部で3回行なうことにより、各レジスタの内容は次の
ようになる。またこのときの符号S1も次のように求め
られる。
【0320】
【数132】 符号S1は「−」となる。図142のS12046の条
件が成立し、係数処理3を終了して初期値の設定処理に
進む。 (6) 初期値の設定 レジスタR0、R1、R2、R3、R6C、R6D、R
7およびR8の8個のレジスタに初期値を設定する。 R0 図129を参照して、レジスタRFの内容をセレクタ1
710を介してレジスタR0に転送する。レジスタR0
には78・109 が記憶される。 R1 レジスタR1に設定する初期値は、前述のとおり符号S
1を求める方法とほぼ同じである。ただしこの場合、図
125において減算器542へのRFの入力は行なわな
い。すなわち、まずレジスタRC、RD、REおよびN
の内容をレジスタRw3、Rw4、Rw5およびNNに
転送する(図121、図122、図123および図12
6)。さらにレジスタNNの内容が「0」となるまでシ
フト処理を繰返す。その後図125の加算器544の出
力A9にレジスタRw3、Rw4およびRw5の内容の
和が得られる。減算器542へのRFの入力がないこと
に注意すべきである。
【0321】本具体例の場合、まずレジスタRw3、R
w4、Rw5およびNNに、それぞれ84、−880・
103 、−617・106 および4が記憶される。NN
が当初「4」であるので、レジスタRw3、Rw4およ
びRw5の内容は、それぞれ12桁、8桁、4桁だけ上
位方向へシフトされる。これによりレジスタRw3、R
w4およびRw5の内容は次のようになる。
【0322】
【数133】 このときNNは「0」である。図125の加算器544
の出力A9をレジスタR1に転送する。レジスタR1の
値は−1017・1010である。 図120および図126を参照して、レジスタRD
の内容およびレジスタNに記憶されている値を2倍した
ものをそれぞれレジスタRw2およびNNに転送する。
これによりそれぞれ−880・103 および8がレジス
タRw2およびNNに格納される。次に図124のセレ
クタ1530および1532を制御していずれもRw2
を選択させ、加減算器534を加算器として動作させ、
その出力AG3をレジスタR2に格納する(図13
1)。レジスタR2に格納された値は、−880・10
3 −880・103 =−176・104 である。その
後、図126の回路を用いてレジスタNNを1減算する
処理を繰返し行ない、そのたびに図131に示されるレ
ジスタR2の内容を上位方向に1桁ずつシフトさせる。
本具体例では当初NNには8が設定されている。したが
ってレジスタR2に記憶されている内容が8桁だけ上位
方向にシフトされる。R2=−176・104 ・108
=−176・1012となる。
【0323】 R6C 図120および図121を参照して、レジスタRCの内
容をレジスタRw2およびRw3にそれぞれ転送する。
次に図124を参照して、セレクタ1530および15
32を制御してそれぞれRw2<2>とRw2とを選択
させる。加減算器534は減算器として動作させる。こ
れにより加減算器534の出力AG3に、レジスタRC
に記憶されていた数を99倍したものが得られる。この
値をレジスタR6C(図133)に格納する。レジスタ
R6Cに格納された値は84・102 −84=84・9
9=8316である。図126を参照して、セレクタ1
588を介して3NをレジスタNNに格納させる。NN
=12となる。セレクタ1592により3を選択させ、
加減算器594を減算器として動作させる。セレクタ1
588を介して減算結果がレジスタNNに格納される。
すなわちレジスタNNの内容が3だけ減算される。その
結果、レジスタNNは「9」(12−3)を記憶する。
さらに、セレクタ1592により1を選択させ、加減算
器594を減算器として動作させることにより、レジス
タNNの内容を1ずつ減算していき、そのたびにレジス
タR6Cの内容を上位方向にシフトする。この処理によ
り最終的にレジスタR6Cの内容は8316・109
なる。
【0324】 R8 図124を参照して、セレクタ1530および1532
を制御してともにRw2を選択させる。加減算器534
は加算器として動作させる。その出力AG3を再びレジ
スタRw2に格納させる(図120参照)。さらに図1
24においてセレクタ1530および1532を用いて
レジスタRw2とRw3とを選択させ、加減算器534
で加算させる。その出力AG3を再びレジスタRw2に
格納する。これにより、レジスタRw2には、レジスタ
RCに記憶されていた数を3倍したもの(84×3=2
52)が格納される。その後、図124を参照して、セ
レクタ1530および1532を制御してそれぞれRw
2<1>、Rw2を選択させる。加減算器534は減算
器として動作させ、その出力AG3をレジスタR8(図
136)とレジスタRw2(図120)とに格納させ
る。レジスタR8の内容は252・10−252=22
68となる。なおレジスタRw2に記憶された値は、レ
ジスタR3に設定する初期値を得るときに用いる。
【0325】レジスタNNに「12」を格納した後、図
126を参照して、セレクタ1592に定数「2」を選
択させ、加減算器594を減算器として動作させる。セ
レクタ1588を介して加減算器594の出力をレジス
タNNに転送することにより、レジスタR8の上位方向
へのシフト桁数(4×3−2=10)がレジスタNNに
設定される。そして、レジスタR8の内容(2268)
を8桁上位方向にシフトする。これによりレジスタR8
の内容は2268・1010となる。 R3 同様にレジスタRw2の内容を2倍したもの(252×
2=504)を求め(AG3)、レジスタR3(図13
2)に格納させる。その後3N回(3×4=12)だけ
レジスタR3の内容を上位方向にシフトさせる。これに
よりR3の内容は504・1012となる。
【0326】 R6D、R2 レジスタRDに記憶されていた数についても同様に処理
し、レジスタR2(図131)およびR6D(図13
4)に設定する値を求め各レジスタに設定する。各レジ
スタに設定する値は次のとおりである。
【0327】
【数134】 図135を参照して、レジスタ1720に定数
「0」を選択させることによりレジスタR7に「0」を
設定する。以上の処理により各レジスタに設定された値
は次のようになる。
【0328】
【数135】 (7) 仮数部の導出 次のステップとして根の仮数部を導出する。その手順は
図144に示したとおりである。ただし処理KCおよび
処理KDで行なう処理は、図146〜図148および図
149〜図151で示されるように、実施例1の場合と
比較して大幅に簡略化できる。 処理C(図146〜図148) 第1の実施例(図97〜図99参照)の一部のみの処理
を行なう。セレクタや演算器の設定も同様である。した
がってここではそれらについての詳細は説明しない。な
お、BグループがAグループの後に処理されなければな
らないのは、第1の実施例と同様である。
【0329】AグループおよびBグループの処理の終了
後、判定回路JS14によりレジスタR0の内容が
「0」か否かを判定する。判定信号JS14aが出力さ
れた場合、終了条件2(図144のステップS1408
参照)が検出されたことを意味する。 処理D 図144のステップS1407で、終了条件1の判定を
判定回路JS8を用いて行なう。終了条件1が検出され
た場合、すなわち判定信号JS8aが出力されていた場
合には小数点位置の調整に進む。出力されていない場合
にはステップS1410でNを1減算した後、処理KD
を行なう。処理KDの内容は、図149〜図151に示
す。この処理は、第1の実施例の図100〜図107の
一部のみである。そこで行なわれる処理も第1の実施例
と同様である。したがってここではそれらについての詳
細は繰返さない。
【0330】 本具体例の説明 図144を参照して、まずステップS1401では条件
が成立しない。したがってステップS14Aの処理Cを
実行する。図146および図147のAグループおよび
Bグループの処理を実行することにより、レジスタの内
容は次のとおりになる。
【0331】
【数136】 ステップS1408の終了条件2は成立せず、再びステ
ップS1401に制御は戻る。今度はステップS140
1の条件が成立する。したがってステップS14Bの処
理Dが実行される。まずステップS1409ではN=0
であるので、ステップS1410およびS1411の処
理が行なわれる。処理KD(S1411)が実行される
ことにより、レジスタの内容は次のようになる。
【0332】
【数137】 以下同様の処理を繰返す。本具体例の場合には、処理C
(1回)と処理D(1回)との組合せを2回と、処理C
(4回)と処理D(1回)との組合せを1回と、処理C
の2回とを実行することにより、各レジスタの内容は次
のようになる。
【0333】
【数138】 この後制御は再びステップS1401に戻る。ステップ
S1401の条件が成立するので、制御はステップS1
4Bに進み処理Dを実行する。しかしこの場合N=0と
なっているので、ステップS1409の終了条件1が成
立し、根の仮数部を導出するステップは終了する。すな
わち判定回路JS8(図117)から判定信号JS8a
が出力され、根の仮数部を導出する処理が終了する。 (8) 小数点位置の調整(図145) 次に、小数点位置の調整が行なわれる。この処理も第1
の実施例の場合と同じである。すなわちステップS15
1においてXDにXD−Nの値が設定される。本具体例
ではこの時点でXD=3、N=0である。したがってX
D=3となる。与えられた3次方程式の根xは次の式に
より与えられる。
【0334】
【数139】 なお真の根は−78/7(=−11.142857…)
である。 (9) 以上、5次方程式の根を得る装置の一部回路を
省略する形で3次方程式を解く装置を説明した。本実施
例のように3次方程式に限定されている場合には、レジ
スタR7をも省略することが可能である。すなわち
(a)図135に示されるレジスタR7を除去する。ま
た、(b)図137に示される加算器704を除去す
る。この場合に加算器904の被加数を、レジスタR7
の出力ではなく、レジスタR6Dの出力とする。 (c)減算器702の減数を、加算器704の出力では
なく加算器902の出力とする。
【0335】(d)減算器702の出力をレジスタR7
に与える代わりに、図134のセレクタ1870を操作
してレジスタR6Dに与える。このようにして第2の実
施例の図128に示された回路をより簡略化したもの
を、図152〜図154に示す。図153は第1の実施
例の図134に対応するものであり、図154は第1の
実施例の図137に対応するものである。この場合、演
算処理も次に述べるように部分的に変更する必要があ
る。しかし処理内容も軽減する。 Aグループ(図146) R7←R7+R8をR6D←R6D+R8に変更する。 Eグループ(図150) R1←R1−R7−(R6C+R6D)をR1←R1−
(R6C+R6D)に変更する。
【0336】 Fグループ(図151) レジスタR7の下位方向へのシフトを廃止する。なお、
他のレジスタへの初期値の設定値は変わらない。
【0337】
【発明の効果】以上のようにこの発明によれば、四則計
算や開平計算などのサブルーチンやライブラリに依存せ
ず、根の仮数部を固定小数点方式による加減算とシフト
処理のみで行なうことができる。また、必要となる根の
精度も任意に設定することができる。しかも5次方程式
から2次方程式まで対応することができ、より低次の方
程式に対しては装置を簡略化することができる。また必
要に応じて演算処理が並行的に行なわれ、従来よりも大
幅に短い計算時間で5次方程式までの高次方程式の根を
得ることができる。その結果、確実に解け、精度の良い
解が短時間で求められ、かつ機械的処理に適した方式で
高次方程式の根を得ることができる高次方程式の求根装
置を提供できる。
【図面の簡単な説明】
【図1】本発明の第1の実施例の求根装置の全体ブロッ
ク図である。
【図2】回路212の概略ブロック図である。
【図3】回路230の概略ブロック図である。
【図4】回路240のブロック図である。
【図5】回路242のブロック図である。
【図6】回路244のブロック図である。
【図7】回路246のブロック図である。
【図8】回路248のブロック図である。
【図9】回路250のブロック図である。
【図10】回路232のブロック図である。
【図11】回路350のブロック図である。
【図12】回路352のブロック図である。
【図13】回路354のブロック図である。
【図14】回路356のブロック図である。
【図15】レジスタ初期値設定部214のブロック図で
ある。
【図16】回路410のブロック図である。
【図17】回路412のブロック図である。
【図18】回路414のブロック図である。
【図19】回路416のブロック図である。
【図20】回路418のブロック図である。
【図21】回路420のブロック図である。
【図22】回路422のブロック図である。
【図23】回路424のブロック図である。
【図24】回路426のブロック図である。
【図25】回路428のブロック図である。
【図26】回路430のブロック図である。
【図27】条件判定部216のブロック図である。
【図28】シフト回数制御部218のブロック図であ
る。
【図29】終了条件判定部220のブロック図である。
【図30】回路600のブロック図である。
【図31】回路602のブロック図である。
【図32】回路604のブロック図である。
【図33】回路610のブロック図である。
【図34】回路612のブロック図である。
【図35】回路614のブロック図である。
【図36】回路616のブロック図である。
【図37】回路618のブロック図である。
【図38】回路620のブロック図である。
【図39】回路622のブロック図である。
【図40】回路624のブロック図である。
【図41】回路626のブロック図である。
【図42】回路628のブロック図である。
【図43】回路680のブロック図である。
【図44】回路682のブロック図である。
【図45】回路684のブロック図である。
【図46】回路686のブロック図である。
【図47】回路690のブロック図である。
【図48】回路692のブロック図である。
【図49】回路694のブロック図である。
【図50】回路696のブロック図である。
【図51】回路698のブロック図である。
【図52】回路700のブロック図である。
【図53】回路640のブロック図である。
【図54】回路642のブロック図である。
【図55】回路644のブロック図である。
【図56】回路646のブロック図である。
【図57】回路648のブロック図である。
【図58】回路650のブロック図である。
【図59】回路652のブロック図である。
【図60】回路654のブロック図である。
【図61】回路656のブロック図である。
【図62】回路658のブロック図である。
【図63】回路660のブロック図である。
【図64】回路662のブロック図である。
【図65】回路664のブロック図である。
【図66】回路666のブロック図である。
【図67】回路606のブロック図である。
【図68】選択処理判定部222のブロック図である。
【図69】第1の実施例の装置において行なわれる処理
の概略フローチャートである。
【図70】準備処理のフローチャートである。
【図71】係数処理の概略フローチャートである。
【図72】係数処理1のフローチャートである。
【図73】係数処理2のフローチャートである。
【図74】係数処理3のフローチャートである。
【図75】符号S1の導出処理のフローチャートであ
る。
【図76】係数処理4および係数処理4’のフローチャ
ートである。
【図77】係数処理5のフローチャートである。
【図78】符号S2の導出処理のフローチャートであ
る。
【図79】係数処理6のフローチャートである。
【図80】符号S3の導出処理のフローチャートであ
る。
【図81】符号S4の導出処理のフローチャートであ
る。
【図82】係数処理7のフローチャートである。
【図83】与えられる方程式の種類と初期値が設定され
るレジスタとの関係を表形式で示す図である。
【図84】各レジスタと、5次方程式の各係数との関係
を表形式で示す図である。
【図85】係数Aからの初期値の導出処理の概略を示す
ブロック図である。
【図86】係数Aから各初期値を導出する処理の一部を
詳細に示す図である。
【図87】係数Aから初期値を導出する処理の一部をよ
り詳細に示す図である。
【図88】係数Bから初期値を導出する処理の詳細を示
す図である。
【図89】係数Cから初期値を導出する処理を示す図で
ある。
【図90】係数Dから初期値を導出する処理を示す図で
ある。
【図91】仮数部の導出処理のフローチャートである。
【図92】仮数部の導出処理で行なわれる処理KCの概
略フローチャートである。
【図93】仮数部の導出処理で行なわれる処理KDの概
略フローチャートである。
【図94】フラグYG=0のときの仮数部の導出処理の
制御の流れを示すフローチャートである。
【図95】フラグYG=1のときの仮数部の導出処理の
制御の流れを示すフローチャートである。
【図96】フラグYG=2のときの仮数部の導出処理の
制御の流れを示すフローチャートである。
【図97】Aグループの計算処理を示す模式図である。
【図98】Bグループの計算処理を示す模式図である。
【図99】Cグループの計算処理の概略を示す模式図で
ある。
【図100】D、Kグループの計算処理の概略を示す模
式図である。
【図101】Eグループの一部の計算処理を示す模式図
である。
【図102】Eグループの一部の計算処理を示す模式図
である。
【図103】Eグループの一部の計算処理を示す模式図
である。
【図104】Eグループの一部の計算処理を示す模式図
である。
【図105】Eグループの一部の計算処理を示す模式図
である。
【図106】Eグループの一部の計算処理を示す模式図
である。
【図107】F〜Jグループの計算処理の概略を示す模
式図である。
【図108】小数点位置の調整処理のフローチャートで
ある。
【図109】本発明の第2の実施例の求根装置の概略ブ
ロック図である。
【図110】回路1230のブロック図である。
【図111】回路1244のブロック図である。
【図112】回路1246のブロック図である。
【図113】回路1248のブロック図である。
【図114】回路1250のブロック図である。
【図115】回路1232のブロック図である。
【図116】回路352のブロック図である。
【図117】回路1354のブロック図である。
【図118】回路1356のブロック図である。
【図119】レジスタ初期値設定部1214のブロック
図である。
【図120】回路1422のブロック図である。
【図121】回路1420のブロック図である。
【図122】回路1418のブロック図である。
【図123】回路1416のブロック図である。
【図124】回路1428のブロック図である。
【図125】回路1430のブロック図である。
【図126】シフト回数制御部1218のブロック図で
ある。
【図127】選択処理判定部1222のブロック図であ
る。
【図128】回路1220のブロック図である。
【図129】回路1610のブロック図である。
【図130】回路1680のブロック図である。
【図131】回路1618のブロック図である。
【図132】回路1620のブロック図である。
【図133】回路1692のブロック図である。
【図134】回路1694のブロック図である。
【図135】回路1612のブロック図である。
【図136】回路1622のブロック図である。
【図137】回路1698のブロック図である。
【図138】第2の実施例の処理の概略を示すフローチ
ャートである。
【図139】準備処理のフローチャートである。
【図140】係数処理1のフローチャートである。
【図141】係数処理2のフローチャートである。
【図142】係数処理3のフローチャートである。
【図143】符号S1の導出処理のフローチャートであ
る。
【図144】仮数部の導出処理のフローチャートであ
る。
【図145】小数点位置の調整処理のフローチャートで
ある。
【図146】Aグループの計算処理の概略を示す模式図
である。
【図147】Bグループの計算処理を示す模式図であ
る。
【図148】Cグループの計算処理を示す模式図であ
る。
【図149】D、Kグループの計算処理を示す模式図で
ある。
【図150】Eグループの計算処理を示す模式図であ
る。
【図151】Fグループの計算処理を示す模式図であ
る。
【図152】図128に示される回路をより簡略化した
回路のブロック図である。
【図153】回路2694のブロック図である。
【図154】回路2698のブロック図である。
【符号の説明】
200、1200 高次方程式の求根装置 210、1210 制御部 212、1212 初期値格納部 214、1214 レジスタ初期値設定部 216、1216 条件判定部 218、1218 シフト回数制御部 220、1220 終了条件判定部 222、1222 選択処理判定部

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 整数A、B、C、D、EおよびF(ただ
    しA・F≠0)を係数とする方程式 【数1】 の実根を求めるための、高次方程式の求根装置であっ
    て、 根の仮数部と、符号と、小数部の桁数とを記憶するため
    の第1の記憶手段と、 前記整数A、B、C、D、EおよびFを初期値として記
    憶するための、第2の記憶手段RA、RB、RC、R
    D、REおよびRFと、 求めるべき根の仮数部の桁数である整数Nを記憶するた
    めの第3の記憶手段と、 前記第2の記憶手段に記憶されている数と所定の定数と
    の積と、それらの積の和とを求めるための第1の演算手
    段と、 前記第1の演算手段により得られた積と、積の和と、そ
    れらより所定の手順により求められる所定の初期値とを
    記憶するための複数個の第4の記憶手段と、 前記第2の記憶手段に記憶されている数のうち、所定の
    ものに記憶されている数の符号の正負または0の判定を
    行なうための第1の判定手段と、 前記第1の判定手段の判定結果に基づき、前記第2の記
    憶手段に記憶されている数の少なくとも一部と、前記第
    1の記憶手段に記憶されている根の符号とに対してそれ
    ぞれ所定の処理を行なうための第2の演算手段と、 前記整数Nならびに第2の記憶手段に記憶されている数
    A0、B0、C0、D0およびE0に基づいて、次の式 【数2】 により表わされるf(N)の値を求めるための第3の演
    算手段と、 前記値f(N)と、前記第2の記憶手段RFに記憶され
    ている数F0との大小関係を判定するための第2の判定
    手段と、 前記第2の判定手段により、前記値f(N)が前記数F
    0より小さいと判定されたことに応答して、不等式F0
    <f(N+1)が成立するまで前記整数Nに1を加算す
    るための第4の演算手段と、 前記判定手段により、前記値f(N)が前記数F0より
    大きいと判定されたことに応答して、不等式f(N)<
    F0が成立するまで前記第2の記憶手段に記憶されてい
    る値をそれぞれ所定の桁数だけ上位方向にシフトすると
    ともに、前記第1の記憶手段に記憶された根の小数部の
    桁数を1増加させるための第5の演算手段と、 前記複数個の第4の記憶手段のうち、一方および他方の
    所定の2つの第4の記憶手段に記憶された2つの数の大
    小関係に応じて、 前記一方の第4の記憶手段に記憶された数から前記他方
    の第4の記憶手段に記憶された数を減算し、前記複数個
    の第4の記憶手段のうち、所定のもの同士の間で加算を
    行ない、かつ前記第1の記憶手段に記憶された根の仮数
    部に1を加える第1の処理と、 前記複数個の第4の記憶手段のうち、所定のものに記憶
    された数を所定の桁数だけ下位方向にシフトし、前記複
    数個の第4の記憶手段のうち、所定のもの同士の間で減
    算を行ない、かつ前記第1の記憶手段に記憶されている
    数を1桁上位方向にシフトさせる第2の処理と、 のいずれかを選択的に行なうための第6の演算手段と、 所定の条件が成立するまで、前記第1から第6の演算手
    段と、前記第1から第4の記憶手段と、前記第1から第
    2の判定手段とを制御して動作させるための第1の制御
    手段とを含む、高次方程式の求根装置。
  2. 【請求項2】 整数C、D、EおよびF(ただしC・F
    ≠0)を係数とする方程式 【数3】 の実根を求めるための、高次方程式の求根装置であっ
    て、 根の仮数部と、符号と、小数部の桁数とを記憶するため
    の第1の記憶手段と、 前記整数C、D、EおよびFを初期値として記憶するた
    めの、第2の記憶手段RC、RD、REおよびRFと、 求めるべき根の仮数部の桁数である整数Nを記憶するた
    めの第3の記憶手段と、 前記第2の記憶手段に記憶されている数と所定の定数と
    の積と、それらの積の和とを求めるための第1の演算手
    段と、 前記第1の演算手段により得られた積と、積の和と、そ
    れらより所定の手順により得られる所定の初期値とを記
    憶するための複数個の第4の記憶手段と、 前記第2の記憶手段に記憶されている数のうち、所定の
    ものに記憶されている数の符号の正負または0の判定を
    行なうための第1の判定手段と、 前記第1の判定手段の判定結果に基づき、前記第2の記
    憶手段に記憶されている数の少なくとも一部と、前記第
    1の記憶手段に記憶されている根の符号とに対してそれ
    ぞれ所定の処理を行なうための第2の演算手段と、 前記整数Nならびに第2の記憶手段に記憶されている数
    C0、D0およびE0に基づいて、次の式 【数4】 により表わされるf(N)の値を求めるための第3の演
    算手段と、 前記値f(N)と、前記第2の記憶手段RFに記憶され
    ている数F0との大小関係を判定するための第2の判定
    手段と、 前記第2の判定手段により、前記値f(N)が前記数F
    0より小さいと判定されたことに応答して、不等式F0
    <f(N+1)が成立するまで前記整数Nに1を加算す
    るための第4の演算手段と、 前記判定手段により、前記値f(N)が前記数F0より
    大きいと判定されたことに応答して、不等式f(N)<
    F0が成立するまで前記第2の記憶手段に記憶されてい
    る値をそれぞれ所定の桁数だけ上位方向にシフトすると
    ともに、前記第1の記憶手段に記憶された根の小数部の
    桁数を1増加させるための第5の演算手段と、 前記複数個の第4の記憶手段のうち、一方および他方の
    所定の2つの第4の記憶手段に記憶された2つの数の大
    小関係に応じて、 前記一方の第4の記憶手段に記憶された数から前記他方
    の第4の記憶手段に記憶された数を減算し、前記複数個
    の第4の記憶手段のうち、所定のもの同士の間で加算を
    行ない、かつ前記第1の記憶手段に記憶された根の仮数
    部に1を加える第1の処理と、 前記複数個の第4の記憶手段のうち、所定のものに記憶
    された数を所定の桁数だけ下位方向にシフトし、前記複
    数個の第4の記憶手段のうち、所定のもの同士の間で減
    算を行ない、かつ前記第1の記憶手段に記憶されている
    数を1桁上位方向にシフトさせる第2の処理と、 のいずれかを選択的に行なうための第6の演算手段と、 所定の条件が成立するまで、前記第1から第6の演算手
    段と、前記第1から第4の記憶手段と、前記第1から第
    2の判定手段とを制御して動作させるための第1の制御
    手段とを含む、高次方程式の求根装置。
  3. 【請求項3】 整数D、EおよびF(ただしD・F≠
    0)を係数とする方程式 【数5】 の実根を求めるための、高次方程式の求根装置であっ
    て、 根の仮数部と、符号と、小数部の桁数とを記憶するため
    の第1の記憶手段と、 前記整数D、EおよびFを初期値として記憶するため
    の、第2の記憶手段RD、REおよびRFと、 求めるべき根の仮数部の桁数である整数Nを記憶するた
    めの第3の記憶手段と、 前記第2の記憶手段に記憶されている数と所定の定数と
    の積と、それらの積の和とを求めるための第1の演算手
    段と、 前記第1の演算手段により得られた積と、積の和と、そ
    れらより所定の手順で得られる所定の初期値とを記憶す
    るための複数個の第4の記憶手段と、 前記第2の記憶手段に記憶されている数のうち、所定の
    ものに記憶されている数の符号の正負または0の判定を
    行なうための第1の判定手段と、 前記第1の判定手段の判定結果に基づき、前記第2の記
    憶手段に記憶されている数の少なくとも一部と、前記第
    1の記憶手段に記憶されている根の符号とに対してそれ
    ぞれ所定の処理を行なうための第2の演算手段と、 前記整数Nならびに前記第2の記憶手段に記憶されてい
    る数D0およびE0に基づいて、次の式 【数6】 により表わされるf(N)の値を求めるための第3の演
    算手段と、 前記値f(N)と、前記第2の記憶手段RFに記憶され
    ている数F0との大小関係を判定するための第2の判定
    手段と、 前記第2の判定手段により、前記値f(N)が前記数F
    0より小さいと判定されたことに応答して、不等式F0
    <f(N+1)が成立するまで前記整数Nに1を加算す
    るための第4の演算手段と、 前記判定手段により、前記値f(N)が前記数F0より
    大きいと判定されたことに応答して、不等式f(N)<
    F0が成立するまで前記第2の記憶手段に記憶されてい
    る値をそれぞれ所定の桁数だけ上位方向にシフトすると
    ともに、前記第1の記憶手段に記憶された根の小数部の
    桁数を1増加させるための第5の演算手段と、 前記複数個の第4の記憶手段のうち、一方および他方の
    所定の2つの第4の記憶手段に記憶された2つの数の大
    小関係に応じて、 前記一方の第4の記憶手段に記憶された数から前記他方
    の第4の記憶手段に記憶された数を減算し、前記複数個
    の第4の記憶手段のうち、所定のもの同士の間で加算を
    行ない、かつ前記第1の記憶手段に記憶された根の仮数
    部に1を加える第1の処理と、 前記複数個の第4の記憶手段のうち、所定のものに記憶
    された数を所定の桁数だけ下位方向にシフトし、前記複
    数個の第4の記憶手段のうち、所定のもの同士の間で減
    算を行ない、かつ前記第1の記憶手段に記憶されている
    数を1桁上位方向にシフトさせる第2の処理と、のいず
    れかを選択的に行なうための第6の演算手段と、 所定の条件が成立するまで、前記第1から第6の演算手
    段と、前記第1から第4の記憶手段と、前記第1から第
    2の判定手段とを制御して動作させるための制御手段と
    を含む、高次方程式の求根装置。
  4. 【請求項4】 前記整数がA=0およびB・F<0なる
    第1の条件またはA=B=C=0およびD・F<0なる
    第2の条件を満たすか否かを判定するための第3の判定
    手段と、 前記第3の判定手段により前記第1の条件または前記第
    2の条件が満足されたと判定されたことに応答して、前
    記整数のC、DおよびEと、前記整数より生成される8
    BD−3C2 および8B2 E+C3 −4BCDの符号を
    判定するための第4の判定手段と、 前記第4の判定手段の判定結果に従って、前記第1の制
    御手段による制御を部分的に変更するための第2の制御
    手段と、 前記第2の記憶手段に記憶されている数A0、B0、C
    0、D0、E0およびF0より生成される以下の4つの
    数 【数7】 の符号を判定するための第5の判定手段と、 前記第4の記憶手段に格納されている所定の5つの数の
    間に定義される加算または減算結果の符号を判定するた
    めの第2の判定手段とをさらに含む、請求項1に記載の
    高次方程式の求根装置。
  5. 【請求項5】 整数B、C、D、EおよびF(ただしB
    ・F≠0)を係数とする方程式 Bx4 +Cx3 +Dx2 +Ex=F の実根を求めるための、高次方程式の求根装置であっ
    て、 根の仮数部と、符号と、小数部の桁数とを記憶するため
    の第1の記憶手段と、 前記整数B、C、D、EおよびFを初期値として記憶す
    るための、第2の記憶手段RB、RC、RD、REおよ
    びRFと、 求めるべき根の仮数部の桁数である整数Nを記憶するた
    めの第3の記憶手段と、 前記第2の記憶手段に記憶されている数と所定の定数と
    の積と、それらの積の和とを求めるための第1の演算手
    段と、 前記第1の演算手段により得られた積と、積の和と、そ
    れらより所定の手順により求められる所定の初期値とを
    記憶するための複数個の第4の記憶手段と、 前記第2の記憶手段に記憶されている数のうち、所定の
    ものに記憶されている数の符号の正負または0の判定を
    行なうための第1の判定手段と、 前記第1の判定手段の判定結果に基づき、前記第2の記
    憶手段に記憶されている数の少なくとも一部と、前記第
    1の記憶手段に記憶されている根の符号とに対してそれ
    ぞれ所定の処理を行なうための第2の演算手段と、 前記整数Nならびに第2の記憶手段に記憶されている数
    B0、C0、D0およびE0に基づいて、次の式 f(N)=B0 ・104N+C0 ・103N+D0 ・102N
    +E0 ・10N により表わされるf(N)の値を求めるための第3の演
    算手段と、 前記値f(N)と、前記第2の記憶手段RFに記憶され
    ている数F0との大小関係を判定するための第2の判定
    手段と、 前記第2の判定手段により、前記値f(N)が前記数F
    0より小さいと判定されたことに応答して、不等式F0
    <f(N+1)が成立するまで前記整数Nに1を加算す
    るための第4の演算手段と、 前記判定手段により、前記値f(N)が前記数F0より
    大きいと判定されたことに応答して、不等式f(N)<
    F0が成立するまで前記第2の記憶手段に記憶されてい
    る値をそれぞれ所定の桁数だけ上位方向にシフトすると
    ともに、前記第1の記憶手段に記憶された根の小数部の
    桁数を1増加させるための第5の演算手段と、 前記複数個の第4の記憶手段のうち、一方および他方の
    所定の2つの第4の記憶手段に記憶された2つの数の大
    小関係に応じて、 前記一方の第4の記憶手段に記憶された数から前記他方
    の第4の記憶手段に記憶された数を減算し、前記複数個
    の第4の記憶手段のうち、所定のもの同士の間で加算を
    行ない、かつ前記第1の記憶手段に記憶された根の仮数
    部に1を加える第1の処理と、 前記複数個の第4の記憶手段のうち、所定のものに記憶
    された数を所定の桁数だけ下位方向にシフトし、前記複
    数個の第4の記憶手段のうち、所定のもの同士の間で減
    算を行ない、かつ前記第1の記憶手段に記憶されている
    数を1桁上位方向にシフトさせる第2の処理と、 のいずれかを選択的に行なうための第6の演算手段と、 所定の条件が成立するまで、前記第1から第6の演算手
    段と、前記第1から第4の記憶手段と、前記第1から第
    2の判定手段とを制御して動作させるための第1の制御
    手段とを含む、高次方程式の求根装置。
JP35447293A 1993-12-29 1993-12-29 高次方程式の求根装置 Expired - Lifetime JP2821849B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35447293A JP2821849B2 (ja) 1993-12-29 1993-12-29 高次方程式の求根装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35447293A JP2821849B2 (ja) 1993-12-29 1993-12-29 高次方程式の求根装置

Publications (2)

Publication Number Publication Date
JPH07200544A JPH07200544A (ja) 1995-08-04
JP2821849B2 true JP2821849B2 (ja) 1998-11-05

Family

ID=18437797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35447293A Expired - Lifetime JP2821849B2 (ja) 1993-12-29 1993-12-29 高次方程式の求根装置

Country Status (1)

Country Link
JP (1) JP2821849B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2827414B1 (fr) 2001-07-13 2003-12-05 Somfy Procede d'appariement d'emetteur et de recepteur
JP6614979B2 (ja) * 2016-01-15 2019-12-04 三菱電機株式会社 暗号装置、暗号方法及び暗号プログラム

Also Published As

Publication number Publication date
JPH07200544A (ja) 1995-08-04

Similar Documents

Publication Publication Date Title
CN101201644B (zh) 指数处理方法与系统
US5046038A (en) Method and apparatus for performing division using a rectangular aspect ratio multiplier
JPS6347874A (ja) 算術演算装置
JPH0612229A (ja) 乗累算回路
JP5006368B2 (ja) 多倍長演算装置
US5060182A (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
JP2821849B2 (ja) 高次方程式の求根装置
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JP5193358B2 (ja) 多項式データ処理演算
US5159566A (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
JP3660075B2 (ja) 除算装置
US5912904A (en) Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method
JP2737933B2 (ja) 除算装置
JPH0816903B2 (ja) 積和演算回路
Mandelbaum A method for calculation of the square root using combinatorial logic
JP2812365B2 (ja) 乗算回路
JP2508286B2 (ja) 平方根演算装置
JPH0831024B2 (ja) 演算プロセッサ
JP2818512B2 (ja) 乗算装置
JP2777265B2 (ja) 高基数開平演算装置
SU748409A1 (ru) Устройство дл умножени двоично- дес тичных чисел
Cardarilli et al. RNS realization of fast fixed-point multipliers with large wordlengths
Shams Ahari Computer Arithmetic in modern computers and usages of Computer Arithmetic
JPS6115233A (ja) 乗算器
JPH1049347A (ja) 乗算器

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19980728