JPH08249161A - 立方根演算装置 - Google Patents
立方根演算装置Info
- Publication number
- JPH08249161A JPH08249161A JP5227295A JP5227295A JPH08249161A JP H08249161 A JPH08249161 A JP H08249161A JP 5227295 A JP5227295 A JP 5227295A JP 5227295 A JP5227295 A JP 5227295A JP H08249161 A JPH08249161 A JP H08249161A
- Authority
- JP
- Japan
- Prior art keywords
- value
- quotient
- remainder
- cube root
- partial
- 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.)
- Withdrawn
Links
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 X=N/X2 (Nは入力データ、Xは立方
根)を演算することにより、除算器に少量の付加回路を
追加するだけで高速に立方根を算出すること。 【構成】 入力データの指数値を3で除して、その剰余
によって補正された指数値を得て立方根の指数部を生成
するとともに、入力データの仮数値を補正する。つい
で、補正された仮数値より立方根の初期値INITを求め、
3*(INIT)2 を求める。また、上記仮数値もしくは前
回求めた部分剰余と、初期値INITから得た立方根の最上
位桁もしくはこれまでに算出されたN/X2 の商、およ
び、新たに予測された部分商に基づき新たな部分剰余を
算出する。次に、部分剰余を3*(INIT)2 で除し、新
しい部分商を予測する。そして、所定の有効桁数が得ら
れるまで、もしくは、部分剰余が0になるまで、新し部
分商を求める処理を繰り返し、仮数結果を得て数値Nの
立方根を得る。
根)を演算することにより、除算器に少量の付加回路を
追加するだけで高速に立方根を算出すること。 【構成】 入力データの指数値を3で除して、その剰余
によって補正された指数値を得て立方根の指数部を生成
するとともに、入力データの仮数値を補正する。つい
で、補正された仮数値より立方根の初期値INITを求め、
3*(INIT)2 を求める。また、上記仮数値もしくは前
回求めた部分剰余と、初期値INITから得た立方根の最上
位桁もしくはこれまでに算出されたN/X2 の商、およ
び、新たに予測された部分商に基づき新たな部分剰余を
算出する。次に、部分剰余を3*(INIT)2 で除し、新
しい部分商を予測する。そして、所定の有効桁数が得ら
れるまで、もしくは、部分剰余が0になるまで、新し部
分商を求める処理を繰り返し、仮数結果を得て数値Nの
立方根を得る。
Description
【0001】
【産業上の利用分野】本発明は、立方根演算装置に関
し、さらに詳細には、従来から使用されている除算器に
少量の付加回路を追加するだけで立方根演算を行うこと
ができる立方根演算装置に関するものである。
し、さらに詳細には、従来から使用されている除算器に
少量の付加回路を追加するだけで立方根演算を行うこと
ができる立方根演算装置に関するものである。
【0002】
【従来の技術】従来から、立方根を演算する手法として
ニュートンの逐次近似法を利用する方式が知られてい
る。上記ニュートンの逐次近似法はg(x)=x3 −a
x=0の解として、下記の式を適用し、x1 ,x2 ,…
と求めていき、xm を立方根とするものである。
ニュートンの逐次近似法を利用する方式が知られてい
る。上記ニュートンの逐次近似法はg(x)=x3 −a
x=0の解として、下記の式を適用し、x1 ,x2 ,…
と求めていき、xm を立方根とするものである。
【0003】 xn+1 =xn −〔{xn 2 −(a/xn )}/{2xn +(a/xn 2 )}〕 =xn ・(xn 3 +2a)/(2xn 3 +a)
【0004】
【発明が解決しようとする課題】ところで、上記手法
は、多数回の除算を必要とし、計算時間が非常に長くな
るといった問題がある。本発明は上記した従来の問題点
を解決するためになされたものであって、本発明の目的
は、除算器に少量の付加回路を追加するだけで高速に立
方根を求めることができる立方根演算装置を提供するこ
とである。
は、多数回の除算を必要とし、計算時間が非常に長くな
るといった問題がある。本発明は上記した従来の問題点
を解決するためになされたものであって、本発明の目的
は、除算器に少量の付加回路を追加するだけで高速に立
方根を求めることができる立方根演算装置を提供するこ
とである。
【0005】
【課題を解決するための手段】図1は本発明の原理図で
ある。同図において、1は入力データである数値Nの仮
数値/指数値を処理する手段、2は補正された仮数値DN
D の上位桁から初期値INITおよび3*(INIT)2 を生成する
手段、3は補正された仮数値DND もしくは前回求めた部
分剰余REM と、上記初期値INITから得た立方根の最上位
桁もしくはこれまでに算出されたN/X2 の商A、およ
び、新たに予測された部分商Bに基づき新たな部分剰余
を算出する手段、4は剰余/3*(INIT)2 から部分商Bを
予測する手段、5は仮数結果を保持する手段である。
ある。同図において、1は入力データである数値Nの仮
数値/指数値を処理する手段、2は補正された仮数値DN
D の上位桁から初期値INITおよび3*(INIT)2 を生成する
手段、3は補正された仮数値DND もしくは前回求めた部
分剰余REM と、上記初期値INITから得た立方根の最上位
桁もしくはこれまでに算出されたN/X2 の商A、およ
び、新たに予測された部分商Bに基づき新たな部分剰余
を算出する手段、4は剰余/3*(INIT)2 から部分商Bを
予測する手段、5は仮数結果を保持する手段である。
【0006】本発明の請求項1の発明は、与えられた数
値Nをその立方根Xの自乗で除することにより、数値N
の立方根を求める立方根演算装置において、図1に示す
ように、与えられた数値の指数値を3で除した剰余に基
づき、立方根の指数部を生成するとともに、与えられた
数値の仮数値を補正する手段と、前記補正された仮数値
より、上記与えられた数値の立方根の初期値INITを求め
る手段と、前記補正された仮数値もしくは前回求めた部
分剰余と、上記初期値INITから得た立方根の最上位桁も
しくはこれまでに算出されたN/X2 の商、および、新
たに予測された部分商に基づき、新たな部分剰余を算出
する手段と、部分剰余と初期値INITもしくはこれまでに
算出されたN/X2 の商から新しい部分商を予測する手
段とを設け、所定の有効桁数が得られるまで、もしく
は、部分剰余が0になるまで、新し部分商を求める処理
を繰り返し、数値Nの立方根を算出するように構成した
ものである。
値Nをその立方根Xの自乗で除することにより、数値N
の立方根を求める立方根演算装置において、図1に示す
ように、与えられた数値の指数値を3で除した剰余に基
づき、立方根の指数部を生成するとともに、与えられた
数値の仮数値を補正する手段と、前記補正された仮数値
より、上記与えられた数値の立方根の初期値INITを求め
る手段と、前記補正された仮数値もしくは前回求めた部
分剰余と、上記初期値INITから得た立方根の最上位桁も
しくはこれまでに算出されたN/X2 の商、および、新
たに予測された部分商に基づき、新たな部分剰余を算出
する手段と、部分剰余と初期値INITもしくはこれまでに
算出されたN/X2 の商から新しい部分商を予測する手
段とを設け、所定の有効桁数が得られるまで、もしく
は、部分剰余が0になるまで、新し部分商を求める処理
を繰り返し、数値Nの立方根を算出するように構成した
ものである。
【0007】本発明の請求項2の発明は、与えられた数
値Nをその立方根Xの自乗で除することにより、数値N
の立方根を求める立方根演算装置において、図1に示す
ように、与えられた数値Nをその立方根Xの自乗で除す
ることにより、数値Nの立方根を求める立方根演算装置
において、与えられた数値の指数値を3で除して、その
剰余によって補正された指数値を得て立方根の指数部を
生成する指数部生成手段と、上記指数値の3による剰余
により、与えられた数値の仮数値を補正し、補正された
仮数値を生成する手段と、前記補正された仮数値より、
上記与えられた数値の立方根の初期値INITを求め、初期
値INITより、3*(INIT)2 を求める手段と、前記補正
された仮数値もしくは前回求めた部分剰余と、上記初期
値INITから得た立方根の最上位桁もしくはこれまでに算
出されたN/X2 の商、および、新たに予測された部分
商に基づき、新たな部分剰余を算出する手段と、部分剰
余を前記した3*(INIT)2 で除し、新しい部分商を予
測する手段と、 求めた部分商を桁をシフトしながら順
次格納する仮数値保持手段と、前記指数部生成手段と上
記仮数値保持手段の出力を前記数値Nの立方根として出
力する手段とを設け、所定の有効桁数が得られるまで、
もしくは、部分剰余が0になるまで、新し部分商を求め
る処理を繰り返し、数値Nの立方根を算出するように構
成したものである。
値Nをその立方根Xの自乗で除することにより、数値N
の立方根を求める立方根演算装置において、図1に示す
ように、与えられた数値Nをその立方根Xの自乗で除す
ることにより、数値Nの立方根を求める立方根演算装置
において、与えられた数値の指数値を3で除して、その
剰余によって補正された指数値を得て立方根の指数部を
生成する指数部生成手段と、上記指数値の3による剰余
により、与えられた数値の仮数値を補正し、補正された
仮数値を生成する手段と、前記補正された仮数値より、
上記与えられた数値の立方根の初期値INITを求め、初期
値INITより、3*(INIT)2 を求める手段と、前記補正
された仮数値もしくは前回求めた部分剰余と、上記初期
値INITから得た立方根の最上位桁もしくはこれまでに算
出されたN/X2 の商、および、新たに予測された部分
商に基づき、新たな部分剰余を算出する手段と、部分剰
余を前記した3*(INIT)2 で除し、新しい部分商を予
測する手段と、 求めた部分商を桁をシフトしながら順
次格納する仮数値保持手段と、前記指数部生成手段と上
記仮数値保持手段の出力を前記数値Nの立方根として出
力する手段とを設け、所定の有効桁数が得られるまで、
もしくは、部分剰余が0になるまで、新し部分商を求め
る処理を繰り返し、数値Nの立方根を算出するように構
成したものである。
【0008】本発明の請求項3の発明は、請求項1また
は請求項2の発明において、部分剰余を算出する手段
が、これまでに算出されたN/X2 の商をA、新たに予
測された部分商をBとしたとき、上記Aから得たA2 に
(2A+B)Bを加えて(A+B)2 を求め、上記(A
+B)2 から部分剰余の補正値を得て、該補正値を前回
求めた部分剰余から減算する処理を上記A,Bを更新し
ながら繰り返して部分剰余を求めるようにしたものであ
る。
は請求項2の発明において、部分剰余を算出する手段
が、これまでに算出されたN/X2 の商をA、新たに予
測された部分商をBとしたとき、上記Aから得たA2 に
(2A+B)Bを加えて(A+B)2 を求め、上記(A
+B)2 から部分剰余の補正値を得て、該補正値を前回
求めた部分剰余から減算する処理を上記A,Bを更新し
ながら繰り返して部分剰余を求めるようにしたものであ
る。
【0009】
【作用】数値Nとその立方根Xとの間には、3 √(N)
=X〔以下、Nの立方根を3 √(N)と表記する〕、す
なわち、N=X3 の関係が成り立ち、Xは、X=X3 /
X2 よりX=N/X2 によって求めることができる。本
発明は上記関係を利用して立方根を求めるものであり、
次のように立方根を求める。 (1) 指数処理、仮数処理 数値Nが与えられたとき、次のように指数処理、仮数処
理を行う。
=X〔以下、Nの立方根を3 √(N)と表記する〕、す
なわち、N=X3 の関係が成り立ち、Xは、X=X3 /
X2 よりX=N/X2 によって求めることができる。本
発明は上記関係を利用して立方根を求めるものであり、
次のように立方根を求める。 (1) 指数処理、仮数処理 数値Nが与えられたとき、次のように指数処理、仮数処
理を行う。
【0010】数値Nを、例えば、182617206.617588625
(10進数)とすると、その立方根は 3√(182617206.6
17588625) =567.345 となる。上記数値の立方根を求め
るには、まず、上記数値182617206.617588625 を指数が
3の倍数になるように変換する。上記数値の場合には、
0.182617206617588625×106 と変換することができ、仮
数は0.182617206617588625、指数は9となる。
(10進数)とすると、その立方根は 3√(182617206.6
17588625) =567.345 となる。上記数値の立方根を求め
るには、まず、上記数値182617206.617588625 を指数が
3の倍数になるように変換する。上記数値の場合には、
0.182617206617588625×106 と変換することができ、仮
数は0.182617206617588625、指数は9となる。
【0011】そして、上記仮数について立方根(この場
合立方根は0.567345となる)を求め、求めた立方根を3
√(109) 倍(103 倍)することにより、上記立方根の解
567.345 を求めることができる。一般的には、数値Nを
n.nnnnnnn ×10m ( n は一桁の整数、mは整数) と表
し、指数mを3で割って剰余が0のときは、n.nnnnnnn
×10m (mは3の倍数)、剰余が2の時は、0.nnnnnnnn
×10m+1 (m+1は3の倍数)、剰余が1のときは、0.
0nnnnnnnn ×10m+2 (m+2は3の倍数)とすればよ
い。
合立方根は0.567345となる)を求め、求めた立方根を3
√(109) 倍(103 倍)することにより、上記立方根の解
567.345 を求めることができる。一般的には、数値Nを
n.nnnnnnn ×10m ( n は一桁の整数、mは整数) と表
し、指数mを3で割って剰余が0のときは、n.nnnnnnn
×10m (mは3の倍数)、剰余が2の時は、0.nnnnnnnn
×10m+1 (m+1は3の倍数)、剰余が1のときは、0.
0nnnnnnnn ×10m+2 (m+2は3の倍数)とすればよ
い。
【0012】これを仮数部:1.XXXXX 、指数部:2N の
16進数で考えると、次のようになる。なお、下記にお
いて、MOD はN/3 の剰余である。 MOD(N/3)=0:1.XXXXX *2 N MOD(N/3)=2:0.1XXXXX*2 N+1 MOD(N/3)=1:0.01XXXXX *2 N+2 (2) 立方根の算出 ついで、前記した182617206.617588625 (10進数)の
仮数部0.182617206617588625について、上位桁の立方根
3 √(0.182) を求める。この立方根(初期値INITとい
う)は、デコーダ等を用いて生成することができる。
16進数で考えると、次のようになる。なお、下記にお
いて、MOD はN/3 の剰余である。 MOD(N/3)=0:1.XXXXX *2 N MOD(N/3)=2:0.1XXXXX*2 N+1 MOD(N/3)=1:0.01XXXXX *2 N+2 (2) 立方根の算出 ついで、前記した182617206.617588625 (10進数)の
仮数部0.182617206617588625について、上位桁の立方根
3 √(0.182) を求める。この立方根(初期値INITとい
う)は、デコーダ等を用いて生成することができる。
【0013】ここで、上記上位桁の値を立方根の初期値
INITとすると、次の桁の商は、後述するように、(INIT)
2 (除数X2 の上位桁)と部分剰余(これをRem とい
う)から予測できるので、前記X=N/X2 の演算は、
上記初期値INITを求めたのち、部分剰余を求め、次の桁
の部分商を予測する処理を繰り返すことにより行うこと
ができる。
INITとすると、次の桁の商は、後述するように、(INIT)
2 (除数X2 の上位桁)と部分剰余(これをRem とい
う)から予測できるので、前記X=N/X2 の演算は、
上記初期値INITを求めたのち、部分剰余を求め、次の桁
の部分商を予測する処理を繰り返すことにより行うこと
ができる。
【0014】次に、前記N/X2 の演算における除数X
2 、被除数N(=X3 )、部分剰余、および、商の予測
について説明する。ここで、立方根XをX=ABCD
(A,B,C,Dは16進数)として説明する。 (i) 除数X2 について 1桁目Aのとき X2 =A2 (Aは前記の初期値より作成) 2桁目Bのとき X2 =(A+B)2 =A2 +2AB+B2 =A2 +(2A+B)B 3桁目Cのとき X2 =(A+B+C)2 =(A+B)2 +2(A+B)C+C2 =(A+B)2 +{2(A+B)+C}C …以下同様… 上記式から明らかなように、除数となるX2 は、一つ前
の処理で使用した除数〔A2 ,(A+B)2 ,…〕に、
一つ前の立方根の2倍〔2A,2(A+B),…〕に新
しく予測した部分商〔B,C,…〕を加え、さらに、新
しく予測した部分商〔B,C,…〕を掛け合わせること
により作成することができる。
2 、被除数N(=X3 )、部分剰余、および、商の予測
について説明する。ここで、立方根XをX=ABCD
(A,B,C,Dは16進数)として説明する。 (i) 除数X2 について 1桁目Aのとき X2 =A2 (Aは前記の初期値より作成) 2桁目Bのとき X2 =(A+B)2 =A2 +2AB+B2 =A2 +(2A+B)B 3桁目Cのとき X2 =(A+B+C)2 =(A+B)2 +2(A+B)C+C2 =(A+B)2 +{2(A+B)+C}C …以下同様… 上記式から明らかなように、除数となるX2 は、一つ前
の処理で使用した除数〔A2 ,(A+B)2 ,…〕に、
一つ前の立方根の2倍〔2A,2(A+B),…〕に新
しく予測した部分商〔B,C,…〕を加え、さらに、新
しく予測した部分商〔B,C,…〕を掛け合わせること
により作成することができる。
【0015】なお、予測商はたかだか数bit (4bit)なの
で乗算器を必要とせず、除算器の除倍数作成回路を使用
する。 (ii)被除数、部分剰余について ・被除数 1桁目Aのとき X3 =A3 2桁目Bのとき X3 =(A+B)3 =A3 +3A2 B+3AB2 +B3 =A3 +(3A2 +3AB+B2 )B 3桁目Cのとき X3 =(A+B+C)3 =(A+B)3 +3(A+B)2 C+3(A+B)C2 +C3 =(A+B)3 +{3(A+B)2 +3(A+B)C +C2 }C …以下同様… 被除数X3 は上記のように一つ前の処理で使用した値
〔A3 ,(A+B)3 ,…〕に〔3A2 B+3AB2 +
B3 〕,〔3(A+B)2 C+3(A+B)C2+
C3 〕,…の補正を加えることにより求めることができ
る。
で乗算器を必要とせず、除算器の除倍数作成回路を使用
する。 (ii)被除数、部分剰余について ・被除数 1桁目Aのとき X3 =A3 2桁目Bのとき X3 =(A+B)3 =A3 +3A2 B+3AB2 +B3 =A3 +(3A2 +3AB+B2 )B 3桁目Cのとき X3 =(A+B+C)3 =(A+B)3 +3(A+B)2 C+3(A+B)C2 +C3 =(A+B)3 +{3(A+B)2 +3(A+B)C +C2 }C …以下同様… 被除数X3 は上記のように一つ前の処理で使用した値
〔A3 ,(A+B)3 ,…〕に〔3A2 B+3AB2 +
B3 〕,〔3(A+B)2 C+3(A+B)C2+
C3 〕,…の補正を加えることにより求めることができ
る。
【0016】ここで、3A2 B+3AB2 +B3 ={2
A2 +(A+B)2 +AB}Bであり、A2 は一つ前の
除数X2 として求められており、また、(A+B)2 は
新しい除数として求められているので、これを使用する
ことができる。同様に、A,Bも除数を求めるところで
使用した値を使用できる。 (iii) 商の予測について 数値Nが与えられた時、前記したように、指数処理を行
いこの処理が終わった状態の仮数の上位桁より、立方根
の初期値(前記したINIT) を求める。
A2 +(A+B)2 +AB}Bであり、A2 は一つ前の
除数X2 として求められており、また、(A+B)2 は
新しい除数として求められているので、これを使用する
ことができる。同様に、A,Bも除数を求めるところで
使用した値を使用できる。 (iii) 商の予測について 数値Nが与えられた時、前記したように、指数処理を行
いこの処理が終わった状態の仮数の上位桁より、立方根
の初期値(前記したINIT) を求める。
【0017】これは、前記した除算における商予測(被
除数、部分剰余と除数により次の部分商を予測)のため
の除数(X2 )の上位bit を求めるものである。上記(i
i)に示した2桁目の部分商を求める例では、仮に立方根
が2桁目までであるとすると、N/X2 の部分剰余は、
1桁目の立方根Aを求めた時の差(A+B)3 −A3 で
あり、これが2桁目のBによる立方根の値に対応する。
除数、部分剰余と除数により次の部分商を予測)のため
の除数(X2 )の上位bit を求めるものである。上記(i
i)に示した2桁目の部分商を求める例では、仮に立方根
が2桁目までであるとすると、N/X2 の部分剰余は、
1桁目の立方根Aを求めた時の差(A+B)3 −A3 で
あり、これが2桁目のBによる立方根の値に対応する。
【0018】上記差(A+B)3 −A3 は前記した3A
2 B+3AB2 +B3 であり、これは次のように変形す
ることができる。 3A2 B+3AB2 +B3 ={(2A+B)2 −(A2 +AB)}B ={(2A+B)2 −(A2 +B/2)2 +(B/2)2 }B =〔(2A+B)2 −{(1/2)・(2A2 +B)}2 +(B/2)2 }B =(2A+B)2 {1−(1/4)+B2 /(2A+B)2 }B すなわち、上記〔(2A+B)2 {1−(1/4)+B
2 /(2A+B)2 }B〕が部分剰余として残っている
ことになる(これを以下、部分剰余Yという)。なお、
上記式において、Aは一つ前の処理の立方根であるの
で、桁数が求まる毎に、{2(A+B+C)+D}2 、
{2(A+B+C+D)+E}2 、…のようになる。
2 B+3AB2 +B3 であり、これは次のように変形す
ることができる。 3A2 B+3AB2 +B3 ={(2A+B)2 −(A2 +AB)}B ={(2A+B)2 −(A2 +B/2)2 +(B/2)2 }B =〔(2A+B)2 −{(1/2)・(2A2 +B)}2 +(B/2)2 }B =(2A+B)2 {1−(1/4)+B2 /(2A+B)2 }B すなわち、上記〔(2A+B)2 {1−(1/4)+B
2 /(2A+B)2 }B〕が部分剰余として残っている
ことになる(これを以下、部分剰余Yという)。なお、
上記式において、Aは一つ前の処理の立方根であるの
で、桁数が求まる毎に、{2(A+B+C)+D}2 、
{2(A+B+C+D)+E}2 、…のようになる。
【0019】上記した部分剰余Yにおいて、(2A+
B)2 は新しく予測した部分商Bの2乗B2 より非常に
大きいから、B2 /(2A+B)2 ≒0と考えることが
でき、{1−(1/4)+B2 /(2A+B)2 }≒
(3/4)と見做すことができる。同様に、2A+Bも
2Aと見做すことができるので、上記Yは次のように表
すことができる。 Y=(2A)2 ・(3/4)・B=3A2 B すなわち、次の部分商Bは部分剰余Yと3A2 によって
予測できる。すなわち、次の桁の部分商(上記Bに相
当)は前の桁の部分商(上記Aに相当)と部分剰余Yか
ら予測できることとなる。ここで、上記除数A2 の上位
桁はINIT2 であるので、商予測にはINIT2 を使用しても
大きな誤差は出ない。
B)2 は新しく予測した部分商Bの2乗B2 より非常に
大きいから、B2 /(2A+B)2 ≒0と考えることが
でき、{1−(1/4)+B2 /(2A+B)2 }≒
(3/4)と見做すことができる。同様に、2A+Bも
2Aと見做すことができるので、上記Yは次のように表
すことができる。 Y=(2A)2 ・(3/4)・B=3A2 B すなわち、次の部分商Bは部分剰余Yと3A2 によって
予測できる。すなわち、次の桁の部分商(上記Bに相
当)は前の桁の部分商(上記Aに相当)と部分剰余Yか
ら予測できることとなる。ここで、上記除数A2 の上位
桁はINIT2 であるので、商予測にはINIT2 を使用しても
大きな誤差は出ない。
【0020】したがって、除算の商予測のために、N/
X2 の処理前に予め立方根の初期値INITより3(INIT)
2 を求めておき、3(INIT)2 と部分剰余から順次、各
桁の商を予測することにより、立方根を求めることがで
きる。図2は上記処理を示すフローチャートであり、同
図により本発明において立方根を求める手順を説明す
る。なお、同図は16進数における処理を示している。ス
テップS1において、入力データを設定する。ステップ
S2において、前記したように指数が3の倍数になるよ
うに指数、仮数を補正する。
X2 の処理前に予め立方根の初期値INITより3(INIT)
2 を求めておき、3(INIT)2 と部分剰余から順次、各
桁の商を予測することにより、立方根を求めることがで
きる。図2は上記処理を示すフローチャートであり、同
図により本発明において立方根を求める手順を説明す
る。なお、同図は16進数における処理を示している。ス
テップS1において、入力データを設定する。ステップ
S2において、前記したように指数が3の倍数になるよ
うに指数、仮数を補正する。
【0021】そして、ステップS11において、補正さ
れた指数/3により立方根の指数を作成する。また、ス
テップ3において、補正された仮数から初期値(INIT)
を作成し、ステップS4において、商予測のため3INIT
2 (被除数DRS:X2 )を作成し保持する。
れた指数/3により立方根の指数を作成する。また、ス
テップ3において、補正された仮数から初期値(INIT)
を作成し、ステップS4において、商予測のため3INIT
2 (被除数DRS:X2 )を作成し保持する。
【0022】ステップS5において、最初の有効ビット
(A)を取り出し、A3 を作成し、ステップS6におい
て、剰余Rem =DND-A3 を求める。そして、ステップS
7において、有効桁まで求まったか、または、剰余が0
になったか否かを判定し、YESの場合は、ステップS
12にいき、求めた仮数部と指数部から計算結果を作成
し、終了する。
(A)を取り出し、A3 を作成し、ステップS6におい
て、剰余Rem =DND-A3 を求める。そして、ステップS
7において、有効桁まで求まったか、または、剰余が0
になったか否かを判定し、YESの場合は、ステップS
12にいき、求めた仮数部と指数部から計算結果を作成
し、終了する。
【0023】また、ステップS7において、NOの場合
には、ステップS8に行き、上記剰余(Rem1)と除数DRS:
X2 により次の部分商B(4bit) を予測する。ステップ
S9において、次の部分商(B)により新しい除数(A
+B)2 を作成し、ステップS10において、次の剰余
Rem2を求める。すなわち、次の剰余はRem2=DND −(A
+B)3 であり、これは、前記したように、Rem1−{2
A2 +(A+B)2 +AB}Bに相当するので、この式
より次の剰余Rem2を算出する。次の剰余が求まると、ス
テップS7に戻り上記処理を繰り返す。
には、ステップS8に行き、上記剰余(Rem1)と除数DRS:
X2 により次の部分商B(4bit) を予測する。ステップ
S9において、次の部分商(B)により新しい除数(A
+B)2 を作成し、ステップS10において、次の剰余
Rem2を求める。すなわち、次の剰余はRem2=DND −(A
+B)3 であり、これは、前記したように、Rem1−{2
A2 +(A+B)2 +AB}Bに相当するので、この式
より次の剰余Rem2を算出する。次の剰余が求まると、ス
テップS7に戻り上記処理を繰り返す。
【0024】図3は上記のようにして求めた、立方根
X、除数X2 、被除数X3 、剰余N−X3 、および、部
分商予測値(N−X3 )/(3・INIT2 ) とその期待値
の一例を示す図である。同図は、3 √(182617206.61758
85) =567.345 ( 10進数) を16進数で演算した結果
を示している。上記入力データを指数表現で示すと、1.
826172066175885E+08 となり、これは16進数で、X"47
AE284769E1A493" となる。
X、除数X2 、被除数X3 、剰余N−X3 、および、部
分商予測値(N−X3 )/(3・INIT2 ) とその期待値
の一例を示す図である。同図は、3 √(182617206.61758
85) =567.345 ( 10進数) を16進数で演算した結果
を示している。上記入力データを指数表現で示すと、1.
826172066175885E+08 となり、これは16進数で、X"47
AE284769E1A493" となる。
【0025】そして、これを2進数表現すると、1.0101
1100010....*227 となり、X=3 √(1.0101110001
0....)*29となる。なお、16進数表現のときの上位2
桁(上記[47])は指数であり、指数は8ビット(25
6)の値の真ん中を指数0として、それからのオフセッ
トで表している。
1100010....*227 となり、X=3 √(1.0101110001
0....)*29となる。なお、16進数表現のときの上位2
桁(上記[47])は指数であり、指数は8ビット(25
6)の値の真ん中を指数0として、それからのオフセッ
トで表している。
【0026】また、立方根567.345 を指数表現で小数点
の下位まで示すと、5.673449999999999E+02 となり、こ
れは16進数で、X"432375851EB851EB" となる。同図か
ら、部分商の予測値(N−X3 )/(3・INIT2 ) の指
数部を除く一桁目と部分商の期待値が一行目を除き一致
していることがわかる。さらに、除数X 2 の3桁目以降
は[4E9] で一定となり、前記したように3・INIT2 (3
X2 )によって部分商予測ができることがわかる。
の下位まで示すと、5.673449999999999E+02 となり、こ
れは16進数で、X"432375851EB851EB" となる。同図か
ら、部分商の予測値(N−X3 )/(3・INIT2 ) の指
数部を除く一桁目と部分商の期待値が一行目を除き一致
していることがわかる。さらに、除数X 2 の3桁目以降
は[4E9] で一定となり、前記したように3・INIT2 (3
X2 )によって部分商予測ができることがわかる。
【0027】図4は理解を容易にするため10進数の立
方根を求める演算例を示す図であり、同図は、前記した
182617206.617588625 (10進数)の立方根 3√(18261
7206.617588625) =567.345 を求める演算例を示してお
り、上記数値の初期商INITは56である。同図において、
まず、初期商INITとして、INIT=56 が求まったとし、該
初期商から3(INIT)2 を求めると、3(INIT)2 =940
8 となる。
方根を求める演算例を示す図であり、同図は、前記した
182617206.617588625 (10進数)の立方根 3√(18261
7206.617588625) =567.345 を求める演算例を示してお
り、上記数値の初期商INITは56である。同図において、
まず、初期商INITとして、INIT=56 が求まったとし、該
初期商から3(INIT)2 を求めると、3(INIT)2 =940
8 となる。
【0028】そして、一桁目の商は5であり、53は125
であるから、部分剰余REM を求めると、同図に示すよう
に、57617206617588625 となる。予測商は求めた部分剰
余REM (上から3桁を取ると576 となる)と3(INIT)
2 (=9408 )から求まり、REM /3(INIT)2 を計算す
ると、576 /9408= 0.0612となり、次の予測商は同図で
#を付した6となる。
であるから、部分剰余REM を求めると、同図に示すよう
に、57617206617588625 となる。予測商は求めた部分剰
余REM (上から3桁を取ると576 となる)と3(INIT)
2 (=9408 )から求まり、REM /3(INIT)2 を計算す
ると、576 /9408= 0.0612となり、次の予測商は同図で
#を付した6となる。
【0029】次に前記した3A2 B+3AB2 +B3 、
すなわち、{2A2 +(A+B)2+AB}Bを算出す
ると、50616 が求まる。これと、前回求めた部分剰余57
617206617588625 から次の部分剰余を求めると、同図に
示すように、7001206617588625となる。この上位3桁と
前記した3(INIT)2 =9408から次の部分商を予測する
と、700 /9408=0.0744となり、次の予測商は同図で#
を付した7となる。
すなわち、{2A2 +(A+B)2+AB}Bを算出す
ると、50616 が求まる。これと、前回求めた部分剰余57
617206617588625 から次の部分剰余を求めると、同図に
示すように、7001206617588625となる。この上位3桁と
前記した3(INIT)2 =9408から次の部分商を予測する
と、700 /9408=0.0744となり、次の予測商は同図で#
を付した7となる。
【0030】次に、求めた部分商7を用いて上記{2A
2 +(A+B)2 +AB}Bを算出すると、同図に示す
ように6668263 となりこれから次の部分剰余を求めるこ
とができる。以下同様に処理を進めていくことにより、
立方根 567.345を求めることができる。
2 +(A+B)2 +AB}Bを算出すると、同図に示す
ように6668263 となりこれから次の部分剰余を求めるこ
とができる。以下同様に処理を進めていくことにより、
立方根 567.345を求めることができる。
【0031】本発明は、上記原理に基づき立方根を求め
るているので、除算器に簡単な付加回路を付加するだけ
で、立方根を求めることができる。
るているので、除算器に簡単な付加回路を付加するだけ
で、立方根を求めることができる。
【0032】
【実施例】図5は本発明の実施例の立方根演算器のブロ
ック図である。同図において、11は入力データの指数
を3で除したときの剰余を求める剰余検出器、12は剰
余検出器11の出力に基づき、3の倍数となる指数を求
める演算器であり、演算器12は補正された指数3nを
出力し、該指数はレジスタ15に保持される。そして、
レジスタ15の指数3nは演算回路21において3で割
り算されてnが求められ、立方根の指数として指数結果
レジスタ24に保持される。
ック図である。同図において、11は入力データの指数
を3で除したときの剰余を求める剰余検出器、12は剰
余検出器11の出力に基づき、3の倍数となる指数を求
める演算器であり、演算器12は補正された指数3nを
出力し、該指数はレジスタ15に保持される。そして、
レジスタ15の指数3nは演算回路21において3で割
り算されてnが求められ、立方根の指数として指数結果
レジスタ24に保持される。
【0033】13はデコーダであり、デコーダ13は入
力データと指数の3による剰余から立方根の初期値INIT
を生成する。なお、初期値INITを生成する手段として
は、デコーダ以外に入力データの上位桁とそれに対応し
た立方根を記録したテーブル等を使用することができ
る。14は仮数補正回路であり、仮数補正回路14は入
力データを剰余検出器11の出力により補正し、立方根
を求める対象となる仮数を出力する。
力データと指数の3による剰余から立方根の初期値INIT
を生成する。なお、初期値INITを生成する手段として
は、デコーダ以外に入力データの上位桁とそれに対応し
た立方根を記録したテーブル等を使用することができ
る。14は仮数補正回路であり、仮数補正回路14は入
力データを剰余検出器11の出力により補正し、立方根
を求める対象となる仮数を出力する。
【0034】16はレジスタであり、上記初期値INITを
保持するとともに、後述する加減算器20において求め
た3・INIT2 を保持する。17は上記仮数補正回路14
が出力する被除数DND 、部分剰余を保持するレジスタ、
18は被除数A2 , (A+B)2 ,…を保持するレジス
タ、19はB2 、INIT2 を保持するレジスタである。
保持するとともに、後述する加減算器20において求め
た3・INIT2 を保持する。17は上記仮数補正回路14
が出力する被除数DND 、部分剰余を保持するレジスタ、
18は被除数A2 , (A+B)2 ,…を保持するレジス
タ、19はB2 、INIT2 を保持するレジスタである。
【0035】20は加減算器であり、上記レジスタ1
7、18、19から与えられる被除数(部分剰余)、除
数、B2 、および、後述する部分商レジスタ23、仮数
結果レジスタ25から与えられるB,Aに基づき、同図
に示す部分剰余REM1,REM2,…を求めるとともに、初期
値INITから3・INIT2 を生成する。生成された3・INIT
2 は、前記レジスタ16に保持される。
7、18、19から与えられる被除数(部分剰余)、除
数、B2 、および、後述する部分商レジスタ23、仮数
結果レジスタ25から与えられるB,Aに基づき、同図
に示す部分剰余REM1,REM2,…を求めるとともに、初期
値INITから3・INIT2 を生成する。生成された3・INIT
2 は、前記レジスタ16に保持される。
【0036】22は商予測回路であり、加減算器20で
求めた剰余をレジスタ16に保持された3・INIT2 で割
って部分商Bを求め、求められた部分商Bは部分商レジ
スタ23に保持される。25は仮数結果レジスタであ
り、仮数結果レジスタ25は部分商レジスタ23に保持
された部分商を桁シフトしながら順次保持し、立方根の
仮数部FRAC(A) を生成する。
求めた剰余をレジスタ16に保持された3・INIT2 で割
って部分商Bを求め、求められた部分商Bは部分商レジ
スタ23に保持される。25は仮数結果レジスタであ
り、仮数結果レジスタ25は部分商レジスタ23に保持
された部分商を桁シフトしながら順次保持し、立方根の
仮数部FRAC(A) を生成する。
【0037】次に本実施例の立方根演算器の動作を説明
する。入力データが与えられると、剰余検出器11は入
力データの指数部を3で割って剰余を求める。演算回路
12は上記剰余と入力データの指数部に基づき、補正さ
れた指数3nを求める。すなわち、前記したように、剰
余が0の場合は入力データの指数Nをそのまま3nと
し、また、剰余が1の場合は上記指数N+1=3n、剰
余が2の場合は、N+2=3nとする。該指数3nはレ
ジスタ15に保持される。そして、演算器21で上記指
数3nを3で割って立方根の指数nを求め、指数結果レ
ジスタ24に格納する。
する。入力データが与えられると、剰余検出器11は入
力データの指数部を3で割って剰余を求める。演算回路
12は上記剰余と入力データの指数部に基づき、補正さ
れた指数3nを求める。すなわち、前記したように、剰
余が0の場合は入力データの指数Nをそのまま3nと
し、また、剰余が1の場合は上記指数N+1=3n、剰
余が2の場合は、N+2=3nとする。該指数3nはレ
ジスタ15に保持される。そして、演算器21で上記指
数3nを3で割って立方根の指数nを求め、指数結果レ
ジスタ24に格納する。
【0038】一方、仮数補正回路14は上記剰余検出器
11が出力する剰余に応じて、入力データの仮数部をシ
フトして補正された仮数を生成しレジスタ17に与え
る。また、デコーダ13は入力データの上位桁から立方
根の初期値INITを生成し、レジスタ16に保持させ、初
期値INITより最初の有効bit Aを取り出し、仮数結果レ
ジスタ25に格納する。
11が出力する剰余に応じて、入力データの仮数部をシ
フトして補正された仮数を生成しレジスタ17に与え
る。また、デコーダ13は入力データの上位桁から立方
根の初期値INITを生成し、レジスタ16に保持させ、初
期値INITより最初の有効bit Aを取り出し、仮数結果レ
ジスタ25に格納する。
【0039】レジスタ16に保持された初期値INITは加
減算器20に与えられ、加減算器20は3・INIT2 を生
成し、上記レジスタ16は3・INIT2 を保持する。次
に、最初の有効bit AからA3 を生成し、加減算器20
において、レジスタ17に格納された被除数DND からA
3 を減算して、剰余REM1を求めレジスタ17に格納す
る。
減算器20に与えられ、加減算器20は3・INIT2 を生
成し、上記レジスタ16は3・INIT2 を保持する。次
に、最初の有効bit AからA3 を生成し、加減算器20
において、レジスタ17に格納された被除数DND からA
3 を減算して、剰余REM1を求めレジスタ17に格納す
る。
【0040】また、商予測回路22はレジスタ16に保
持された3・INIT2 と上記剰余REM1から部分商Bを予測
し、部分商レジスタ23に格納する。部分商レジスタ2
3に格納された部分商Bは仮数結果レジスタ25に送ら
れ保持される。加減算回路20は上記部分商BからB2
を生成してレジスタ19に格納し、前記したAと、部分
商BとB2 および剰余REM1から剰余REM2を求める。商予
測回路22は上記剰余REM2とレジスタ16に格納されて
いる3・INIT2 から次の部分商の予測値を求める。
持された3・INIT2 と上記剰余REM1から部分商Bを予測
し、部分商レジスタ23に格納する。部分商レジスタ2
3に格納された部分商Bは仮数結果レジスタ25に送ら
れ保持される。加減算回路20は上記部分商BからB2
を生成してレジスタ19に格納し、前記したAと、部分
商BとB2 および剰余REM1から剰余REM2を求める。商予
測回路22は上記剰余REM2とレジスタ16に格納されて
いる3・INIT2 から次の部分商の予測値を求める。
【0041】以下、同様の処理を繰り返して立方根の各
桁を求め、求めた仮数の各桁は仮数結果レジスタ25に
桁シフトしながら順次格納される。そして、剰余が0と
なったり、あるいは仮数が所定の有効桁まで求まると、
指数結果レジスタ24に格納されている指数と、仮数結
果レジスタ25に格納された仮数が計算結果として出力
される。
桁を求め、求めた仮数の各桁は仮数結果レジスタ25に
桁シフトしながら順次格納される。そして、剰余が0と
なったり、あるいは仮数が所定の有効桁まで求まると、
指数結果レジスタ24に格納されている指数と、仮数結
果レジスタ25に格納された仮数が計算結果として出力
される。
【0042】
【発明の効果】以上説明したように、本発明は、入力デ
ータNの指数/仮数処理をしたのち、補正された仮数の
上位桁から初期値INITを求めるとともに上記除算の部分
剰余を求め、上記初期値INITと部分剰余から部分商を予
測しながら、X=N/X2 (Nは入力データ、Xはその
立方根)により、立方根Xを求めるようにしたので、除
算器に簡単な付加回路を付加するだけで、立方根を求め
ることができる。
ータNの指数/仮数処理をしたのち、補正された仮数の
上位桁から初期値INITを求めるとともに上記除算の部分
剰余を求め、上記初期値INITと部分剰余から部分商を予
測しながら、X=N/X2 (Nは入力データ、Xはその
立方根)により、立方根Xを求めるようにしたので、除
算器に簡単な付加回路を付加するだけで、立方根を求め
ることができる。
【図1】本発明の原理図である。
【図2】本発明の立方根を求める処理手順を示す図であ
る。
る。
【図3】本発明による立方根算出の演算例(16進数)
を示す図である。
を示す図である。
【図4】本発明による立方根算出の演算例(10進数)
を示す図である。
を示す図である。
【図5】本発明の実施例の立方根演算器のブロック図で
ある。
ある。
1 仮数値/指数値処理手段 2 初期値INITと3*(INIT)2 を生成する手段 3 部分剰余を算出する手段 4 部分商を予測する手段 5 仮数結果を保持する手段 11 剰余検出器 12 演算器 13 デコーダ 14 仮数補正回路 15 レジスタ 16 レジスタ 17 レジスタ 18 レジスタ 19 レジスタ 20 加減算器 21 演算回路 22 商予測回路 23 部分商レジスタ 24 指数結果レジスタ 25 仮数結果レジスタ
Claims (3)
- 【請求項1】 与えられた数値Nをその立方根Xの自乗
で除することにより、数値Nの立方根を求める立方根演
算装置であって、 与えられた数値の指数値を3で除した剰余に基づき、立
方根の指数部を生成するとともに、与えられた数値の仮
数値を補正する手段と、 前記補正された仮数値より、上記与えられた数値の立方
根の初期値INITを求める手段と、 前記補正された仮数値もしくは前回求めた部分剰余と、
上記初期値INITから得た立方根の最上位桁もしくはこれ
までに算出されたN/X2 の商、および、新たに予測さ
れた部分商に基づき、新たな部分剰余を算出する手段
と、 部分剰余と初期値INITもしくはこれまでに算出されたN
/X2 の商から新しい部分商を予測する手段とを備え、 所定の有効桁数が得られるまで、もしくは、部分剰余が
0になるまで、新し部分商を求める処理を繰り返し、数
値Nの立方根を算出することを特徴とする立方根演算回
路。 - 【請求項2】 与えられた数値Nをその立方根Xの自乗
で除することにより、数値Nの立方根を求める立方根演
算装置であって、 与えられた数値の指数値を3で除して、その剰余によっ
て補正された指数値を得て立方根の指数部を生成する指
数部生成手段と、 上記指数値の3による剰余により、与えられた数値の仮
数値を補正し、補正された仮数値を生成する手段と、 前記補正された仮数値より、上記与えられた数値の立方
根の初期値INITを求め、初期値INITより、3*(INIT)
2 を求める手段と、 前記補正された仮数値もしくは前回求めた部分剰余と、
上記初期値INITから得た立方根の最上位桁もしくはこれ
までに算出されたN/X2 の商、および、新たに予測さ
れた部分商に基づき、新たな部分剰余を算出する手段
と、 部分剰余を前記した3*(INIT)2 で除し、新しい部分
商を予測する手段と、 求めた部分商を桁をシフトしながら順次格納する仮数値
保持手段と、前記指数部生成手段と上記仮数値保持手段
の出力を前記数値Nの立方根として出力する手段とを備
え、 所定の有効桁数が得られるまで、もしくは、部分剰余が
0になるまで、新し部分商を求める処理を繰り返し、数
値Nの立方根を算出することを特徴とする立方根演算回
路。 - 【請求項3】 部分剰余を算出する手段が、 これまでに算出されたN/X2 の商をA、新たに予測さ
れた部分商をBとしたとき、上記Aから得たA2 に(2
A+B)Bを加えて(A+B)2 を求め、 上記(A+B)2 から部分剰余の補正値を得て、該補正
値を前回求めた部分剰余から減算する処理を上記A,B
を更新しながら繰り返して部分剰余を求めることを特徴
とする請求項1または請求項2の立方根演算回路。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5227295A JPH08249161A (ja) | 1995-03-13 | 1995-03-13 | 立方根演算装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5227295A JPH08249161A (ja) | 1995-03-13 | 1995-03-13 | 立方根演算装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08249161A true JPH08249161A (ja) | 1996-09-27 |
Family
ID=12910154
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5227295A Withdrawn JPH08249161A (ja) | 1995-03-13 | 1995-03-13 | 立方根演算装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH08249161A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20040001054A (ko) * | 2002-06-26 | 2004-01-07 | 칩스브레인(주) | 세 제곱근기 |
| US7647367B2 (en) | 2002-12-23 | 2010-01-12 | Infineon Technologies Ag | Apparatus and method for calculating a multiplication |
-
1995
- 1995-03-13 JP JP5227295A patent/JPH08249161A/ja not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20040001054A (ko) * | 2002-06-26 | 2004-01-07 | 칩스브레인(주) | 세 제곱근기 |
| US7647367B2 (en) | 2002-12-23 | 2010-01-12 | Infineon Technologies Ag | Apparatus and method for calculating a multiplication |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0149248A2 (en) | Method and apparatus for division using interpolation approximation | |
| EP0411491A2 (en) | Method and apparatus for performing division using a rectangular aspect ratio multiplier | |
| US8751555B2 (en) | Rounding unit for decimal floating-point division | |
| KR850007899A (ko) | 비회복형 디바이더 | |
| US20080208945A1 (en) | Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format | |
| US8229993B2 (en) | Method for performing decimal division | |
| US9785407B2 (en) | Data processing apparatus having combined divide-square root circuitry | |
| JPH03171324A (ja) | オペランドの平方根を計算する回路及び方法 | |
| JP3551113B2 (ja) | 除算器 | |
| CA2530015C (en) | Division and square root arithmetic unit | |
| JPH05204611A (ja) | プリスケール式除算を実行するための方法及び装置 | |
| CA2329104C (en) | Method and apparatus for calculating a reciprocal | |
| US7809784B2 (en) | Apparatus and method for calculation of divisions and square roots | |
| JPH0833816B2 (ja) | 固定小数点除算方式 | |
| JP2006227939A (ja) | 演算装置 | |
| US10353671B2 (en) | Circuitry and method for performing division | |
| JPH0326114A (ja) | 乗算剰余演算器 | |
| JP2006023974A (ja) | 剰余演算処理装置及び剰余演算処理方法 | |
| JP2777265B2 (ja) | 高基数開平演算装置 | |
| JP2803442B2 (ja) | 開平装置 | |
| KR20000074611A (ko) | 하이 래딕스 플로팅 포인트 제산기 | |
| JP2995721B2 (ja) | 除算装置および除算方法 | |
| JPH06180640A (ja) | 除算装置及び方法 | |
| JPH0368415B2 (ja) | ||
| JP2558687B2 (ja) | 剰余乗算装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20020604 |