JP2004178188A - 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 - Google Patents
演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 Download PDFInfo
- Publication number
- JP2004178188A JP2004178188A JP2002342406A JP2002342406A JP2004178188A JP 2004178188 A JP2004178188 A JP 2004178188A JP 2002342406 A JP2002342406 A JP 2002342406A JP 2002342406 A JP2002342406 A JP 2002342406A JP 2004178188 A JP2004178188 A JP 2004178188A
- Authority
- JP
- Japan
- Prior art keywords
- predetermined number
- power
- constant
- binary
- bit shift
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 claims description 45
- 230000014509 gene expression Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】容易に実装することのできる平方根演算装置を提供する。
【解決手段】所定の数を2進数表記に変換する2進数表記手段22と、2進数表記された所定の数の桁数を算出する桁数算出手段23と、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出した桁数を2で割った余りの数に応じて決定された定数を取得する定数取得手段26と、2進数表記された所定の数に応じて決定される、ビットシフト量を取得するビットシフト量算出手段24と、定数を、取得したビットシフト量のビットシフトを実行するビットシフト実行手段27と、ビットシフトを実行した定数を、所定の数の平方根として出力する出力装置12を備えている。
【選択図】 図1
【解決手段】所定の数を2進数表記に変換する2進数表記手段22と、2進数表記された所定の数の桁数を算出する桁数算出手段23と、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出した桁数を2で割った余りの数に応じて決定された定数を取得する定数取得手段26と、2進数表記された所定の数に応じて決定される、ビットシフト量を取得するビットシフト量算出手段24と、定数を、取得したビットシフト量のビットシフトを実行するビットシフト実行手段27と、ビットシフトを実行した定数を、所定の数の平方根として出力する出力装置12を備えている。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法に関する。
【0002】
【従来の技術】
近年、ハードワイヤードロジック等の回路を用いて様々な計算を行うことが増えてきた。
【0003】
例えば、ニュートン法を用いて所定の数の平方根を求める場合の計算方法を説明する。
【0004】
まず、図12に示すように、以下のような式1で示した曲線lを考える。
【0005】
【数1】
この式1の両辺を微分すると、以下の式2のようになる。
【0006】
【数2】
ここで、図12において、(x0, 0)、(x1, 0)、(x0, y(x0))を頂点とする三角形に注目すると、以下のような式3を得ることができる。
【0007】
【数3】
式3を参照して、x1について解くと、式4の様になる。
【0008】
【数4】
これを、xnについて一般化すると、式5の様になる。
【0009】
【数5】
即ち、所定の数の平方根を求める場合、式5の除算の計算を、繰り返しを行わなければならない。
【0010】
この様に、ニュートン法で所定の数の平方根を求める場合、除算と繰り返し処理が必要となり、ハードワイヤードロジックでの実装が難しくなる。
【0011】
例えば、平方根を演算する装置として、1回の開平演算ステップで被開平数を4ビットずつ除算して2ビットの平方根を算出し、n/2クロックでn桁の平方根を得るものがある(例えば、特許文献1。)。
【0012】
一方、1クロックで一つの計算を行うハードワイヤードロジックを実装することにより、より簡易に素早く計算を行うことが求められている。
【0013】
【特許文献1】
特開平10−78981
【0014】
【発明が解決しようとする課題】
しかし、ハードワイヤードロジックで平方根の計算を実装するために、計算された平方根を記録したテーブルを参照する方法を挙げることができる。この方法では、演算速度は高速になる。しかし、予想される入力値のダイナミックレンジの大きさだけメモリ量が必要になるので、用意しなければならないメモリ量が莫大に大きくなってしまう。
【0015】
従って、本発明の目的は、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法を提供することである。
【0016】
【課題を解決するための手段】
上記課題を解決するために、本発明の第1の特徴は、所定の数を、近似して演算する演算方法に関する。即ち、本発明の第1の特徴に係る演算方法は、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の属性に応じて決定される定数を取得するステップと、2進数表記された所定の数の属性に応じて決定されるビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の演算結果として出力するステップとを備える。
【0017】
ここで、本発明の第1の特徴に係る演算方法で行う演算は、所定の数の平方根、累乗根、累乗、g/h乗(g及びhは整数)などの計算のことである。
【0018】
本発明の第1の特徴に係る演算方法によれば、所定の数を2進数表記で表し、そのビットパターンや桁数などの、2進数表記された所定の数の属性に応じて、定数を取得し、その定数をビットシフトすることにより、所定の数の演算結果の近似値を得ることができる。定数をビットシフトするので、煩雑な計算を行うことなく、演算結果を取得することができる。
【0019】
本発明の第2の特徴は、所定の数の平方根を、近似して演算する平方根演算方法に関する。即ち、本発明の第2の特徴に係る平方根演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出された前記所定の数の桁数を2で割った余りの数と、に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の平方根として出力するステップとを備える。
【0020】
本発明の第2の特徴に係る平方根演算方法によれば、予め有効桁数を決めて、2進数で示した有効数字の数字パターンに対応づけた定数を取得し、その定数を使って平方根の値を近似することにより、簡単な回路で、平方根の算出を実現することができる。
【0021】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の平方根として出力するステップにおいて、ビットシフトを実行した定数を、乗数の平方根で除して、所定の数の平方根として出力することが好ましい。
【0022】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0023】
本発明の第3の特徴は、所定の数の累乗根を、近似して演算する累乗根演算方法に関する。即ち、本発明の第3の特徴に係る累乗根演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの、2進数の組み合わせと、累乗根の累乗根数と、算出された前記所定の数の桁数を累乗根の累乗根数で割った余りの数と、に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数と累乗根数に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の累乗根として出力するステップとを備える。
【0024】
本発明の第3の特徴に係る累乗根演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路で累乗根の算出を実現することができる。
【0025】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の累乗根として出力するステップにおいて、ビットシフトを実行した定数を、乗数の累乗根で除して、所定の数の累乗根として出力することが好ましい。
【0026】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0027】
本発明の第4の特徴は、所定の数の累乗を、近似して演算する累乗演算方法に関する。即ち、本発明の第4の特徴に係る累乗演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの、2進数の組み合わせと、累乗の累乗数に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数と累乗数と、に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の累乗として出力するステップとを備える。
【0028】
本発明の第4の特徴に係る累乗根演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路で累乗の算出を実現することができる。
【0029】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の累乗として出力するステップにおいて、ビットシフトを実行した定数を、乗数の累乗で除して、所定の数の累乗として出力することが好ましい。
【0030】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0031】
本発明の第5の特徴は、所定の数のg/h乗(g、hは整数)を、近似して演算するg/h乗演算方法に関する。即ち、本発明の第5の特徴に係るg/h乗演算方法は、前記所定の数が整数の場合、前記所定の数を2進数表記に変換するステップと、2進数表記された前記所定の数の桁数を算出するステップと、前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、前記gと、前記hと、算出された前記所定の数の桁数を前記hで割った余りの数と、に応じて決定された定数を取得するステップと、前記2進数表記された前記所定の数の桁数と前記累乗数に応じて決定される、ビットシフト量を取得するステップと、前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、前記ビットシフトを実行した前記定数を、前記所定の数の累乗として出力するステップとを備える。
【0032】
本発明の第5の特徴に係るg/h乗演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路でg/h乗の算出を実現することができる。
【0033】
ここで更に、前記所定の数が小数の場合、前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、前記所定の数の累乗として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数のg/h乗で除して、前記所定の数のg/h乗として出力するのが好ましい。
【0034】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0035】
【発明の実施の形態】
次に、図面を参照して、本発明の最良の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、システム構成を示すブロック図等は模式的なものである。
【0036】
(第1の実施の形態)
本発明の第1の実施の形態においては、整数aの平方根を計算する場合について説明する。
【0037】
図1を参照して、本発明の第1の実施の形態について説明する。
【0038】
本発明の第1の実施の形態に係る演算装置1は、入力装置11、出力装置12、定数テーブル記憶装置13、0判定手段21、2進数表記手段22、桁数算出手段23、ビットシフト量算出手段24、テーブルインデックス取得手段25、定数取得手段26、ビットシフト実行手段27を備えている。
【0039】
入力装置11は、平方根演算装置の入力部分であり、平方根を求める数aを入力する装置である。出力装置12は、平方根演算装置の出力部分であり、求めた数aの平方根を出力する装置である。
【0040】
0判定手段21は、入力装置11から入力された数値が0であるか否か、判定する手段である。0である場合、0判定手段21は、出力装置12に0を出力する。0でない場合、0判定手段21は、入力装置11から入力された数aを2進数表記手段22に入力する。
【0041】
2進数表記手段22においては、0判定手段21から入力された数aを2進数表記に変換する。
【0042】
ここで、入力された数aを2進数表記に変換した場合の桁数をkとすると、式6の様に表すことができる。
【0043】
【数6】
ここで、qiは、0及び1のいずれか一つの値をとる。式6の右辺を2k−1でくくると、式7の様になる。
【0044】
【数7】
更に、式7の両辺の平方根をとると、式8の様になる。
【0045】
【数8】
ここで、式8を、kの値により、以下のように場合分けすると、式9及び式10で示すことができる。
【0046】
【数9】
【数10】
更に、上記の式9及び式10について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、以下のような式11及び式12を取得することができる。
【0047】
【数11】
【数12】
定数テーブル記憶装置13は、式11及び式12のbの値が格納されている。
【0048】
即ち、定数テーブル記憶装置13は、2進数表記された所定の数(a)の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出された所定の数(a)の桁数を2で割った余りの数に応じて決定された定数が格納されている。例えば、有効数字の桁数が3ビットの場合は、上位1ビットは必ず「1」になるので、上位2番目のビットと3番目のビットの2進数の組み合わせに対応して、それぞれ定数が格納されている。
【0049】
具体的には、図2(a)に示したkが奇数の場合の定数と、図2(b)に示したkが偶数の場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0050】
例えば、kが奇数で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の平方根の2進数表記の近似値が、定数として登録されている。
【0051】
桁数算出手段23は、2進数表記されたaの桁数kを算出する手段である。
【0052】
ビットシフト量算出手段24は、定数テーブル記憶装置13に登録された定数を左シフトするビットシフト量sを算出する手段である。ビットシフト量は、桁数算出手段23で求められた桁数kが奇数の場合、s=(k−1)/2で、桁数kが偶数の場合、s=(k−2)/2として算出される。
【0053】
テーブルインデックス取得手段25は、定数テーブル記憶装置13から取得する定数のテーブルインデックスiを求める手段である。具体的には、有効桁数が3桁の場合、2進数表記されたaをk−3だけ右ビットシフトする。これにより、3桁の2進数表記の数値を得ることができる。ここで、iは、この3桁の2進数表記の数値の下位2ビットの組み合わせで求めることができる。
【0054】
定数取得手段26は、定数テーブル記憶装置13を参照する手段である。テーブルインデックス取得手段25で取得したテーブルインデックスiと、桁数算出手段23算出したkの値に相当する定数bを、定数テーブル記憶装置13から取得する。
【0055】
ビットシフト実行手段27は、定数取得手段26で取得した定数bを、ビットシフト量算出手段24で取得した左ビットシフト量sの値だけ左ビットシフトして、aの平方根の出力値を求める手段である。
【0056】
次に、図3を参照して、本発明の第1の実施の形態に係る演算方法について説明する。
【0057】
まず、ステップS101において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS102において、0判定手段21により、aが0か否かを判定する。aが0の場合、ステップS103において、Xに0を代入し、ステップS108において、Xを出力する。
【0058】
一方、ステップS102において、aが0でない場合、ステップS104において、2進数表記手段22により、10進数表記されたaを2進数表記に変換する。
【0059】
次、ステップS105において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたaの桁数から、左ビットシフト量を算出する。更に、ステップS106において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたaに対応する定数を、定数テーブル記憶装置13から取得する。
【0060】
更に、ステップS107において、ビットシフト実行手段27によって、ステップS106で取得した定数を、ステップS105で算出した左ビットシフト量だけ、左ビットシフトを実行し、Xに代入する。更に、ステップS108において、出力装置12によって、Xを出力する。
【0061】
図4を参照して、本発明の実施の形態によって近似して得られた結果と、本来の値とを比較する。3bitのラインは有効桁数を3桁として、6ビットのラインは有効桁数を6桁として、得られた結果である。この様に、本発明の実施の形態に係る演算方法は、高い精度を必要としない場合に、有効である。
【0062】
又、有効桁数を多くすることにより、より本来の値に近づけることができる。従って、要求される制度に従って有効桁数を設定することにより、効率よく演算することができる。
【0063】
(第2の実施の形態)
本発明の第1の実施の形態の変形例として、図5を参照して、本発明の第2の実施の形態を説明する。
【0064】
本発明の第2の実施の形態に係る演算装置1は、本発明の第1の実施の形態に係る演算装置1に比べて、0判定手段21を備えていない点が異なる。本発明の第2の実施の形態においては、桁数算出手段23において、桁数が0である場合、入力されたaが0であることを判定し、出力装置12に0を出力する。
【0065】
図6を参照して、本発明の第2の実施の形態に係る演算方法を説明する。
【0066】
まず、ステップS201において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS202において、2進数表記手段22により、10進数表記されたaを2進数表記に変換する。
【0067】
次に、ステップS203において、桁数算出手段23によって、2進数表記されたaの桁数が0か否かを判定する。aの桁数が0の場合、ステップS204において、Xに0を代入し、ステップS208において、Xを出力する。
【0068】
一方、ステップS203において、aの桁数が0でない場合、ステップS205において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたaの桁数から、左ビットシフト量を算出する。次に、ステップS206において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたaに対応する定数を、定数テーブル記憶装置13から取得する。
【0069】
更に、ステップS207において、ビットシフト実行手段27によって、ステップS206で取得した定数を、ステップS205で算出した左ビットシフト量だけ、左ビットシフトを実行し、Xに代入する。更に、ステップS208において、出力装置12によって、Xを出力する。
【0070】
この様に、本発明の第2の実施の形態においては、本発明の第1の実施の形態に比べて簡略な構成で、同様の演算を行うことができる。
【0071】
(第3の実施の形態)
本発明の第3の実施の形態においては、数aの累乗根(n乗根)を計算する場合、特に数aの3乗根を計算する場合について説明する。
【0072】
図7を参照して、本発明の第3の実施の形態について説明する。
【0073】
本発明の第3の実施の形態に係る演算装置1は、本発明の第1の実施の形態に係る演算装置1と比べて、0判定手段21の代わりに、数値判定手段28を備えている点が異なる。
【0074】
数値判定手段28は、入力装置11から入力された数値aについて判定する。第1及び第2の実施の形態においては、aが整数の場合について説明したが、第3の実施の形態においては、aが整数でなくても良い。数値判定手段28は、数値aが0の場合、0判定手段21と同様に、0を出力装置12に出力する。又、数値aが小数点を含む数値の場合は、数値aに乗算して、整数にする。このとき、例えば、10u n倍(uは整数)して、aを整数にするのがより好ましい、この場合、ビットシフト実行手段27で、1/10uして、結果を出せば良く、桁をずらすだけで、計算を行うことができる。
【0075】
ビットシフト量算出手段24は、定数テーブル記憶装置13に登録された定数を左シフトするビットシフト量sを算出する手段である。ビットシフト量は、桁数算出手段23で求められた桁数kがk=nm+i(mは整数、iは1〜n−1の整数)の場合、s=(k−i)/nで、桁数kがk=nm(mは整数)の場合、s=(k−n)/nとして算出される。
【0076】
次に、一般化したn乗根を算出する場合の定数テーブル記憶装置13に格納される定数について説明する。
【0077】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の様に表すことができる。
【0078】
【数13】
ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0079】
【数14】
更に、式14の両辺のn乗根をとると、式15の様になる。
【0080】
【数15】
ここで、式15を、kの値により、以下のように場合分けすると、式16及び式17で示すことができる。
【0081】
【数16】
【数17】
更に、上記の式16及び式17について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0082】
例えば、有効桁数を3桁として3乗根を計算する場合について説明すると、図8(a)に示したk=3m+1の場合の定数と、図8(b)に示したk=3m+2の場合の定数と、図8(c)に示したk=3mの場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0083】
例えば、kが3m+1で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の3乗根の2進数表記の近似値が、定数として登録されている。
【0084】
第3の実施の形態においては、上記の様な定数が格納された定数テーブル記憶装置13を用いと、ビットシフト量算出手段24と、を用いて第1の実施の形態と同様の計算を行うと、所定の数の3乗根を得ることができる。
【0085】
次に、図9を参照して、本発明の第3の実施の形態に係る演算方法について説明する。
【0086】
まず、ステップS301において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS302において、数値判定手段28により、aが0か否かを判定する。aが0の場合、ステップS303において、Xに0を代入し、ステップS314において、出力装置12にXを出力する。
【0087】
一方、ステップS302において、aが0でない場合、更に、ステップS304において、10進数表記されたaが、整数であるか否かを判定する。整数である場合、ステップS306において、cにaを代入する。又、整数でない場合、ステップS305において、10進数表記されたaを、整数になるように10u n倍して、cに代入する。
【0088】
次に、ステップS307において、2進数表記手段22により、10進数表記されたcを2進数表記に変換する。次に、ステップS308において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたcの桁数から、左ビットシフト量を算出する。更に、ステップS309において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたcに対応する定数を、定数テーブル記憶装置13から取得する。
【0089】
更に、ステップS310において、ビットシフト実行手段27によって、ステップS309で取得した定数を、ステップS308で算出した左ビットシフト量だけ、左ビットシフトを実行し、Yに代入する。
【0090】
次に、ステップS311において、入力されたaが整数であるか否かを判定する。aが整数である場合、ステップS313において、XにYを代入して、ステップS314において、出力装置12にXを出力する。一方、aが整数でない場合、ステップS312において、Yを1/10u倍した値をXに代入して、ステップS314において、出力装置12にXを出力する。
【0091】
第3の実施の形態によれば、整数に限らず、小数を含む数の累乗根を求めることができる。更に、平方根の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24の計算方法を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0092】
(第4の実施の形態)
本発明の第4の実施の形態においては、数aの累乗(n乗)を計算する場合について説明する。
【0093】
第4の実施の形態においては、第3の実施の形態と同様に定数テーブル記憶装置13と、ビットシフト量算出手段24の計算方法を変更することにより、数aの累乗を計算することができる。
【0094】
次に、一般化したn乗を算出する場合の定数テーブル記憶装置13に格納される定数について説明する。
【0095】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の様に表すことができる。ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0096】
更に、式14の両辺のn乗をとると、式18の様になる。
【0097】
【数18】
ここで、式18は、式19の様に示すことができる。
【0098】
【数19】
更に、上記の式19について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0099】
例えば、有効桁数を3桁として3乗を計算する場合について説明すると、図10を参照するように、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0100】
例えば、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の3乗の2進数表記の近似値が、定数として登録されている。
【0101】
ここで、第4の実施の形態に係るビットシフト量算出手段24において、ビットシフト量を計算する場合、ビットシフト量sは、桁数算出手段23で求められた桁数kからs=(k−1)*nと算出される。
【0102】
第4の実施の形態によれば、n乗の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24での計算方法と、を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0103】
(第5の実施の形態)
本発明の第5の実施の形態においては、数aのg/h乗(g、hは整数)を計算する場合、特に、2/3乗を計算する場合について説明する。
【0104】
第5の実施の形態においては、第3の実施の形態と同様に、定数テーブル記憶装置13と、ビットシフト量算出手段24を変更することにより、数aのg/h乗を計算することができる。
【0105】
次に、一般化したg/h乗を算出する場合の定数テーブル記憶装置13に格納された定数について説明する。
【0106】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の用に表すことができる。
【0107】
ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0108】
更に、式14の両辺のg/h乗をとると、式20の様になる。
【0109】
【数20】
ここで、式20を、kの値により場合分けすると、式21及び式22で示すことができる。
【0110】
【数21】
【数22】
更に、上記の式21及び式22について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0111】
例えば、有効桁数を3桁として2/3乗を計算する場合について説明すると、図11(a)に示したk=3m+1の場合の定数と、図11(b)に示したk=3m+2の場合の定数と、図11(c)に示したk=3mの場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0112】
例えば、kが3m+1で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の2/3乗の2進数表記の近似値が、定数として登録されている。
【0113】
第5の実施の形態におけるビットシフト量算出手段24は、桁数算出手段23で求められた桁数kがk=hm+i(mは整数、iは1〜n−1の整数)の場合、s=(k−i)*g/hで、k=hm(mは整数)の場合、s=(k−h)*g/hとして算出される。
【0114】
第5の実施の形態によれば、g/h乗の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24での計算方法と、を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0115】
(その他の実施の形態)
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【0116】
本発明の第1乃至第5の実施の形態を別々に記載したが、定数テーブル記憶装置に、平方根、3乗根、4乗根、3乗、4乗などの様々な演算に必要な定数を格納することにより、同様の演算回路で、これら全ての演算を行うことができる。
【0117】
この様に、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0118】
【発明の効果】
本発明によれば、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係る演算装置の機能ブロック図である。
【図2】本発明の第1の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図3】本発明の第1の実施の形態に係る演算方法を示したフローチャートである。
【図4】本発明の第1の実施の形態によって近似して得られた結果と、本来の値とを比較したグラフである。
【図5】本発明の第2の実施の形態に係る演算装置の機能ブロック図である。
【図6】本発明の第2の実施の形態に係る演算方法を示したフローチャートである。
【図7】本発明の第3の実施の形態に係る演算装置の機能ブロック図である。
【図8】本発明の第3の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図9】本発明の第3の実施の形態に係る演算方法を示したフローチャートである。
【図10】本発明の第4の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図11】本発明の第5の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図12】従来の平方根を演算する方法を説明したグラフである。
【符号の説明】
1…演算装置
11…入力装置
12…出力装置
13…定数テーブル記憶装置
21…0判定手段
22…2進数表記手段
23…桁数算出手段
24…ビットシフト量算出手段
25…テーブルインデックス取得手段
26…定数取得手段
27…ビットシフト実行手段
28…数値判定手段
【発明の属する技術分野】
本発明は、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法に関する。
【0002】
【従来の技術】
近年、ハードワイヤードロジック等の回路を用いて様々な計算を行うことが増えてきた。
【0003】
例えば、ニュートン法を用いて所定の数の平方根を求める場合の計算方法を説明する。
【0004】
まず、図12に示すように、以下のような式1で示した曲線lを考える。
【0005】
【数1】
この式1の両辺を微分すると、以下の式2のようになる。
【0006】
【数2】
ここで、図12において、(x0, 0)、(x1, 0)、(x0, y(x0))を頂点とする三角形に注目すると、以下のような式3を得ることができる。
【0007】
【数3】
式3を参照して、x1について解くと、式4の様になる。
【0008】
【数4】
これを、xnについて一般化すると、式5の様になる。
【0009】
【数5】
即ち、所定の数の平方根を求める場合、式5の除算の計算を、繰り返しを行わなければならない。
【0010】
この様に、ニュートン法で所定の数の平方根を求める場合、除算と繰り返し処理が必要となり、ハードワイヤードロジックでの実装が難しくなる。
【0011】
例えば、平方根を演算する装置として、1回の開平演算ステップで被開平数を4ビットずつ除算して2ビットの平方根を算出し、n/2クロックでn桁の平方根を得るものがある(例えば、特許文献1。)。
【0012】
一方、1クロックで一つの計算を行うハードワイヤードロジックを実装することにより、より簡易に素早く計算を行うことが求められている。
【0013】
【特許文献1】
特開平10−78981
【0014】
【発明が解決しようとする課題】
しかし、ハードワイヤードロジックで平方根の計算を実装するために、計算された平方根を記録したテーブルを参照する方法を挙げることができる。この方法では、演算速度は高速になる。しかし、予想される入力値のダイナミックレンジの大きさだけメモリ量が必要になるので、用意しなければならないメモリ量が莫大に大きくなってしまう。
【0015】
従って、本発明の目的は、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法を提供することである。
【0016】
【課題を解決するための手段】
上記課題を解決するために、本発明の第1の特徴は、所定の数を、近似して演算する演算方法に関する。即ち、本発明の第1の特徴に係る演算方法は、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の属性に応じて決定される定数を取得するステップと、2進数表記された所定の数の属性に応じて決定されるビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の演算結果として出力するステップとを備える。
【0017】
ここで、本発明の第1の特徴に係る演算方法で行う演算は、所定の数の平方根、累乗根、累乗、g/h乗(g及びhは整数)などの計算のことである。
【0018】
本発明の第1の特徴に係る演算方法によれば、所定の数を2進数表記で表し、そのビットパターンや桁数などの、2進数表記された所定の数の属性に応じて、定数を取得し、その定数をビットシフトすることにより、所定の数の演算結果の近似値を得ることができる。定数をビットシフトするので、煩雑な計算を行うことなく、演算結果を取得することができる。
【0019】
本発明の第2の特徴は、所定の数の平方根を、近似して演算する平方根演算方法に関する。即ち、本発明の第2の特徴に係る平方根演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出された前記所定の数の桁数を2で割った余りの数と、に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の平方根として出力するステップとを備える。
【0020】
本発明の第2の特徴に係る平方根演算方法によれば、予め有効桁数を決めて、2進数で示した有効数字の数字パターンに対応づけた定数を取得し、その定数を使って平方根の値を近似することにより、簡単な回路で、平方根の算出を実現することができる。
【0021】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の平方根として出力するステップにおいて、ビットシフトを実行した定数を、乗数の平方根で除して、所定の数の平方根として出力することが好ましい。
【0022】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0023】
本発明の第3の特徴は、所定の数の累乗根を、近似して演算する累乗根演算方法に関する。即ち、本発明の第3の特徴に係る累乗根演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの、2進数の組み合わせと、累乗根の累乗根数と、算出された前記所定の数の桁数を累乗根の累乗根数で割った余りの数と、に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数と累乗根数に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の累乗根として出力するステップとを備える。
【0024】
本発明の第3の特徴に係る累乗根演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路で累乗根の算出を実現することができる。
【0025】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の累乗根として出力するステップにおいて、ビットシフトを実行した定数を、乗数の累乗根で除して、所定の数の累乗根として出力することが好ましい。
【0026】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0027】
本発明の第4の特徴は、所定の数の累乗を、近似して演算する累乗演算方法に関する。即ち、本発明の第4の特徴に係る累乗演算方法は、所定の数が整数の場合、所定の数を2進数表記に変換するステップと、2進数表記された所定の数の桁数を算出するステップと、2進数表記された所定の数の上位2番目のビットから、所定の有効数字の桁数までの、2進数の組み合わせと、累乗の累乗数に応じて決定された定数を取得するステップと、2進数表記された所定の数の桁数と累乗数と、に応じて決定される、ビットシフト量を取得するステップと、定数を、取得したビットシフト量のビットシフトを実行するステップと、ビットシフトを実行した定数を、所定の数の累乗として出力するステップとを備える。
【0028】
本発明の第4の特徴に係る累乗根演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路で累乗の算出を実現することができる。
【0029】
ここで更に、所定の数が小数の場合、所定の数を2進数表記に変換するステップにおいて、所定の数が整数になるように、所定の数を乗数で乗して、乗した所定の数を2進数表記に変換し、所定の数の累乗として出力するステップにおいて、ビットシフトを実行した定数を、乗数の累乗で除して、所定の数の累乗として出力することが好ましい。
【0030】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0031】
本発明の第5の特徴は、所定の数のg/h乗(g、hは整数)を、近似して演算するg/h乗演算方法に関する。即ち、本発明の第5の特徴に係るg/h乗演算方法は、前記所定の数が整数の場合、前記所定の数を2進数表記に変換するステップと、2進数表記された前記所定の数の桁数を算出するステップと、前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、前記gと、前記hと、算出された前記所定の数の桁数を前記hで割った余りの数と、に応じて決定された定数を取得するステップと、前記2進数表記された前記所定の数の桁数と前記累乗数に応じて決定される、ビットシフト量を取得するステップと、前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、前記ビットシフトを実行した前記定数を、前記所定の数の累乗として出力するステップとを備える。
【0032】
本発明の第5の特徴に係るg/h乗演算方法は、本発明の第2の特徴に係る平方根演算方法と同様の方法で、簡単な回路でg/h乗の算出を実現することができる。
【0033】
ここで更に、前記所定の数が小数の場合、前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、前記所定の数の累乗として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数のg/h乗で除して、前記所定の数のg/h乗として出力するのが好ましい。
【0034】
これにより、小数を含む数の場合も、同様の方法で算出することができる。
【0035】
【発明の実施の形態】
次に、図面を参照して、本発明の最良の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、システム構成を示すブロック図等は模式的なものである。
【0036】
(第1の実施の形態)
本発明の第1の実施の形態においては、整数aの平方根を計算する場合について説明する。
【0037】
図1を参照して、本発明の第1の実施の形態について説明する。
【0038】
本発明の第1の実施の形態に係る演算装置1は、入力装置11、出力装置12、定数テーブル記憶装置13、0判定手段21、2進数表記手段22、桁数算出手段23、ビットシフト量算出手段24、テーブルインデックス取得手段25、定数取得手段26、ビットシフト実行手段27を備えている。
【0039】
入力装置11は、平方根演算装置の入力部分であり、平方根を求める数aを入力する装置である。出力装置12は、平方根演算装置の出力部分であり、求めた数aの平方根を出力する装置である。
【0040】
0判定手段21は、入力装置11から入力された数値が0であるか否か、判定する手段である。0である場合、0判定手段21は、出力装置12に0を出力する。0でない場合、0判定手段21は、入力装置11から入力された数aを2進数表記手段22に入力する。
【0041】
2進数表記手段22においては、0判定手段21から入力された数aを2進数表記に変換する。
【0042】
ここで、入力された数aを2進数表記に変換した場合の桁数をkとすると、式6の様に表すことができる。
【0043】
【数6】
ここで、qiは、0及び1のいずれか一つの値をとる。式6の右辺を2k−1でくくると、式7の様になる。
【0044】
【数7】
更に、式7の両辺の平方根をとると、式8の様になる。
【0045】
【数8】
ここで、式8を、kの値により、以下のように場合分けすると、式9及び式10で示すことができる。
【0046】
【数9】
【数10】
更に、上記の式9及び式10について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、以下のような式11及び式12を取得することができる。
【0047】
【数11】
【数12】
定数テーブル記憶装置13は、式11及び式12のbの値が格納されている。
【0048】
即ち、定数テーブル記憶装置13は、2進数表記された所定の数(a)の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出された所定の数(a)の桁数を2で割った余りの数に応じて決定された定数が格納されている。例えば、有効数字の桁数が3ビットの場合は、上位1ビットは必ず「1」になるので、上位2番目のビットと3番目のビットの2進数の組み合わせに対応して、それぞれ定数が格納されている。
【0049】
具体的には、図2(a)に示したkが奇数の場合の定数と、図2(b)に示したkが偶数の場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0050】
例えば、kが奇数で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の平方根の2進数表記の近似値が、定数として登録されている。
【0051】
桁数算出手段23は、2進数表記されたaの桁数kを算出する手段である。
【0052】
ビットシフト量算出手段24は、定数テーブル記憶装置13に登録された定数を左シフトするビットシフト量sを算出する手段である。ビットシフト量は、桁数算出手段23で求められた桁数kが奇数の場合、s=(k−1)/2で、桁数kが偶数の場合、s=(k−2)/2として算出される。
【0053】
テーブルインデックス取得手段25は、定数テーブル記憶装置13から取得する定数のテーブルインデックスiを求める手段である。具体的には、有効桁数が3桁の場合、2進数表記されたaをk−3だけ右ビットシフトする。これにより、3桁の2進数表記の数値を得ることができる。ここで、iは、この3桁の2進数表記の数値の下位2ビットの組み合わせで求めることができる。
【0054】
定数取得手段26は、定数テーブル記憶装置13を参照する手段である。テーブルインデックス取得手段25で取得したテーブルインデックスiと、桁数算出手段23算出したkの値に相当する定数bを、定数テーブル記憶装置13から取得する。
【0055】
ビットシフト実行手段27は、定数取得手段26で取得した定数bを、ビットシフト量算出手段24で取得した左ビットシフト量sの値だけ左ビットシフトして、aの平方根の出力値を求める手段である。
【0056】
次に、図3を参照して、本発明の第1の実施の形態に係る演算方法について説明する。
【0057】
まず、ステップS101において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS102において、0判定手段21により、aが0か否かを判定する。aが0の場合、ステップS103において、Xに0を代入し、ステップS108において、Xを出力する。
【0058】
一方、ステップS102において、aが0でない場合、ステップS104において、2進数表記手段22により、10進数表記されたaを2進数表記に変換する。
【0059】
次、ステップS105において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたaの桁数から、左ビットシフト量を算出する。更に、ステップS106において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたaに対応する定数を、定数テーブル記憶装置13から取得する。
【0060】
更に、ステップS107において、ビットシフト実行手段27によって、ステップS106で取得した定数を、ステップS105で算出した左ビットシフト量だけ、左ビットシフトを実行し、Xに代入する。更に、ステップS108において、出力装置12によって、Xを出力する。
【0061】
図4を参照して、本発明の実施の形態によって近似して得られた結果と、本来の値とを比較する。3bitのラインは有効桁数を3桁として、6ビットのラインは有効桁数を6桁として、得られた結果である。この様に、本発明の実施の形態に係る演算方法は、高い精度を必要としない場合に、有効である。
【0062】
又、有効桁数を多くすることにより、より本来の値に近づけることができる。従って、要求される制度に従って有効桁数を設定することにより、効率よく演算することができる。
【0063】
(第2の実施の形態)
本発明の第1の実施の形態の変形例として、図5を参照して、本発明の第2の実施の形態を説明する。
【0064】
本発明の第2の実施の形態に係る演算装置1は、本発明の第1の実施の形態に係る演算装置1に比べて、0判定手段21を備えていない点が異なる。本発明の第2の実施の形態においては、桁数算出手段23において、桁数が0である場合、入力されたaが0であることを判定し、出力装置12に0を出力する。
【0065】
図6を参照して、本発明の第2の実施の形態に係る演算方法を説明する。
【0066】
まず、ステップS201において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS202において、2進数表記手段22により、10進数表記されたaを2進数表記に変換する。
【0067】
次に、ステップS203において、桁数算出手段23によって、2進数表記されたaの桁数が0か否かを判定する。aの桁数が0の場合、ステップS204において、Xに0を代入し、ステップS208において、Xを出力する。
【0068】
一方、ステップS203において、aの桁数が0でない場合、ステップS205において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたaの桁数から、左ビットシフト量を算出する。次に、ステップS206において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたaに対応する定数を、定数テーブル記憶装置13から取得する。
【0069】
更に、ステップS207において、ビットシフト実行手段27によって、ステップS206で取得した定数を、ステップS205で算出した左ビットシフト量だけ、左ビットシフトを実行し、Xに代入する。更に、ステップS208において、出力装置12によって、Xを出力する。
【0070】
この様に、本発明の第2の実施の形態においては、本発明の第1の実施の形態に比べて簡略な構成で、同様の演算を行うことができる。
【0071】
(第3の実施の形態)
本発明の第3の実施の形態においては、数aの累乗根(n乗根)を計算する場合、特に数aの3乗根を計算する場合について説明する。
【0072】
図7を参照して、本発明の第3の実施の形態について説明する。
【0073】
本発明の第3の実施の形態に係る演算装置1は、本発明の第1の実施の形態に係る演算装置1と比べて、0判定手段21の代わりに、数値判定手段28を備えている点が異なる。
【0074】
数値判定手段28は、入力装置11から入力された数値aについて判定する。第1及び第2の実施の形態においては、aが整数の場合について説明したが、第3の実施の形態においては、aが整数でなくても良い。数値判定手段28は、数値aが0の場合、0判定手段21と同様に、0を出力装置12に出力する。又、数値aが小数点を含む数値の場合は、数値aに乗算して、整数にする。このとき、例えば、10u n倍(uは整数)して、aを整数にするのがより好ましい、この場合、ビットシフト実行手段27で、1/10uして、結果を出せば良く、桁をずらすだけで、計算を行うことができる。
【0075】
ビットシフト量算出手段24は、定数テーブル記憶装置13に登録された定数を左シフトするビットシフト量sを算出する手段である。ビットシフト量は、桁数算出手段23で求められた桁数kがk=nm+i(mは整数、iは1〜n−1の整数)の場合、s=(k−i)/nで、桁数kがk=nm(mは整数)の場合、s=(k−n)/nとして算出される。
【0076】
次に、一般化したn乗根を算出する場合の定数テーブル記憶装置13に格納される定数について説明する。
【0077】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の様に表すことができる。
【0078】
【数13】
ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0079】
【数14】
更に、式14の両辺のn乗根をとると、式15の様になる。
【0080】
【数15】
ここで、式15を、kの値により、以下のように場合分けすると、式16及び式17で示すことができる。
【0081】
【数16】
【数17】
更に、上記の式16及び式17について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0082】
例えば、有効桁数を3桁として3乗根を計算する場合について説明すると、図8(a)に示したk=3m+1の場合の定数と、図8(b)に示したk=3m+2の場合の定数と、図8(c)に示したk=3mの場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0083】
例えば、kが3m+1で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の3乗根の2進数表記の近似値が、定数として登録されている。
【0084】
第3の実施の形態においては、上記の様な定数が格納された定数テーブル記憶装置13を用いと、ビットシフト量算出手段24と、を用いて第1の実施の形態と同様の計算を行うと、所定の数の3乗根を得ることができる。
【0085】
次に、図9を参照して、本発明の第3の実施の形態に係る演算方法について説明する。
【0086】
まず、ステップS301において、入力装置11により、10進数表記されたaの値を取得する。次に、ステップS302において、数値判定手段28により、aが0か否かを判定する。aが0の場合、ステップS303において、Xに0を代入し、ステップS314において、出力装置12にXを出力する。
【0087】
一方、ステップS302において、aが0でない場合、更に、ステップS304において、10進数表記されたaが、整数であるか否かを判定する。整数である場合、ステップS306において、cにaを代入する。又、整数でない場合、ステップS305において、10進数表記されたaを、整数になるように10u n倍して、cに代入する。
【0088】
次に、ステップS307において、2進数表記手段22により、10進数表記されたcを2進数表記に変換する。次に、ステップS308において、桁数算出手段23及びビットシフト量算出手段24により、2進数表記されたcの桁数から、左ビットシフト量を算出する。更に、ステップS309において、テーブルインデックス取得手段25及び定数取得手段26により、2進数表記で示されたcに対応する定数を、定数テーブル記憶装置13から取得する。
【0089】
更に、ステップS310において、ビットシフト実行手段27によって、ステップS309で取得した定数を、ステップS308で算出した左ビットシフト量だけ、左ビットシフトを実行し、Yに代入する。
【0090】
次に、ステップS311において、入力されたaが整数であるか否かを判定する。aが整数である場合、ステップS313において、XにYを代入して、ステップS314において、出力装置12にXを出力する。一方、aが整数でない場合、ステップS312において、Yを1/10u倍した値をXに代入して、ステップS314において、出力装置12にXを出力する。
【0091】
第3の実施の形態によれば、整数に限らず、小数を含む数の累乗根を求めることができる。更に、平方根の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24の計算方法を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0092】
(第4の実施の形態)
本発明の第4の実施の形態においては、数aの累乗(n乗)を計算する場合について説明する。
【0093】
第4の実施の形態においては、第3の実施の形態と同様に定数テーブル記憶装置13と、ビットシフト量算出手段24の計算方法を変更することにより、数aの累乗を計算することができる。
【0094】
次に、一般化したn乗を算出する場合の定数テーブル記憶装置13に格納される定数について説明する。
【0095】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の様に表すことができる。ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0096】
更に、式14の両辺のn乗をとると、式18の様になる。
【0097】
【数18】
ここで、式18は、式19の様に示すことができる。
【0098】
【数19】
更に、上記の式19について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0099】
例えば、有効桁数を3桁として3乗を計算する場合について説明すると、図10を参照するように、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0100】
例えば、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の3乗の2進数表記の近似値が、定数として登録されている。
【0101】
ここで、第4の実施の形態に係るビットシフト量算出手段24において、ビットシフト量を計算する場合、ビットシフト量sは、桁数算出手段23で求められた桁数kからs=(k−1)*nと算出される。
【0102】
第4の実施の形態によれば、n乗の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24での計算方法と、を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0103】
(第5の実施の形態)
本発明の第5の実施の形態においては、数aのg/h乗(g、hは整数)を計算する場合、特に、2/3乗を計算する場合について説明する。
【0104】
第5の実施の形態においては、第3の実施の形態と同様に、定数テーブル記憶装置13と、ビットシフト量算出手段24を変更することにより、数aのg/h乗を計算することができる。
【0105】
次に、一般化したg/h乗を算出する場合の定数テーブル記憶装置13に格納された定数について説明する。
【0106】
2進数表記手段22によって得られる2進数表記は、入力された数aを2進数表記に変換した場合の桁数をkとすると、式13の用に表すことができる。
【0107】
ここで、qiは、0及び1のいずれか一つの値をとる。式13の右辺を2k−1でくくると、式14の様になる。
【0108】
更に、式14の両辺のg/h乗をとると、式20の様になる。
【0109】
【数20】
ここで、式20を、kの値により場合分けすると、式21及び式22で示すことができる。
【0110】
【数21】
【数22】
更に、上記の式21及び式22について、上位3桁を有効桁数として、残りの項を無視する近似を行うと、第1の実施の形態と同様に演算を行うことができる。
【0111】
例えば、有効桁数を3桁として2/3乗を計算する場合について説明すると、図11(a)に示したk=3m+1の場合の定数と、図11(b)に示したk=3m+2の場合の定数と、図11(c)に示したk=3mの場合の定数は、それぞれ、上位2番目のビットと3番目のビットの組み合わせが、「00」、「01」、「10」、「11」について決定された定数が、定数テーブル記憶装置13に格納されている。
【0112】
例えば、kが3m+1で、上位2番目のビットと3番目のビットの組み合わせが「01」の場合、1+1/4=1.25の2/3乗の2進数表記の近似値が、定数として登録されている。
【0113】
第5の実施の形態におけるビットシフト量算出手段24は、桁数算出手段23で求められた桁数kがk=hm+i(mは整数、iは1〜n−1の整数)の場合、s=(k−i)*g/hで、k=hm(mは整数)の場合、s=(k−h)*g/hとして算出される。
【0114】
第5の実施の形態によれば、g/h乗の算出も、定数テーブル記憶装置13に登録する定数と、ビットシフト量算出手段24での計算方法と、を変更するだけで、第1の実施の形態と同様の方法で求めることができる。
【0115】
(その他の実施の形態)
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【0116】
本発明の第1乃至第5の実施の形態を別々に記載したが、定数テーブル記憶装置に、平方根、3乗根、4乗根、3乗、4乗などの様々な演算に必要な定数を格納することにより、同様の演算回路で、これら全ての演算を行うことができる。
【0117】
この様に、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0118】
【発明の効果】
本発明によれば、容易に実装することのできる演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係る演算装置の機能ブロック図である。
【図2】本発明の第1の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図3】本発明の第1の実施の形態に係る演算方法を示したフローチャートである。
【図4】本発明の第1の実施の形態によって近似して得られた結果と、本来の値とを比較したグラフである。
【図5】本発明の第2の実施の形態に係る演算装置の機能ブロック図である。
【図6】本発明の第2の実施の形態に係る演算方法を示したフローチャートである。
【図7】本発明の第3の実施の形態に係る演算装置の機能ブロック図である。
【図8】本発明の第3の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図9】本発明の第3の実施の形態に係る演算方法を示したフローチャートである。
【図10】本発明の第4の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図11】本発明の第5の実施の形態に係る演算装置に備えられた定数テーブル記憶装置のデータ項目とデータの例である。
【図12】従来の平方根を演算する方法を説明したグラフである。
【符号の説明】
1…演算装置
11…入力装置
12…出力装置
13…定数テーブル記憶装置
21…0判定手段
22…2進数表記手段
23…桁数算出手段
24…ビットシフト量算出手段
25…テーブルインデックス取得手段
26…定数取得手段
27…ビットシフト実行手段
28…数値判定手段
Claims (9)
- 所定の数を、近似して演算する演算方法において、
前記所定の数を2進数表記に変換するステップと、
2進数表記された前記所定の数の属性に応じて決定される定数を取得するステップと、
前記2進数表記された前記所定の数の属性に応じて決定されるビットシフト量を取得するステップと、
前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、
前記ビットシフトを実行した前記定数を、前記所定の数の演算結果として出力するステップ
とを備えることを特徴とする演算方法。 - 所定の数の平方根を、近似して演算する平方根演算方法において、
前記所定の数が整数の場合、
前記所定の数を2進数表記に変換するステップと、
2進数表記された前記所定の数の桁数を算出するステップと、
前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、算出された前記所定の数の桁数を2で割った余りの数と、に応じて決定された定数を取得するステップと、
前記2進数表記された前記所定の数の桁数に応じて決定される、ビットシフト量を取得するステップと、
前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、
前記ビットシフトを実行した前記定数を、前記所定の数の平方根として出力するステップ
とを備えることを特徴とする平方根演算方法。 - 前記所定の数が小数の場合、
前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、
前記所定の数の平方根として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数の平方根で除して、前記所定の数の平方根として出力する
ことを特徴とする請求項2に記載の平方根演算方法。 - 所定の数の累乗根を、近似して演算する累乗根演算方法において、
前記所定の数が整数の場合、
前記所定の数を2進数表記に変換するステップと、
2進数表記された前記所定の数の桁数を算出するステップと、
前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、前記累乗根の累乗根数と、算出された前記所定の数の桁数を前記累乗根の累乗根数で割った余りの数と、に応じて決定された定数を取得するステップと、
前記2進数表記された前記所定の数の桁数と前記累乗根数に応じて決定される、ビットシフト量を取得するステップと、
前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、
前記ビットシフトを実行した前記定数を、前記所定の数の累乗根として出力するステップ
とを備えることを特徴とする累乗根演算方法。 - 前記所定の数が小数の場合、
前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、
前記所定の数の累乗根として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数の累乗根で除して、前記所定の数の累乗根として出力する
ことを特徴とする請求項4に記載の累乗根演算方法。 - 所定の数の累乗を、近似して演算する累乗演算方法において、
前記所定の数が整数の場合、
前記所定の数を2進数表記に変換するステップと、
2進数表記された前記所定の数の桁数を算出するステップと、
前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの、2進数の組み合わせと、累乗の累乗数に応じて決定された定数を取得するステップと、
前記2進数表記された前記所定の数の桁数と前記累乗数と、に応じて決定される、ビットシフト量を取得するステップと、
前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、
前記ビットシフトを実行した前記定数を、前記所定の数の累乗として出力するステップ
とを備えることを特徴とする累乗演算方法。 - 前記所定の数が小数の場合、
前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、
前記所定の数の累乗として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数の累乗で除して、前記所定の数の累乗として出力する
ことを特徴とする請求項6に記載の累乗演算方法。 - 所定の数のg/h乗(g、hは整数)を、近似して演算するg/h乗演算方法において、
前記所定の数が整数の場合、
前記所定の数を2進数表記に変換するステップと、
2進数表記された前記所定の数の桁数を算出するステップと、
前記2進数表記された前記所定の数の上位2番目のビットから、所定の有効数字の桁数までの2進数の組み合わせと、前記gと、前記hと、算出された前記所定の数の桁数を前記hで割った余りの数と、に応じて決定された定数を取得するステップと、
前記2進数表記された前記所定の数の桁数と前記累乗数に応じて決定される、ビットシフト量を取得するステップと、
前記定数を、取得した前記ビットシフト量のビットシフトを実行するステップと、
前記ビットシフトを実行した前記定数を、前記所定の数のg/h乗として出力するステップ
とを備えることを特徴とするg/h乗演算方法。 - 前記所定の数が小数の場合、
前記所定の数を2進数表記に変換するステップにおいて、前記所定の数が整数になるように、前記所定の数を乗数で乗して、乗した前記所定の数を2進数表記に変換し、
前記所定の数のg/h乗として出力するステップにおいて、前記ビットシフトを実行した前記定数を、前記乗数のg/h乗で除して、前記所定の数のg/h乗として出力する
ことを特徴とする請求項8に記載のg/h乗演算方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002342406A JP2004178188A (ja) | 2002-11-26 | 2002-11-26 | 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002342406A JP2004178188A (ja) | 2002-11-26 | 2002-11-26 | 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2004178188A true JP2004178188A (ja) | 2004-06-24 |
Family
ID=32704487
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002342406A Withdrawn JP2004178188A (ja) | 2002-11-26 | 2002-11-26 | 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2004178188A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2010058521A1 (ja) * | 2008-11-19 | 2010-05-27 | 日本電気株式会社 | 平方根演算装置及び方法、並びに平方根演算プログラム |
-
2002
- 2002-11-26 JP JP2002342406A patent/JP2004178188A/ja not_active Withdrawn
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2010058521A1 (ja) * | 2008-11-19 | 2010-05-27 | 日本電気株式会社 | 平方根演算装置及び方法、並びに平方根演算プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Takagi | Powering by a table look-up and a multiplication with operand modification | |
| US10768898B2 (en) | Efficient modulo calculation | |
| JP3551113B2 (ja) | 除算器 | |
| US8868633B2 (en) | Method and circuitry for square root determination | |
| KR100756137B1 (ko) | 제산 및 제곱근 연산 유닛 | |
| Wang et al. | $(M, p, k) $-Friendly Points: A Table-Based Method to Evaluate Trigonometric Function | |
| JP2004178188A (ja) | 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法 | |
| JP3660075B2 (ja) | 除算装置 | |
| JP2000148447A (ja) | 乗算器及びその演算方法 | |
| JPWO2011036746A1 (ja) | 演算装置 | |
| CN104281433A (zh) | 用于计算基于数据的函数模型的模型计算单元和控制器 | |
| JP2005228169A (ja) | 乱数生成装置 | |
| US6549924B1 (en) | Function generating interpolation method and apparatus | |
| CN102253924B (zh) | 开方运算的硬件实现方法以及开方运算器 | |
| Ugurdag et al. | Efficient combinational circuits for division by small integer constants | |
| JP2777265B2 (ja) | 高基数開平演算装置 | |
| JP2003084667A (ja) | 同一基底に対する複数の冪乗剰余演算を行う方法と装置並びにプログラム | |
| JPH0749769A (ja) | べき乗演算装置 | |
| KR100761132B1 (ko) | Sha-1 연산 방법 및 장치 | |
| Patnayak et al. | Design Carry Select Adder With D-Latch | |
| JP2000010763A (ja) | 除算回路 | |
| JP2008021189A (ja) | 除算装置および除算方法 | |
| JP4954019B2 (ja) | 演算装置 | |
| JPH01300338A (ja) | 浮動小数点乗算器 | |
| JP2003303096A (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: 20060207 |