(57)【要約】【課題】反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を算出することができる逆数算出装置、逆数算出方法、及び逆数算出プログラムを提供する。【解決手段】データ変換部１０は、入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに入力データを変換する。値域特定部１１は、データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、中間データが属する値域を特定する。逆数算出部１２は、中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された係数と中間データとから中間データの逆数を算出する。データ再変換部１３は、第１のビットシフト操作に対応した第２のビットシフト操作により、中間データの逆数を入力データの逆数に変換する。【選択図】図１
2008097194.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換部と、
前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定部と、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出部と、
前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換部と、
を備えることを特徴とする逆数算出装置。
【請求項２】
前記逆数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項１に記載の逆数算出装置。
【請求項３】
前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項１に記載の逆数算出装置。
【請求項４】
前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする請求項１に記載の逆数算出装置。
【請求項５】
入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、
前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、
前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップと、
を実行することを特徴とする逆数算出方法。
【請求項６】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項５に記載の逆数算出方法。
【請求項７】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項５に記載の逆数算出方法。
【請求項８】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする請求項５に記載の逆数算出方法。
【請求項９】
入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、
前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、
前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、
前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップと、
をコンピュータに実行させるための逆数算出プログラム。
【請求項１０】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする請求項９に記載の逆数算出プログラム。
【請求項１１】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする請求項９に記載の逆数算出プログラム。
【請求項１２】
前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする請求項９に記載の逆数算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データの逆数を算出する逆数算出装置及び逆数算出方法に関する。また、本発明は、入力データの逆数を算出する処理をコンピュータに実行させるための逆数算出プログラムにも関する。
【背景技術】
【０００２】
組み込みシステムにおいて、入力データ（ｘ）の逆数（ｘ−１）を求める方法として、繰り返し演算を用いた方法よりも高速に逆数を得る次の方法が一般的に知られている。第１の方法は、入力データに対する逆数の値をメモリに予め格納しておき、入力データをアドレスとしてメモリを参照し、メモリに格納された逆数のデータを出力するという方法である。第２の方法は、反比例曲線（ｘ−１）を近似する直線の１次式の傾きデータと切片データをメモリに予め格納しておき、入力データに応じた傾きデータと切片データをメモリから取り出すことにより反比例曲線の近似式を導出し、その近似式を用いて入力データに対する逆数を算出するという方法である。しかし、これらの方法には、入力データｘや、メモリに格納されるデータのデータ幅が大きくなると、メモリが大規模化するという問題がある。
【０００３】
この問題に対して、特許文献１では、入力データｘの逆数を算出する以下の方法が提案されている。以下の式に示すように、入力データｘをビットシフトにより特定のデータ範囲のデータｘ’に変換し、データｘ’に対して、上記の第２の方法を用いてｘ’の逆数ｙ’を算出し、ｙ’に対してビットシフトを行うデータ変換により、ｘの逆数ｙを得ることができる。
【０００４】
【数１】
2008097194.tif 000003
【０００５】
この方法によれば、ｘのデータ幅が大きくなってもｘ’のデータ範囲には影響がないため、反比例曲線を近似する１次式の傾きデータ及び切片データは、ｘ’のデータ範囲についてのみメモリに格納しておくだけで構わない。したがって、特許文献１に記載された逆数演算装置では、大規模のメモリを必要とせずに逆数の演算を高速に行うことができる。
【特許文献１】特開２０００−８１９６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載された逆数演算装置では、反比例曲線を近似する１次式の傾きデータ及び切片データをメモリに格納しておく必要がある。
【０００７】
本発明は、上述した課題に鑑みてなされたものであって、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を算出することができる逆数算出装置、逆数算出方法、及び逆数算出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するためになされたもので、入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換部と、前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定部と、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出部と、前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換部とを備えることを特徴とする逆数算出装置である。
【０００９】
また、本発明の逆数算出装置において、前記逆数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
【００１０】
また、本発明の逆数算出装置において、前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
【００１１】
また、本発明の逆数算出装置において、前記係数算出部は、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする。
【００１２】
また、本発明は、入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップとを実行することを特徴とする逆数算出方法である。
【００１３】
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
【００１４】
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
【００１５】
また、本発明の逆数算出方法において、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする。
【００１６】
また、本発明は、入力データに対する第１のビットシフト操作により、所定のデータ範囲に収まる中間データに前記入力データを変換するデータ変換ステップと、前記データ範囲に設定された、２の階乗となる値を境界値とする値域の中から、前記中間データが属する値域を特定する値域特定ステップと、前記中間データが属する値域の一方の前記境界値及び他方の前記境界値を変数として、前記中間データを変数とする反比例曲線の一次近似式の係数を算出し、算出された前記係数と前記中間データとから前記中間データの逆数を算出する逆数算出ステップと、前記第１のビットシフト操作に対応した第２のビットシフト操作により、前記中間データの逆数を前記入力データの逆数に変換するデータ再変換ステップとをコンピュータに実行させるための逆数算出プログラムである。
【００１７】
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
【００１８】
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの前記係数を算出することを特徴とする。
【００１９】
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの前記係数を算出することを特徴とする。
【００２０】
また、本発明の逆数算出プログラムにおいて、前記逆数算出ステップでは、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点を通る直線であるとしたときの第１の係数と、前記一次近似式が、前記一方の前記境界値と前記他方の前記境界値に各々対応する前記反比例曲線上の各点における接線を連結してなるときの第２の係数とを平均化して前記係数を算出することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、反比例曲線を近似する一次近似式の係数が、２の階乗で示される、中間データの属する値域の一方の境界値と他方の境界値を変数として算出されるので、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照し、本発明の実施形態を説明する。
【００２３】
（第1の実施形態）
まず、本発明の第１の実施形態を説明する。図１は、本実施形態による逆数算出装置の構成を示している。データ変換部１０は、入力データｘに対するビットシフト操作により、所定のデータ範囲に収まる中間データ（後述するｘ’またはｘ’’）に入力データｘを変換する。データ変換部１０によるデータ変換処理は、特許文献１に記載された、入力データｘをビットシフトにより特定のデータ範囲のデータｘ’に変換する処理に対応している。
【００２４】
値域特定部１１は、所定のデータ範囲に含まれ、２の階乗となる値を境界値とする値域の中から、中間データが属する値域を特定する。本実施形態における所定のデータ範囲は、２０と２ｎ（ｎは１以上の整数）を境界値とする範囲であり、このデータ範囲を、２の階乗となる値で区切ってできる部分範囲が、本実施形態における値域である。データ範囲が複数の値域に区分される場合もあるし、データ範囲の設定の仕方によっては、データ範囲と値域が一致する場合もある。
【００２５】
逆数算出部１２は、中間データが属する値域内の反比例曲線（逆数を表す曲線）を近似する近似式を、その値域の境界値に対する加算、減算、及びビットシフト操作の少なくともいずれかにより導出し、中間データ及び近似式から中間データの逆数を算出する。後述するが、本実施形態では、中間データが属する値域の境界値を通る直線の式を反比例曲線の近似式とすることにより、加算器（減算器）とビットシフトのみで近似式を導出することができる。
【００２６】
データ再変換部１３は、データ変換部１０が行ったビットシフト操作に対応したビットシフト操作により、逆数算出部１２で求められた中間データの逆数を入力データｘの逆数に変換する。
【００２７】
次に、本実施形態による逆数算出方法を説明する。以下では、逆数算出装置に入力されるデータが非ゼロであることを前提として説明する。また、図２は逆数算出装置の動作の手順を示しており、適宜、図２を参照する。
【００２８】
データ変換部１０は、入力データｘに対するビットシフト操作により、２の階乗となる値を境界値とするデータ範囲に収まる中間データｘ’またはｘ’’に入力データｘを変換する（図２のステップＳ１００）。中間データｘ’は本実施形態の概念の説明のため便宜的に用いるものであり、中間データｘ’’は、実際に逆数算出装置の内部で扱われるデータ形式に対応したものである。
【００２９】
２０≦ｘ’＜２ｎのデータ範囲に含まれる中間データｘ’に入力データｘを変換する場合、まず、ＭＳＢ（Most Significant Bit）側からｎビットずつ、非ゼロかどうか判定する。例えば、入力データｘを１６ビットの整数である０ｘ０５３Ｃとし、ｎを４とすると、入力データｘを構成するビットに対して、４ビットずつ、非ゼロかどうか判定する。続いて、入力データｘのｎビットの組み合わせのうち、非ゼロを検出した最初のｎビットの組み合わせを（ｓ＋１）番目（ｓ＝０，１，２，３・・・）のｎビットの組み合わせとする。例えば、入力データｘを０ｘ０５３Ｃとし、ｎを４とした例の場合、２番目の４ビットの組み合わせが５で非ゼロであるから、ｓは１となる。
【００３０】
続いて、非ゼロであったｎビットの組み合わせが中間データｘ’の整数部になるように、（ｍ−ｎ（１＋ｓ））ビット分、右にビットシフト操作を行う。このビットシフト操作による有効データの消失を防ぐために、ビットシフト操作の前に予めビット拡張を行う必要がある。例えば、入力データｘがｍビットの整数である場合は、ｍビットの整数部とｍビットの小数部で構成される２ｍビットのデータに拡張する。したがって、前述した例では、中間データｘ’は以下のように導出される。
ｘ’＝０ｘ０００５３ｃ００（整数部１６ビット、小数部１６ビット）
【００３１】
続いて、この中間データｘ’に対して、後段における処理のデータフォーマットに合わせるためのビットシフト操作を行い、中間データｘ’’として値域特定部１１及び逆数算出部１２に出力する。例えば、整数部がｎビット、小数部が（ｍ−ｎ）ビットで構成されるｍビットの中間データｘ’’のデータフォーマットに合わせる場合は、（ｍ−ｎ）ビット分、中間データｘ’を左にビットシフトし、ＭＳＢ側のｍビットを中間データｘ’’として後段へ出力する。したがって、前述した例では、ｍ＝１６、ｎ＝４なので、中間データｘ’を１２ビット分、左にビットシフトし、ＭＳＢ側１６ビットを中間データｘ’’として後段へ出力する（ｘ’’＝０ｘ５３ｃ０）。
【００３２】
上記により、要素ｘ’と中間データｘ’’の関係は以下のように表される。
ｘ’’＝２（ｍ−ｎ）ｘ’
また、入力データｘと中間データｘ’’の関係は以下のように表される。
ｘ’’＝２ｓｎｘ
【００３３】
なお、これらのビットシフト操作及びビット拡張を簡略化するために、上記の（ｍ−ｎ（１＋ｓ））ビット分の右ビットシフト操作と、（ｍ−ｎ）ビット分の左ビットシフト操作の２回のビットシフト操作を１回にまとめたｓｎビット分の左シフト操作を行うことが望ましい。また、データ再変換部１３によるビットシフト操作のため、データ変換部１０で何ビットシフトされたのかを示す第１のビットシフト情報として、ｓがデータ再変換部１３へ出力される。例えば、入力データｘが０ｘ０５３Ｃの場合、中間データｘ’’は０ｘ５３Ｃ０、第１のビットシフト情報ｓは１となる。
【００３４】
値域特定部１１は、中間データｘ’が属する値域を特定する（図２のステップＳ１１０）。ｘ’が含まれるデータ範囲２０≦ｘ’＜２ｎを、２の階乗となる値毎に区切ったものが値域であり、ＭＳＢ側から順に中間データｘ’’の各ビットが１かどうかを判定することにより、ｘ’が属する値域を特定することができる。図３（ａ）は中間データｘ’’の各ビット（最上位ビットをｍ−１番目、最下位ビットを０番目としている）の値と、中間データｘ’が属する値域との関係を示している。
【００３５】
例えば、中間データｘ’が含まれるデータ範囲２０≦ｘ’＜２４を、２の階乗となる値毎に値域に区切るとすると、２０≦ｘ’＜２１となる値域０、２１≦ｘ’＜２２となる値域１、２２≦ｘ’＜２３となる値域２、２３≦ｘ’＜２４となる値域３の４つの値域にデータ範囲が区分される。中間データｘ’’を０ｘ５３Ｃ０とすると、図３（ｂ）によれば、これらの値域０〜３のうち、中間データｘ’は値域２に属していることが特定できる。上記のようにして特定された値域を示す値域情報が逆数算出部１２へ出力される。
【００３６】
逆数算出部１２は、中間データｘ’が属する値域において、ｘ’の逆数を表す反比例曲線ｘ−１を近似する１次式を加算または減算とビットシフト操作とにより導出し、ｘ’の逆数を算出する（図２のステップＳ１２０）。以下、反比例曲線を近似する１次式の導出方法を説明する。中間データｘ’と、ｘ’の逆数ｙ’との関係は以下の式で表される。
ｙ’＝ｘ’−１
【００３７】
このとき、ｙ’の曲線上の２点である点（ｘａ，ｘａ−１）と点（ｘｂ，ｘｂ−１）を通る直線の方程式は以下の式で表される。
ｙ０’＝｛−ｘ’＋（ｘａ＋ｘｂ）｝（ｘａｘｂ）−１
【００３８】
ｘａ及びｘｂが２の階乗となる値である場合、ｙ０’は加算器（減算器）とビットシフトレジスタのみで導出される。すなわち、図４に示すようにｘａ＝２ｎ、ｘｂ＝２ｎ＋１（ｎ＝０，１，２，３，・・・）ならば、ｙ０’は以下の式で表される。
ｙ０’＝（−ｘ’＋３×２ｎ）（２２ｎ＋１）−１
【００３９】
一方、値域特定部１１は、逆数算出部１２により、ｙ０’が加算器（減算器）とビットシフトレジスタのみで導出できるように値域を分割する必要がある。逆数算出部１２がｙ０’を導出する場合、図４に示すように、値域特定部１１では２ｎ毎に値域を区切る必要がある。以上に説明したように、２の階乗となる値で区分された値域のうち、どの値域にｘ’が属しているのかを特定できれば、ｙ’を近似する１次式（例えば上記のｙ０’）は加算器（減算器）とビットシフトレジスタのみで導出できる。
【００４０】
例えば、２２≦ｘ’＜２３の場合、ｘａ＝２２、ｘｂ＝２３となるので、ｙ０’は以下の式で表される。なお、以下の式において、＞＞は右ビットシフト操作を表しており、以下の式は、（−ｘ’＋１２）の演算結果に対して５ビット分の右ビットシフト操作を行うとｙ０’が得られることを表している。
ｙ０’＝｛−ｘ’＋（ｘａ＋ｘｂ）｝（ｘａｘｂ）−１＝｛−ｘ’＋（２２＋２３）｝（２２２３）−１＝（−ｘ’＋１２）＞＞５
【００４１】
逆数算出部１２は、値域特定部１１から入力される値域情報に基づいて、上記のような反比例曲線の近似式を導出し、その近似式と、データ変換部１０から入力される中間データｘ’’とから中間データｘ’’の逆数ｙ’’を算出し、その算出結果を仮逆数データｙ’’’と第２のビットシフト情報ｔとに分離して、データ再変換部１３へ出力する。なお、仮逆数データｙ’’’の小数部のビット幅は中間データｘ’’のビット幅に合わせることとする。
【００４２】
例えば、中間データｘ’’が０ｘ５３Ｃ０、中間データｘ’のデータ範囲が２０≦ｘ’＜２４の場合、ｘ’は値域２（図３（ｂ）参照）に属している。この値域２における反比例曲線ｙ’の近似式ｙ０’は以下のように導出される。
ｙ０’＝｛−ｘ’＋（２２＋２３）｝（２２２３）−１＝（１２−ｘ’）＞＞５
【００４３】
この式にｘ’’を代入すれば、中間データｘ’’の逆数ｙ’’が算出される。
ｙ’’＝（０ＣＨＥＸ−ｘ’）＞＞５＝（０ＣＨＥＸ２１２−ｘ’ ２１２）２−１２２−５＝（０Ｃ０００ＨＥＸ−０５３Ｃ０ＨＥＸ）２−１７＝０６Ｃ４０ＨＥＸ＞＞１７
なお、上式において、以下を考慮している。
ｘ’’＝２（ｍ−ｎ）ｘ’＝２（１６−４）ｘ’＝２１２ｘ’
【００４４】
ここで、仮逆数データｙ’’’の小数部のビット幅を中間データｘ’’のビット幅に合わせると、中間データｘ’’の逆数ｙ’’は以下の式で表される。
ｙ’’＝０６Ｃ４０ＨＥＸ＞＞５
このｙ’’から、仮逆数データｙ’’’（＝０ｘ０６Ｃ４０）と第２のビットシフト情報ｔ（＝５）がデータ再変換部１３へ出力される。
【００４５】
データ再変換部１３は、データ変換部１０より入力される第１のビットシフト情報ｓと、逆数算出部１２より入力される第２のビットシフト情報ｔとに基づいて、逆数算出部１２より入力される仮逆数データｙ’’’に対してビットシフト操作を行うことにより、仮逆数データｙ’’’を入力データｘの逆数ｘ−１に変換する（図２のステップＳ１３０）。以下の式に示すように、本実施形態による逆数算出方法では、データ変換部１０がｘに対するビットシフト操作（ｘ＞＞ｋ）を行ったので、データ再変換部１３が（ｘ＞＞ｋ）−１に対してビットシフト操作を行う必要がある。すなわち、データ再変換部１３は、仮逆数データｙ’’’に対して、（ｍ−ｎ（１＋ｓ））ビット分、右にビットシフト操作を行う（入力データｘのビット幅がｍ、中間データｘ’のデータ範囲が２０≦ｘ’＜２ｎの場合）。
【００４６】
【数２】
2008097194.tif 000004
【００４７】
したがって、データ再変換部１３は、逆数算出部１２から入力される仮逆数データｙ’’’に対して、データ変換部１０が行ったビットシフト操作に合わせたビットシフト操作を行い、さらに、逆数算出部１２において未実施であるビットシフト操作を行う。そして、データ再変換部１３は、仮逆数データｙ’’’に対してビットシフト操作を行った結果を、入力データｘの逆数ｙとして出力する。なお、ｙのビット幅は、必要に応じた任意のビット幅に設定されているものとする。
【００４８】
例えば、第１のビットシフト情報ｓが１、仮逆数データｙ’’’が０ｘ０６Ｃ４０、第２のビットシフト情報ｔが５の場合、逆数ｙは以下のように算出される。なお、以下の式でビットシフト量を表す８は、ｘとｘ’の関係から求められるビットシフト量であり、５は逆数算出部１２で未実施のビットシフト操作のビットシフト量であり、１２はｘ’とｘ’’の関係から求められるビットシフト量である。
ｙ=０６Ｃ４０ＨＥＸ＞＞（８＋５＋１２）＝０００００００１１０１１０００１００００００ＢＩＮ（整数部１ビット、小数部２１ビット）
【００４９】
上述したように、本実施形態によれば、入力データｘの逆数ｘ−１を示す反比例曲線を近似する近似式が、中間データの属する値域の境界値に対する加算、減算、及びビットシフト操作の少なくともいずれかにより導出されるので、反比例曲線の近似式の傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができる。
【００５０】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。第１の実施形態では、逆数算出部１２がｙ’＝ｘ’−１を近似する１次式を導出する際に、ｙ’の曲線上の２点を通る直線ｙ０’を、加算、減算、及びビットシフト操作の少なくともいずれかにより導出していた。本実施形態では、ｙ’を近似する１次式として、ｙ０’とは異なる近似式ｙ１’を導出し、ｙ０’とｙ１’を組み合わせて用いることにより、第１の実施形態よりも精度の高い逆数の値を算出することを可能としたものである。
【００５１】
ｙ’＝ｘ’−１の曲線とｙ’の曲線上の点（ｘｃ，ｘｃ−１）で接する直線の１次式ｙ１’は以下の式で表される。
ｙ１’＝（−ｘ’＋２ｘｃ）（ｘｃ）−２
ここで、ｘｃが、２の階乗となる値である場合、上記の式の導出はｙ０’と同様に加算器（減算器）とビットシフトレジスタのみで表現される。例えば、ｘｃ＝２３の場合、ｙ１’は以下の式で表される。
ｙ１’＝（−ｘ’＋２ｘｃ）（ｘｃ）−２＝（−ｘ’＋２×２２）（２２）−２＝（−ｘ’＋２３）＞＞４
【００５２】
また、図４に示すように、ｙ０’は常にｙ’以上の値を示し、図５に示すように、ｙ１’は常にｙ’以下の値を示す。そのため、ｙ０’とｙ１’を平均化した直線ｙ２’（図６参照）は、ｙ’の曲線をｙ０’とｙ１’よりも高い精度で近似する直線となる。このｙ２’は以下の式で表される。
ｙ２’＝（ｙ０’＋ｙ１’）２−１
【００５３】
２ｎ≦ｘ’＜（２ｎ＋２３−１）の領域では、ｙ２’は以下の式で表される。
ｙ２’＝｛（−ｘ’＋３×２ｎ）（２２ｎ＋１）−１＋（−ｘ’＋２ｎ＋１）（２ｎ）−２｝２−１＝（−３ｘ’＋７×２ｎ）（２ｎ＋１）−２
【００５４】
一方、（２ｎ＋２３−１）≦ｘ’＜２ｎ＋１の領域では、ｙ２’は以下の式で表される。
ｙ２’＝｛（−ｘ’＋３×２ｎ）（２２ｎ＋１）−１＋（−ｘ’＋２ｎ＋２）（２ｎ＋１）−２｝２−１＝（−３ｘ’＋５×２ｎ＋１）（２ｎ＋１）−２
【００５５】
本実施形態による逆数算出部１２は、これらのｙ２’を用いてｘ’の逆数を算出する。また、本実施形態では、逆数算出部１２がｙ２’を用いてｙ’の近似式を導出するように変更することに伴い、値域特定部１１がｘ’の値域を特定する方法も変更される。第１の実施形態ではｙ０’を使用しているため、図４のように値域は、ｙ０’の変化点である２ｎ毎に区分されていたが、本実施形態ではｙ２’を使用するため、図６のように値域は、ｙ２’の変化点である２ｎ及び（２ｎ＋２３−１）毎に区分される。
【００５６】
上述したように、本実施形態によれば、第１の実施形態と同様に、反比例曲線の近似式を導出するのに必要な傾きデータや切片データを格納するメモリを用いることなく入力データの逆数を高速に算出することができる。また、反比例曲線を近似する２つの近似式を平均化した近似式から入力データの逆数を算出することによって、第１の実施形態よりも精度の高い算出結果を得ることができる。
【００５７】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態による逆数算出装置の動作及び機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させてもよい。
【００５８】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００５９】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１の実施形態による逆数算出装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態による逆数算出装置の動作の手順を示すフローチャートである。
【図３】本発明の第１の実施形態における中間データと値域の関係を示す参考図である。
【図４】本発明の第１の実施形態における反比例曲線の近似式を示すグラフである。
【図５】本発明の第２の実施形態における反比例曲線の近似式を示すグラフである。
【図６】本発明の第２の実施形態における反比例曲線の近似式を示すグラフである。
【符号の説明】
【００６１】
１０・・・データ変換部、１１・・・値域特定部、１２・・・逆数算出部、１３・・・データ再変換部
【図１】
2008097194.tif 000005
【図２】
2008097194.tif 000006
【図３】
2008097194.tif 000007
【図４】
2008097194.tif 000008
【図５】
2008097194.tif 000009
【図６】
2008097194.tif 000010