JP2008097194A - 逆数算出装置、逆数算出方法、及び逆数算出プログラム - Google Patents
逆数算出装置、逆数算出方法、及び逆数算出プログラム Download PDFInfo
- Publication number
- JP2008097194A JP2008097194A JP2006276490A JP2006276490A JP2008097194A JP 2008097194 A JP2008097194 A JP 2008097194A JP 2006276490 A JP2006276490 A JP 2006276490A JP 2006276490 A JP2006276490 A JP 2006276490A JP 2008097194 A JP2008097194 A JP 2008097194A
- Authority
- JP
- Japan
- Prior art keywords
- data
- boundary value
- reciprocal
- coefficient
- inverse
- 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 75
- 230000014509 gene expression Effects 0.000 claims abstract description 38
- 238000006243 chemical reaction Methods 0.000 claims abstract description 24
- 238000000034 method Methods 0.000 description 14
- 238000012935 Averaging Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
【課題】反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を算出することができる逆数算出装置、逆数算出方法、及び逆数算出プログラムを提供する。
【解決手段】データ変換部10は、入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに入力データを変換する。値域特定部11は、データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、中間データが属する値域を特定する。逆数算出部12は、中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された係数と中間データとから中間データの逆数を算出する。データ再変換部13は、第1のビットシフト操作に対応した第2のビットシフト操作により、中間データの逆数を入力データの逆数に変換する。
【選択図】図1
【解決手段】データ変換部10は、入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに入力データを変換する。値域特定部11は、データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、中間データが属する値域を特定する。逆数算出部12は、中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された係数と中間データとから中間データの逆数を算出する。データ再変換部13は、第1のビットシフト操作に対応した第2のビットシフト操作により、中間データの逆数を入力データの逆数に変換する。
【選択図】図1
Description
本発明は、入力データの逆数を算出する逆数算出装置及び逆数算出方法に関する。また、本発明は、入力データの逆数を算出する処理をコンピュータに実行させるための逆数算出プログラムにも関する。
組み込みシステムにおいて、入力データ(x)の逆数(x−1)を求める方法として、繰り返し演算を用いた方法よりも高速に逆数を得る次の方法が一般的に知られている。第1の方法は、入力データに対する逆数の値をメモリに予め格納しておき、入力データをアドレスとしてメモリを参照し、メモリに格納された逆数のデータを出力するという方法である。第2の方法は、反比例曲線(x−1)を近似する直線の1次式の傾きデータと切片データをメモリに予め格納しておき、入力データに応じた傾きデータと切片データをメモリから取り出すことにより反比例曲線の近似式を導出し、その近似式を用いて入力データに対する逆数を算出するという方法である。しかし、これらの方法には、入力データxや、メモリに格納されるデータのデータ幅が大きくなると、メモリが大規模化するという問題がある。
この問題に対して、特許文献1では、入力データxの逆数を算出する以下の方法が提案されている。以下の式に示すように、入力データxをビットシフトにより特定のデータ範囲のデータx’に変換し、データx’に対して、上記の第2の方法を用いてx’の逆数y’を算出し、y’に対してビットシフトを行うデータ変換により、xの逆数yを得ることができる。
この方法によれば、xのデータ幅が大きくなってもx’のデータ範囲には影響がないため、反比例曲線を近似する1次式の傾きデータ及び切片データは、x’のデータ範囲についてのみメモリに格納しておくだけで構わない。したがって、特許文献1に記載された逆数演算装置では、大規模のメモリを必要とせずに逆数の演算を高速に行うことができる。
特開2000−81968号公報
しかし、特許文献1に記載された逆数演算装置では、反比例曲線を近似する1次式の傾きデータ及び切片データをメモリに格納しておく必要がある。
本発明は、上述した課題に鑑みてなされたものであって、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を算出することができる逆数算出装置、逆数算出方法、及び逆数算出プログラムを提供することを目的とする。
本発明は、上記の課題を解決するためになされたもので、入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換部と、前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定部と、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出部と、前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換部とを備えることを特徴とする逆数算出装置である。
また、本発明の逆数算出装置において、前記逆数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
また、本発明の逆数算出装置において、前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
また、本発明の逆数算出装置において、前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする。
また、本発明は、入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップとを実行することを特徴とする逆数算出方法である。
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする。
また、本発明は、入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップとをコンピュータに実行させるための逆数算出プログラムである。
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする。
本発明によれば、反比例曲線を近似する一次近似式の係数が、2の階乗で示される、中間データの属する値域の一方の境界値と他方の境界値を変数として算出されるので、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができるという効果が得られる。
以下、図面を参照し、本発明の実施形態を説明する。
(第1の実施形態)
まず、本発明の第1の実施形態を説明する。図1は、本実施形態による逆数算出装置の構成を示している。データ変換部10は、入力データxに対するビットシフト操作により、所定のデータ範囲に収まる中間データ(後述するx’またはx’’)に入力データxを変換する。データ変換部10によるデータ変換処理は、特許文献1に記載された、入力データxをビットシフトにより特定のデータ範囲のデータx’に変換する処理に対応している。
まず、本発明の第1の実施形態を説明する。図1は、本実施形態による逆数算出装置の構成を示している。データ変換部10は、入力データxに対するビットシフト操作により、所定のデータ範囲に収まる中間データ(後述するx’またはx’’)に入力データxを変換する。データ変換部10によるデータ変換処理は、特許文献1に記載された、入力データxをビットシフトにより特定のデータ範囲のデータx’に変換する処理に対応している。
値域特定部11は、所定のデータ範囲に含まれ、2の階乗となる値を境界値とする値域の中から、中間データが属する値域を特定する。本実施形態における所定のデータ範囲は、20と2n(nは1以上の整数)を境界値とする範囲であり、このデータ範囲を、2の階乗となる値で区切ってできる部分範囲が、本実施形態における値域である。データ範囲が複数の値域に区分される場合もあるし、データ範囲の設定の仕方によっては、データ範囲と値域が一致する場合もある。
逆数算出部12は、中間データが属する値域内の反比例曲線(逆数を表す曲線)を近似する近似式を、その値域の境界値に対する加算、減算、及びビットシフト操作の少なくともいずれかにより導出し、中間データ及び近似式から中間データの逆数を算出する。後述するが、本実施形態では、中間データが属する値域の境界値を通る直線の式を反比例曲線の近似式とすることにより、加算器(減算器)とビットシフトのみで近似式を導出することができる。
データ再変換部13は、データ変換部10が行ったビットシフト操作に対応したビットシフト操作により、逆数算出部12で求められた中間データの逆数を入力データxの逆数に変換する。
次に、本実施形態による逆数算出方法を説明する。以下では、逆数算出装置に入力されるデータが非ゼロであることを前提として説明する。また、図2は逆数算出装置の動作の手順を示しており、適宜、図2を参照する。
データ変換部10は、入力データxに対するビットシフト操作により、2の階乗となる値を境界値とするデータ範囲に収まる中間データx’またはx’’に入力データxを変換する(図2のステップS100)。中間データx’は本実施形態の概念の説明のため便宜的に用いるものであり、中間データx’’は、実際に逆数算出装置の内部で扱われるデータ形式に対応したものである。
20≦x’<2nのデータ範囲に含まれる中間データx’に入力データxを変換する場合、まず、MSB(Most Significant Bit)側からnビットずつ、非ゼロかどうか判定する。例えば、入力データxを16ビットの整数である0x053Cとし、nを4とすると、入力データxを構成するビットに対して、4ビットずつ、非ゼロかどうか判定する。続いて、入力データxのnビットの組み合わせのうち、非ゼロを検出した最初のnビットの組み合わせを(s+1)番目(s=0,1,2,3・・・)のnビットの組み合わせとする。例えば、入力データxを0x053Cとし、nを4とした例の場合、2番目の4ビットの組み合わせが5で非ゼロであるから、sは1となる。
続いて、非ゼロであったnビットの組み合わせが中間データx’の整数部になるように、(m−n(1+s))ビット分、右にビットシフト操作を行う。このビットシフト操作による有効データの消失を防ぐために、ビットシフト操作の前に予めビット拡張を行う必要がある。例えば、入力データxがmビットの整数である場合は、mビットの整数部とmビットの小数部で構成される2mビットのデータに拡張する。したがって、前述した例では、中間データx’は以下のように導出される。
x’=0x00053c00(整数部16ビット、小数部16ビット)
x’=0x00053c00(整数部16ビット、小数部16ビット)
続いて、この中間データx’に対して、後段における処理のデータフォーマットに合わせるためのビットシフト操作を行い、中間データx’’として値域特定部11及び逆数算出部12に出力する。例えば、整数部がnビット、小数部が(m−n)ビットで構成されるmビットの中間データx’’のデータフォーマットに合わせる場合は、(m−n)ビット分、中間データx’を左にビットシフトし、MSB側のmビットを中間データx’’として後段へ出力する。したがって、前述した例では、m=16、n=4なので、中間データx’を12ビット分、左にビットシフトし、MSB側16ビットを中間データx’’として後段へ出力する(x’’=0x53c0)。
上記により、要素x’と中間データx’’の関係は以下のように表される。
x’’=2(m−n)x’
また、入力データxと中間データx’’の関係は以下のように表される。
x’’=2snx
x’’=2(m−n)x’
また、入力データxと中間データx’’の関係は以下のように表される。
x’’=2snx
なお、これらのビットシフト操作及びビット拡張を簡略化するために、上記の(m−n(1+s))ビット分の右ビットシフト操作と、(m−n)ビット分の左ビットシフト操作の2回のビットシフト操作を1回にまとめたsnビット分の左シフト操作を行うことが望ましい。また、データ再変換部13によるビットシフト操作のため、データ変換部10で何ビットシフトされたのかを示す第1のビットシフト情報として、sがデータ再変換部13へ出力される。例えば、入力データxが0x053Cの場合、中間データx’’は0x53C0、第1のビットシフト情報sは1となる。
値域特定部11は、中間データx’が属する値域を特定する(図2のステップS110)。x’が含まれるデータ範囲20≦x’<2nを、2の階乗となる値毎に区切ったものが値域であり、MSB側から順に中間データx’’の各ビットが1かどうかを判定することにより、x’が属する値域を特定することができる。図3(a)は中間データx’’の各ビット(最上位ビットをm−1番目、最下位ビットを0番目としている)の値と、中間データx’が属する値域との関係を示している。
例えば、中間データx’が含まれるデータ範囲20≦x’<24を、2の階乗となる値毎に値域に区切るとすると、20≦x’<21となる値域0、21≦x’<22となる値域1、22≦x’<23となる値域2、23≦x’<24となる値域3の4つの値域にデータ範囲が区分される。中間データx’’を0x53C0とすると、図3(b)によれば、これらの値域0〜3のうち、中間データx’は値域2に属していることが特定できる。上記のようにして特定された値域を示す値域情報が逆数算出部12へ出力される。
逆数算出部12は、中間データx’が属する値域において、x’の逆数を表す反比例曲線x−1を近似する1次式を加算または減算とビットシフト操作とにより導出し、x’の逆数を算出する(図2のステップS120)。以下、反比例曲線を近似する1次式の導出方法を説明する。中間データx’と、x’の逆数y’との関係は以下の式で表される。
y’=x’−1
y’=x’−1
このとき、y’の曲線上の2点である点(xa,xa −1)と点(xb,xb −1)を通る直線の方程式は以下の式で表される。
y0’={−x’+(xa+xb)}(xaxb)−1
y0’={−x’+(xa+xb)}(xaxb)−1
xa及びxbが2の階乗となる値である場合、y0’は加算器(減算器)とビットシフトレジスタのみで導出される。すなわち、図4に示すようにxa=2n、xb=2n+1(n=0,1,2,3,・・・)ならば、y0’は以下の式で表される。
y0’=(−x’+3×2n)(22n+1)−1
y0’=(−x’+3×2n)(22n+1)−1
一方、値域特定部11は、逆数算出部12により、y0’が加算器(減算器)とビットシフトレジスタのみで導出できるように値域を分割する必要がある。逆数算出部12がy0’を導出する場合、図4に示すように、値域特定部11では2n毎に値域を区切る必要がある。以上に説明したように、2の階乗となる値で区分された値域のうち、どの値域にx’が属しているのかを特定できれば、y’を近似する1次式(例えば上記のy0’)は加算器(減算器)とビットシフトレジスタのみで導出できる。
例えば、22≦x’<23の場合、xa=22、xb=23となるので、y0’は以下の式で表される。なお、以下の式において、>>は右ビットシフト操作を表しており、以下の式は、(−x’+12)の演算結果に対して5ビット分の右ビットシフト操作を行うとy0’が得られることを表している。
y0’={−x’+(xa+xb)}(xaxb)−1={−x’+(22+23)}(2223)−1=(−x’+12)>>5
y0’={−x’+(xa+xb)}(xaxb)−1={−x’+(22+23)}(2223)−1=(−x’+12)>>5
逆数算出部12は、値域特定部11から入力される値域情報に基づいて、上記のような反比例曲線の近似式を導出し、その近似式と、データ変換部10から入力される中間データx’’とから中間データx’’の逆数y’’を算出し、その算出結果を仮逆数データy’’’と第2のビットシフト情報tとに分離して、データ再変換部13へ出力する。なお、仮逆数データy’’’の小数部のビット幅は中間データx’’のビット幅に合わせることとする。
例えば、中間データx’’が0x53C0、中間データx’のデータ範囲が20≦x’<24の場合、x’は値域2(図3(b)参照)に属している。この値域2における反比例曲線y’の近似式y0’は以下のように導出される。
y0’={−x’+(22+23)}(2223)−1=(12−x’)>>5
y0’={−x’+(22+23)}(2223)−1=(12−x’)>>5
この式にx’’を代入すれば、中間データx’’の逆数y’’が算出される。
y’’=(0CHEX−x’)>>5=(0CHEX212−x’ 212)2−122−5=(0C000HEX−053C0HEX)2−17=06C40HEX>>17
なお、上式において、以下を考慮している。
x’’=2(m−n)x’=2(16−4)x’=212x’
y’’=(0CHEX−x’)>>5=(0CHEX212−x’ 212)2−122−5=(0C000HEX−053C0HEX)2−17=06C40HEX>>17
なお、上式において、以下を考慮している。
x’’=2(m−n)x’=2(16−4)x’=212x’
ここで、仮逆数データy’’’の小数部のビット幅を中間データx’’のビット幅に合わせると、中間データx’’の逆数y’’は以下の式で表される。
y’’=06C40HEX>>5
このy’’から、仮逆数データy’’’(=0x06C40)と第2のビットシフト情報t(=5)がデータ再変換部13へ出力される。
y’’=06C40HEX>>5
このy’’から、仮逆数データy’’’(=0x06C40)と第2のビットシフト情報t(=5)がデータ再変換部13へ出力される。
データ再変換部13は、データ変換部10より入力される第1のビットシフト情報sと、逆数算出部12より入力される第2のビットシフト情報tとに基づいて、逆数算出部12より入力される仮逆数データy’’’に対してビットシフト操作を行うことにより、仮逆数データy’’’を入力データxの逆数x−1に変換する(図2のステップS130)。以下の式に示すように、本実施形態による逆数算出方法では、データ変換部10がxに対するビットシフト操作(x>>k)を行ったので、データ再変換部13が(x>>k)−1に対してビットシフト操作を行う必要がある。すなわち、データ再変換部13は、仮逆数データy’’’に対して、(m−n(1+s))ビット分、右にビットシフト操作を行う(入力データxのビット幅がm、中間データx’のデータ範囲が20≦x’<2nの場合)。
したがって、データ再変換部13は、逆数算出部12から入力される仮逆数データy’’’に対して、データ変換部10が行ったビットシフト操作に合わせたビットシフト操作を行い、さらに、逆数算出部12において未実施であるビットシフト操作を行う。そして、データ再変換部13は、仮逆数データy’’’に対してビットシフト操作を行った結果を、入力データxの逆数yとして出力する。なお、yのビット幅は、必要に応じた任意のビット幅に設定されているものとする。
例えば、第1のビットシフト情報sが1、仮逆数データy’’’が0x06C40、第2のビットシフト情報tが5の場合、逆数yは以下のように算出される。なお、以下の式でビットシフト量を表す8は、xとx’の関係から求められるビットシフト量であり、5は逆数算出部12で未実施のビットシフト操作のビットシフト量であり、12はx’とx’’の関係から求められるビットシフト量である。
y=06C40HEX>>(8+5+12)=0000000110110001000000BIN(整数部1ビット、小数部21ビット)
y=06C40HEX>>(8+5+12)=0000000110110001000000BIN(整数部1ビット、小数部21ビット)
上述したように、本実施形態によれば、入力データxの逆数x−1を示す反比例曲線を近似する近似式が、中間データの属する値域の境界値に対する加算、減算、及びビットシフト操作の少なくともいずれかにより導出されるので、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができる。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。第1の実施形態では、逆数算出部12がy’=x’−1を近似する1次式を導出する際に、y’の曲線上の2点を通る直線y0’を、加算、減算、及びビットシフト操作の少なくともいずれかにより導出していた。本実施形態では、y’を近似する1次式として、y0’とは異なる近似式y1’を導出し、y0’とy1’を組み合わせて用いることにより、第1の実施形態よりも精度の高い逆数の値を算出することを可能としたものである。
次に、本発明の第2の実施形態を説明する。第1の実施形態では、逆数算出部12がy’=x’−1を近似する1次式を導出する際に、y’の曲線上の2点を通る直線y0’を、加算、減算、及びビットシフト操作の少なくともいずれかにより導出していた。本実施形態では、y’を近似する1次式として、y0’とは異なる近似式y1’を導出し、y0’とy1’を組み合わせて用いることにより、第1の実施形態よりも精度の高い逆数の値を算出することを可能としたものである。
y’=x’−1の曲線とy’の曲線上の点(xc,xc −1)で接する直線の1次式y1’は以下の式で表される。
y1’=(−x’+2xc)(xc)−2
ここで、xcが、2の階乗となる値である場合、上記の式の導出はy0’と同様に加算器(減算器)とビットシフトレジスタのみで表現される。例えば、xc=23の場合、y1’は以下の式で表される。
y1’=(−x’+2xc)(xc)−2=(−x’+2×22)(22)−2=(−x’+23)>>4
y1’=(−x’+2xc)(xc)−2
ここで、xcが、2の階乗となる値である場合、上記の式の導出はy0’と同様に加算器(減算器)とビットシフトレジスタのみで表現される。例えば、xc=23の場合、y1’は以下の式で表される。
y1’=(−x’+2xc)(xc)−2=(−x’+2×22)(22)−2=(−x’+23)>>4
また、図4に示すように、y0’は常にy’以上の値を示し、図5に示すように、y1’は常にy’以下の値を示す。そのため、y0’とy1’を平均化した直線y2’(図6参照)は、y’の曲線をy0’とy1’よりも高い精度で近似する直線となる。このy2’は以下の式で表される。
y2’=(y0’+y1’)2−1
y2’=(y0’+y1’)2−1
2n≦x’<(2n+23−1)の領域では、y2’は以下の式で表される。
y2’={(−x’+3×2n)(22n+1)−1+(−x’+2n+1)(2n)−2}2−1=(−3x’+7×2n)(2n+1)−2
y2’={(−x’+3×2n)(22n+1)−1+(−x’+2n+1)(2n)−2}2−1=(−3x’+7×2n)(2n+1)−2
一方、(2n+23−1)≦x’<2n+1の領域では、y2’は以下の式で表される。
y2’={(−x’+3×2n)(22n+1)−1+(−x’+2n+2)(2n+1)−2}2−1=(−3x’+5×2n+1)(2n+1)−2
y2’={(−x’+3×2n)(22n+1)−1+(−x’+2n+2)(2n+1)−2}2−1=(−3x’+5×2n+1)(2n+1)−2
本実施形態による逆数算出部12は、これらのy2’を用いてx’の逆数を算出する。また、本実施形態では、逆数算出部12がy2’を用いてy’の近似式を導出するように変更することに伴い、値域特定部11がx’の値域を特定する方法も変更される。第1の実施形態ではy0’を使用しているため、図4のように値域は、y0’の変化点である2n毎に区分されていたが、本実施形態ではy2’を使用するため、図6のように値域は、y2’の変化点である2n及び(2n+23−1)毎に区分される。
上述したように、本実施形態によれば、第1の実施形態と同様に、反比例曲線の近似式を導出するのに必要な傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができる。また、反比例曲線を近似する2つの近似式を平均化した近似式から入力データの逆数を算出することによって、第1の実施形態よりも精度の高い算出結果を得ることができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態による逆数算出装置の動作及び機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させてもよい。
ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
10・・・データ変換部、11・・・値域特定部、12・・・逆数算出部、13・・・データ再変換部
Claims (12)
- 入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換部と、
前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定部と、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出部と、
前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換部と、
を備えることを特徴とする逆数算出装置。 - 前記逆数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項1に記載の逆数算出装置。
- 前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項1に記載の逆数算出装置。
- 前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする請求項1に記載の逆数算出装置。
- 入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、
前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、
前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップと、
を実行することを特徴とする逆数算出方法。 - 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項5に記載の逆数算出方法。
- 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項5に記載の逆数算出方法。
- 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする請求項5に記載の逆数算出方法。
- 入力データに対する第1のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、
前記データ範囲に設定された、2の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、
前記第1のビットシフト操作に対応した第2のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップと、
をコンピュータに実行させるための逆数算出プログラム。 - 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項9に記載の逆数算出プログラム。
- 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項9に記載の逆数算出プログラム。
- 前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第1の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第2の係数とを平均化して前記係数を算出することを特徴とする請求項9に記載の逆数算出プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006276490A JP2008097194A (ja) | 2006-10-10 | 2006-10-10 | 逆数算出装置、逆数算出方法、及び逆数算出プログラム |
US11/869,353 US20080091754A1 (en) | 2006-10-10 | 2007-10-09 | Reciprocal calculation unit and reciprocal calculation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006276490A JP2008097194A (ja) | 2006-10-10 | 2006-10-10 | 逆数算出装置、逆数算出方法、及び逆数算出プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008097194A true JP2008097194A (ja) | 2008-04-24 |
Family
ID=39304290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006276490A Withdrawn JP2008097194A (ja) | 2006-10-10 | 2006-10-10 | 逆数算出装置、逆数算出方法、及び逆数算出プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080091754A1 (ja) |
JP (1) | JP2008097194A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016062404A (ja) * | 2014-09-19 | 2016-04-25 | サンケン電気株式会社 | 演算処理方法及び演算処理装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4823301A (en) * | 1987-10-22 | 1989-04-18 | Tektronix, Inc. | Method and circuit for computing reciprocals |
US6240338B1 (en) * | 1995-08-22 | 2001-05-29 | Micron Technology, Inc. | Seed ROM for reciprocal computation |
US6223192B1 (en) * | 1997-10-23 | 2001-04-24 | Advanced Micro Devices, Inc. | Bipartite look-up table with output values having minimized absolute error |
US6260054B1 (en) * | 1998-10-29 | 2001-07-10 | Neomagic Corp. | Reciprocal generator using piece-wise-linear segments of varying width with floating-point format |
US6665693B1 (en) * | 1998-11-25 | 2003-12-16 | Texas Instruments Incorporated | Digital signal processing circuits, systems, and methods implementing approximations for a reciprocal |
US7058675B1 (en) * | 2000-09-28 | 2006-06-06 | Altera Corporation | Apparatus and method for implementing efficient arithmetic circuits in programmable logic devices |
CA2329104C (en) * | 2000-12-20 | 2005-05-24 | Sicon Video Corporation | Method and apparatus for calculating a reciprocal |
US7171435B2 (en) * | 2002-05-17 | 2007-01-30 | Texas Instruments Incorporated | Circuits, systems, and methods implementing approximations for logarithm, inverse logarithm, and reciprocal |
US8015228B2 (en) * | 2005-02-16 | 2011-09-06 | Arm Limited | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value |
US7634527B2 (en) * | 2005-11-17 | 2009-12-15 | International Business Machines Corporation | Reciprocal estimate computation methods and apparatus |
-
2006
- 2006-10-10 JP JP2006276490A patent/JP2008097194A/ja not_active Withdrawn
-
2007
- 2007-10-09 US US11/869,353 patent/US20080091754A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080091754A1 (en) | 2008-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019164595A (ja) | 演算システム | |
CN108228136B (zh) | 基于优化查找表法的对数函数计算的方法及装置 | |
US20030191788A1 (en) | Method of performing quantization within a multimedia bitstream utilizing division-free instructions | |
JP5175983B2 (ja) | 演算装置 | |
JP6770777B2 (ja) | 数学的関数を計算するためのシステム及び方法 | |
JP4955446B2 (ja) | データ処理方法 | |
JP2008097194A (ja) | 逆数算出装置、逆数算出方法、及び逆数算出プログラム | |
JP4279626B2 (ja) | 剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体 | |
JPWO2015173870A1 (ja) | 情報処理システム、情報処理方法およびプログラム | |
WO2018131059A1 (ja) | ニューラルネットワーク回路 | |
JP5840086B2 (ja) | 縮約装置、縮約方法、およびプログラム | |
KR101084581B1 (ko) | 고정 소수점 지수함수 연산 방법, 장치 및 기록매체 | |
JP2645422B2 (ja) | 浮動小数点演算処理装置 | |
WO2010058521A1 (ja) | 平方根演算装置及び方法、並びに平方根演算プログラム | |
JP2595820B2 (ja) | ガロア拡大体演算器 | |
JP4196434B2 (ja) | データ丸め方法およびデータ丸め装置 | |
JP5997480B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
WO2023199440A1 (ja) | 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム | |
JP2008158855A (ja) | 相関演算器及び相関演算方法 | |
JP2005208327A (ja) | 剰余装置、剰余方法、プログラム及び記録媒体 | |
JP6826919B2 (ja) | データ分配装置及びデータ分配比率の決定方法 | |
JP2002318792A (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JP2000081968A (ja) | 逆数演算装置 | |
JP2006155102A (ja) | 演算処理装置 | |
JP2011180966A (ja) | 積和演算器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100105 |