(57)【要約】【課題】より簡単かつ精度よくべき乗の演算を行う。【解決手段】仮数／指数分離部１０１は、入力値Ｘ＝（１＋Ｘ1／２23）×（２＾Ｘ2）を仮数Ｘ1と指数Ｘ2とに分離する。補間処理部１０４は、仮数Ｘ1を用い、仮数の対数テーブル保持部１０２を参照して、補間処理によりべき乗値（log2（１+Ｘ1／２23））を求める。対数演算部１０５は指数Ｘ2と、補間処理部１０４からのべき乗値から対数Ｚ＝log2ＸY＝Ｙ（Ｘ2＋log2（１+Ｘ1／２23））を求め、整数／小数分離部１０６は、対数Ｚを整数Ｚintと小数Ｚamariに分離する。補間処理部１０４は、小数Ｚamariを用い、小数のべき乗テーブル保持部１０３を参照して、補間処理によりべき乗値（２＾Ｚamari）を求め、べき乗演算部１０７は、ＸY＝２＾Ｚ＝（２＾Ｚamari）×（２＾Ｚint）を求めて入力値ＸのＹ乗を得る。本発明は、量子化装置に適用することができる。【選択図】図５
2010033318.tif 000002
【特許請求の範囲】
【請求項１】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であって、
浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ1と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ2とに、前記入力値Ｘを分離する仮数／指数分離手段と、
前記仮数Ｘ1に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を記録する第１の記録手段と、
前記仮数Ｘ1を用いて前記第１の記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、
前記変数Ｙおよび前記指数Ｘ2と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段と
を備える演算処理装置。
【請求項２】
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離する整数／小数分離手段と、
前記小数Ｚamariに対して定まる、前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を記録する第２の記録手段と
をさらに備え、
前記べき乗演算手段は、前記小数Ｚamariを用いて前記第２の記録手段から取得した前記定数Ｍの前記べき乗値と、前記整数Ｚintとから前記演算値Ｐを求める
請求項１に記載の演算処理装置。
【請求項３】
前記補間手段は、前記小数Ｚamariを用いて前記第２の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求め、
前記べき乗演算手段は、前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚintとから前記演算値Ｐを求める
請求項２に記載の演算処理装置。
【請求項４】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であり、
浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ1と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ2とに、前記入力値Ｘを分離する仮数／指数分離手段と、
前記仮数Ｘ1に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を記録する記録手段と、
前記仮数Ｘ1を用いて前記記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、
前記変数Ｙおよび前記指数Ｘ2と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段と
を備える演算処理装置の演算処理方法であって、
前記仮数／指数分離手段が前記入力値Ｘを前記仮数Ｘ1と前記指数Ｘ2とに分離し、
前記補間手段が前記複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、
前記対数演算手段が前記対数値Ｚを求め、
前記べき乗演算手段が、前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求める
ステップを含む演算処理方法。
【請求項５】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置に、
浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ1と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ2とに、前記入力値Ｘを分離し、
前記仮数Ｘ1に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を複数用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、
前記変数Ｙおよび前記指数Ｘ2と、前記補間処理により求められた前記仮数の前記対数値とを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、
前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求める
ステップを含む処理を実行させるプログラム。
【請求項６】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であって、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離する整数／小数分離手段と、
前記小数Ｚamariに対して定まる、前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を記録する第１の記録手段と、
前記小数Ｚamariを用いて前記第１の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求める補間手段と、
前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚintとを用いて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段と
を備える演算処理装置。
【請求項７】
浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ1と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ2とに、前記入力値Ｘを分離する仮数／指数分離手段をさらに備え、
前記対数演算手段は、前記仮数Ｘ1、前記指数Ｘ2、および前記変数Ｙを用いて、前記演算値Ｐの前記対数値Ｚを求める
請求項６に記載の演算処理装置。
【請求項８】
前記仮数Ｘ1に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を記録する第２の記録手段をさらに備え、
前記対数演算手段は、前記仮数Ｘ1を用いて前記第２の記録手段から取得した前記仮数の前記対数値と、前記変数Ｙおよび前記指数Ｘ2とを用いて、前記演算値Ｐの前記対数値Ｚを求める
請求項７に記載の演算処理装置。
【請求項９】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であり、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離する整数／小数分離手段と、
前記小数Ｚamariに対して定まる、前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を記録する記録手段と、
前記小数Ｚamariを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求める補間手段と、
前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚintとを用いて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段と
を備える演算処理装置の演算処理方法であって、
前記対数演算手段が前記入力値Ｘおよび前記変数Ｙを用いて前記対数値Ｚを求め、
前記整数／小数分離手段が、前記対数値Ｚを前記整数Ｚintと前記小数Ｚamariとに分離し、
前記補間手段が、前記複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求め、
前記べき乗演算手段が前記定数Ｍの前記べき乗値と前記整数Ｚintとを用いて、前記対数値Ｚをべき指数とする前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求める
ステップを含む演算処理方法。
【請求項１０】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置に、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離し、
前記小数Ｚamariに対して定まる、前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を複数用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求め、
前記補間処理により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚintとを用いて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求める
ステップを含む処理を実行させるプログラム。
【請求項１１】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置であって、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離する整数／小数分離手段と、
前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Ｐの前記整数を求めるべき乗整数変換手段と
を備える演算処理装置。
【請求項１２】
前記小数Ｚamariに対して定まる、前記小数Ｚamariをべき指数とする、前記定数Ｍの前記べき乗値を記録する記録手段をさらに備え、
前記べき乗整数変換手段は、前記小数Ｚamariを用いて前記記録手段から取得した前記定数Ｍの前記べき乗値と、前記整数Ｚintとから前記演算値Ｐの前記整数を求める
請求項１１に記載の演算処理装置。
【請求項１３】
前記小数Ｚamariを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求める補間手段をさらに備え、
前記べき乗整数変換手段は、前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚintとから前記演算値Ｐの前記整数を求める
請求項１２に記載の演算処理装置。
【請求項１４】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置であり、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離する整数／小数分離手段と、
前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Ｐの前記整数を求めるべき乗整数変換手段と
を備える演算処理装置の演算処理方法であって、
前記対数演算手段が、前記入力値Ｘおよび前記変数Ｙを用いて前記対数値Ｚを求め、
前記整数／小数分離手段が、前記対数値Ｚを前記整数Ｚintと前記小数Ｚamariとに分離し、
前記べき乗整数変換手段が前記右シフト演算を行って前記演算値Ｐの前記整数を求める
ステップを含む演算処理方法。
【請求項１５】
変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置に、
前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、
前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚintと、前記対数値Ｚの小数部分である小数Ｚamariとに分離し、
前記小数Ｚamariをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Ｐの前記整数を求める
ステップを含む処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算処理装置および方法、並びにプログラムに関し、特に、より精度よくべき乗の演算を行うことができるようにした演算処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
オーディオ信号を符号化する方法として、MPEG（Moving Picture Expert Group）オーディオ規格が知られている。MPEG オーディオ規格には複数の符号化方式があるが、ISO/IEC（International Organization for Standardization/International Electrotechnical Commission） 13818-7にてMPEG-2オーディオ規格AAC（Advanced Audio Coding）という符号化方式が標準化されている。
【０００３】
また、さらに拡張されたISO/IEC 14496-3にて、MPEG-4オーディオ規格AACという符号化方式が標準化されている。なお、以下では、MPEG-2オーディオ規格AAC、およびMPEG-4オーディオ規格AACを合わせてAAC規格と呼ぶこととする。
【０００４】
図１に、AAC規格に準拠した従来の符号化装置の構成を示す。
【０００５】
符号化装置は、聴覚心理モデル保持部１１、ゲイン制御部１２、スペクトル処理部１３、量子化／符号化部１４、およびマルチプレクサ部１５から構成される。
【０００６】
符号化装置に入力されたオーディオ信号は、聴覚心理モデル保持部１１およびゲイン制御部１２に供給される。聴覚心理モデル保持部１１は、供給されたオーディオ信号を時間軸に沿ってブロック化し、ブロック化されたオーディオ信号を分割帯域ごとに人間の聴覚特性に従って分析して、各分割帯域の許容誤差強度を算出する。
【０００７】
ゲイン制御部１２は、SSR（Scalable Sampling Rate）プロファイルのみに使用され、供給されたオーディオ信号を４つの等間隔の周波数帯域に分割し、最低域以外の帯域について利得調整を行う。
【０００８】
スペクトル処理部１３は、ゲイン制御部１２において利得調整されたオーディオ信号を周波数領域のスペクトルデータに変換する。また、スペクトル処理部１３は、聴覚心理モデル保持部１１から供給された許容誤差強度に基づいて、スペクトル処理部１３の各部を制御し、スペクトルデータに所定の処理を施す。
【０００９】
スペクトル処理部１３は、MDCT（Modified Discrete Cosine Transform）部２１、TNS（Temporal Noise Shaping）処理部２２、インテンシティ／カップリング部２３、予測部２４、およびM/S（Middle/Side Stereo）ステレオ部２５を備えている。
【００１０】
MDCT部２１は、ゲイン制御部１２から供給された時間領域のオーディオ信号を周波数領域のスペクトルデータに変換する。TNS処理部２２は、MDCT部２１によりスペクトルデータとされたオーディオ信号を加工して量子化雑音の時間的な形状を調整する。インテンシティ／カップリング部２３は、TNS処理部２２により加工されたオーディオ信号に対してステレオ相関符号化処理を施す。
【００１１】
予測部２４は、インテンシティ／カップリング部２３においてステレオ相関符号化されたオーディオ信号と、量子化部２７から供給されるオーディオ信号とを用いて予測符号化を行い、その結果得られたオーディオ信号をM/Sステレオ部２５に供給する。M/Sステレオ部２５は、予測部２４からのオーディオ信号をステレオ相関符号化し、量子化／符号化部１４に供給する。
【００１２】
量子化／符号化部１４は、M/Sステレオ部２５からのオーディオ信号を符号列に変換し、マルチプレクサ部１５に供給する。量子化／符号化部１４は、正規化係数部２６、量子化部２７、およびハフマン符号化部２８を備えている。
【００１３】
正規化係数部２６は、M/Sステレオ部２５からのオーディオ信号を量子化部２７に供給するとともに、そのオーディオ信号に基づいて、オーディオ信号の量子化に用いる正規化係数を算出し、量子化部２７およびハフマン符号化部２８に供給する。例えば、聴覚心理モデル保持部１１からの許容誤差強度が用いられて、分割帯域ごとの正規化係数として、量子化ステップパラメータが算出される。
【００１４】
量子化部２７は、正規化係数部２６からの正規化係数を用いて、正規化係数部２６から供給されたオーディオ信号を非線形量子化し、その結果得られたオーディオ信号（量子化値）をハフマン符号化部２８および予測部２４に供給する。ハフマン符号化部２８は、予め定められたハフマン符号表に基づいて、正規化係数部２６からの正規化係数と、量子化部２７からの量子化値とに、それぞれハフマン符号を与えることで正規化係数および量子化値をハフマン符号化し、マルチプレクサ部１５に供給する。
【００１５】
マルチプレクサ部１５は、ゲイン制御部１２およびMDCT部２１乃至正規化係数部２６から供給された、オーディオ信号の符号化の過程で生成された各種の情報と、ハフマン符号化部２８からのハフマン符号とを多重化して、符号化されたオーディオ信号のビットストリームを生成して出力する。
【００１６】
また、量子化部２７におけるオーディオ信号の非線形量子化は、正規化係数部２６からのオーディオ信号の値を入力値ＡＸとし、正規化係数部２６からの正規化係数としての量子化ステップパラメータをｑとすると、次式（１）を計算することにより行われる。すなわち、式（１）が計算されて、オーディオ信号の入力値ＡＸから量子化値ＲＺが求められる。
【００１７】
【数１】
2010033318.tif 000003
【００１８】
なお、式（１）において、（ｉｎｔ）（Ａ）は、浮動小数点数Ａの小数部分を切り捨てて整数部分を得る演算を示し、以下の説明において同様であるものとする。
【００１９】
AAC規格の符号化においては、量子化値ＲＺは１４ビットと規定されているため、量子化前の値ＡＹ＝ＡＸ／２q/4は、逆算すると、０≦ＡＹ＜8191.5943(4/3)の範囲の値とされる。したがって、量子化値ＲＺは、０≦ＲＺ≦8191の範囲の整数となり、量子化値ＲＺがこの範囲内の値となるように、量子化ステップパラメータｑが定められる。
【００２０】
また、オーディオ信号の量子化時において、量子化部２７は、全ての入力値ＡＸに対する量子化値ＲＺを逆量子化し、量子化誤差が所定の範囲内に収まっているか否かを確認する。例えば、次式（２）の演算により逆量子化が行われ、逆量子化値Ｗが得られる。
【００２１】
【数２】
2010033318.tif 000004
【００２２】
さらに、量子化誤差は、逆量子化値Ｗと入力値ＡＸとの差分を求めることで得られ、この差分が所定の範囲内の値となっているか否かの判定が行われる。
【００２３】
ところで、従来、上述した式（１）における４分の３乗や、式（２）における３分の４乗などのべき乗の演算結果を効率よく得る方法が提案されている（例えば、特許文献１参照）。特許文献１には、浮動小数点数としての入力値Ｘを指数部と仮数部とに分離し、１度、２を底（基数）として、入力値ＸのＹ乗である演算値Ｐの対数Ｚを求めてから、対数Ｚの値を２のべき乗により、求めようとする演算値Ｐに戻すことで、入力値Ｘのべき乗の演算結果を得ることが開示されている。
【００２４】
具体的には、特許文献１では、以下に説明する手順でべき乗の演算が行われる。なお、特許文献１では、底がネイピア数である場合と、べき指数が２の倍数である場合には、特別な処理が行われるが、以下では、それらの場合を除く、一般的な処理について説明する。
【００２５】
まず、入力値ＸのＹ乗の演算結果として得られる演算値をＰとすると、次式（３）の関係が成立する。
【００２６】
【数３】
2010033318.tif 000005
【００２７】
この入力値Ｘを浮動小数点数の仮数部の仮数Ｘ1と、指数部の指数Ｘ2とに分離して、入力値ＸのＹ乗を演算することを考える。
【００２８】
ここで、浮動小数点数について説明する。例えば、IEEE（Institute for Electrical and Electronics Engineering）754に基づく単精度浮動小数点数を示す浮動小数点型のデータは、図２に示すように、３２ビットのビット列で構成される。
【００２９】
すなわち、浮動小数点数のデータの最下位ビットである０ビット目から２２ビット目までの２３ビットの部分は、浮動小数点数の仮数を表す仮数部である仮数Ｘ1とされ、２３ビット目から３０ビット目までの８ビットの部分は、浮動小数点数の指数を表す指数部である指数Ｘ2とされ、最上位の３１ビット目は符号ビットＳとされる。
【００３０】
符号ビットＳは、仮数部が正である場合には「０」とされ、仮数部が負の場合には「１」とされる。また、指数部のビット構成は「指数＋バイアス」となる。したがって、指数部の指数Ｘ2は、実際の指数値にバイアスが加算された値である。IEEE754の規格では、単精度のバイアスとして１２７が用いられているため、指数値が「０」であるときは、指数Ｘ2の値は「１２７」（＝０＋１２７）となり、指数部は１２７のビット構成（０ｘ７ｆ）となる（「０ｘ」は「７ｆ」が１６進数であることを示す）。
【００３１】
なお、指数部が０と２５５の場合は、特別な意味があるが、その説明は省略する。
【００３２】
このように浮動小数点型のデータにより表される入力値Ｘを数値表現形式で表すと、入力値Ｘは次式（４）に示すように表される。
【００３３】
【数４】
2010033318.tif 000006
【００３４】
なお、式（４）において、「．Ｘ1」は、仮数Ｘ1の上位ビットの前に小数点が位置するものとして仮数部を小数点表現していることを示す。また、式（４）における「Ｂ」はバイアス成分を示しており、「Ｓ」は符号ビットを示している。
【００３５】
特許文献１では、以上のような浮動小数点数である入力値Ｘが仮数Ｘ1と指数Ｘ2とに分離されてべき乗の演算が行われる。
【００３６】
すなわち、入力値Ｘの仮数部の仮数をＸ1とし、指数部の指数をＸ2とすると、入力値Ｘは、次式（５）で表される。
【００３７】
【数５】
2010033318.tif 000007
【００３８】
したがって、上述した式（３）の両辺に対して底２の対数をとると、式（６）が成立する。
【００３９】
【数６】
2010033318.tif 000008
【００４０】
ここで、対数Ｚの整数部分を整数Ｚintとし、対数Ｚの小数部分を小数Ｚamariとすると、演算値Ｐは、次式（７）により表される。
【００４１】
【数７】
2010033318.tif 000009
【００４２】
この式（７）における整数Ｚintおよび小数Ｚamariは、上述した式（６）から求まるので、式（６）および式（７）から、入力値ＸをＹ乗して得られる演算値Ｐが求まる。
【００４３】
以上のようにしてべき乗の演算を行い、オーディオ信号を量子化する量子化装置は、図３に示す構成とされる。
【００４４】
量子化装置５１は、図１の量子化部２７に対応し、量子化装置５１には、式（１）における量子化前の値ＡＹが入力値Ｘとして供給されるとともに、べき指数Ｙ＝３／４が供給される。
【００４５】
仮数／指数分離部６１は、供給された入力値Ｘを仮数Ｘ1と指数Ｘ2とに分離し、対数演算部６２供給する。対数演算部６２には、べき指数Ｙが供給され、対数演算部６２は、仮数／指数分離部６１からの仮数Ｘ1および指数Ｘ2と、供給されたべき指数Ｙとを用いて、式（６）の演算を行い、対数Ｚを求める。その際、対数演算部６２は、仮数Ｘ1により求まるインデックスindex1を用いて、仮数の対数テーブル保持部６３から入力値Ｘの仮数部分の対数値「log2（１+Ｘ1／２23）」を取得して式（６）に代入する。ここで、インデックスindex1は、仮数Ｘ1の値に対する、入力値Ｘの仮数部分の対数値を特定するために用いられる値である。
【００４６】
仮数の対数テーブル保持部６３は、各仮数Ｘ1の値に対する、入力値Ｘの仮数部分の対数値を含む仮数の対数テーブルを保持している。また、整数／小数分離部６４は、対数演算部６２からの対数Ｚを整数Ｚintおよび小数Ｚamariに分離する。
【００４７】
べき乗演算部６５は、整数／小数分離部６４からの整数Ｚintおよび小数Ｚamariを用いて、上述した式（７）を演算することで、浮動小数点型のデータである演算値Ｐを得る。その際、べき乗演算部６５は、小数Ｚamariにより求まるインデックスindex2を用いて、小数のべき乗テーブル保持部６６から、小数Ｚamariをべき指数とする底２のべき乗値２＾Ｚamariを取得して式（７）に代入する。ここで、インデックスindex2は、小数Ｚamariの値に対する、底を２としたべき乗値を特定するために用いられる値である。
【００４８】
なお、べき乗値２＾Ｚamariにおける「＾」はべき乗を表しており、以下の説明において同様であるとする。つまり、「２＾Ｚamari」は、２のＺamari乗を示している。
【００４９】
小数のべき乗テーブル保持部６６は、各小数Ｚamariの値に対する、底を２とするべき乗の値を含む小数のべき乗テーブルを保持している。整数変換部６７は、べき乗演算部６５により求められた演算値Ｐに所定の定数αが加算されて得られる数の整数部分を抽出し、抽出した整数部分を、入力値Ｘの量子化値ＲＺとして出力する。この場合、定数αは、式（１）の「-0.0946＋0.5」とされる。
【００５０】
次に、図４のフローチャートを参照して、量子化装置５１による量子化処理について説明する。
【００５１】
ステップＳ１１において、仮数の対数テーブル保持部６３および小数のべき乗テーブル保持部６６は、仮数の対数テーブルおよび小数のべき乗テーブルを生成する。
【００５２】
すなわち、仮数の対数テーブル保持部６３は、仮数の対数テーブルのテーブルサイズを２N＝SIZEとすると、次式（８）に示される、入力値Ｘの仮数部分の対数値logtable[i]からなる仮数の対数テーブルを生成する。
【００５３】
【数８】
2010033318.tif 000010
【００５４】
ここで、テーブルサイズSIZEは、Ｎビットのデータで表すことのできる数の個数であり、このテーブルサイズSIZEの個数だけ対数値logtable[i]が用意されることになる。また、対数値logtable[i]の変数ｉは、仮数Ｘ1から求まるインデックスindex1の値を示しており、変数ｉ＝０，・・・，（SIZE−１）とされる。
【００５５】
また、小数のべき乗テーブル保持部６６は、小数のべき乗テーブルのテーブルサイズを２N＝SIZEとすると、次式（９）に示される、小数Ｚamariをべき指数とし、底を２とするべき乗値twotable[i]からなる小数のべき乗テーブルを生成する。
【００５６】
【数９】
2010033318.tif 000011
【００５７】
ここで、べき乗値twotable[i]の変数ｉは、小数Ｚamariから求まるインデックスindex2の値を示しており、変数ｉ＝０，・・・，（SIZE−１）とされる。
【００５８】
ステップＳ１２において、仮数／指数分離部６１は、供給された入力値Ｘの仮数Ｘ1および指数Ｘ2を求める。
【００５９】
ステップＳ１３において、対数演算部６２は、仮数／指数分離部６１からの仮数Ｘ1および指数Ｘ2を用いて、式（６）を計算し、対数Ｚを求める。
【００６０】
すなわち、対数演算部６２は、仮数Ｘ1を用いて次式（１０）を計算することにより、仮数Ｘ1の２２ビット目から上位Ｎビットの値をインデックスindex1として求め、さらに、そのインデックスindex1を用いて、次式（１１）により入力値Ｘの仮数部分の対数値logtable[index1]を求める。
【００６１】
【数１０】
2010033318.tif 000012
【００６２】
【数１１】
2010033318.tif 000013
【００６３】
なお、式（１０）において「＞＞」は右シフトを示している。仮数Ｘ1は２３ビットの値であるので、仮数Ｘ1を（２３−Ｎ）ビットだけ右シフトすれば、仮数Ｘ1の上位Ｎビットの値を取り出すことができる。
【００６４】
対数演算部６２は、仮数Ｘ1から抽出した上位Ｎビットの値をインデックスindex1とし、そのインデックスindex1を変数ｉの値とした対数値logtable[index1]を、仮数の対数テーブル保持部６３から取得する。そして、この取得された対数値logtable[index1]が、入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））とされる。
【００６５】
さらに、対数演算部６２は、仮数／指数分離部６１からの指数Ｘ2、供給されたべき指数Ｙ、および求めた対数値を式（６）に代入し、対数Ｚを求める。
【００６６】
ステップＳ１４において、整数／小数分離部６４は、対数演算部６２からの対数Ｚを、整数Ｚintおよび小数Ｚamariに分離する。具体的には、整数／小数分離部６４は、次式（１２）および式（１３）を計算することで、整数Ｚintおよび小数Ｚamariを求める。
【００６７】
【数１２】
2010033318.tif 000014
【００６８】
【数１３】
2010033318.tif 000015
【００６９】
すなわち、式（１２）では、対数Ｚが０以上である場合には、対数Ｚの整数部分が抽出されて整数Ｚintとされ、対数Ｚが０未満である場合には、対数Ｚの整数部分が抽出され、その整数部分からさらに１が減算された値が整数Ｚintとされる。
【００７０】
また、式（１３）では、対数Ｚから、その対数Ｚの整数部分が減算されて得られる値（差分）に、さらに２23が乗算された値の整数部分が小数Ｚamariとされる。つまり、対数Ｚと対数Ｚの整数部分との差分を求めることで、対数Ｚの小数部分の値が求まる。そして、その小数部分の値に２23を乗算して、その結果得られる値の整数部分を抽出することで、対数Ｚの小数部分が、小数点が２３ビット目に位置する固定小数点数に変換される。
【００７１】
ステップＳ１５において、べき乗演算部６５は、整数／小数分離部６４からの整数Ｚintおよび小数Ｚamariを用いて、演算値Ｐを求める。
【００７２】
すなわち、べき乗演算部６５は、次式（１４）および式（１５）を計算することで、インデックスindex2を求め、そのインデックスindex2を用いて式（１６）より、底２のべき乗値（２＾Ｚamari）を求める。
【００７３】
【数１４】
2010033318.tif 000016
【００７４】
【数１５】
2010033318.tif 000017
【００７５】
【数１６】
2010033318.tif 000018
【００７６】
なお、式（１４）において「＞＞」は右シフトを示しており、式（１５）において「＆」は論理積演算を示している。
【００７７】
すなわち、べき乗演算部６５は、小数Ｚamariを（２３−Ｎ）ビットだけ右シフトすることにより、小数Ｚamariの（２３−Ｎ）ビット目から上位ビットの値を取り出してindex2’とする。ここで、小数Ｚamariは式（１３）の計算により、小数点位置が２３ビット目にある固定小数点数とされているので、小数Ｚamariを（２３−Ｎ）ビットだけ右シフトすると、小数Ｚamariの小数部分の（２３−Ｎ）ビット目から上位ビットの値が抽出される。
【００７８】
また、べき乗演算部６５は、このようにして得られたindex2’と、（SIZE−１）との論理積演算をすることでＮビットのインデックスindex2を求め、そのインデックスindex2を変数ｉの値としたべき乗値twotable[index2]を、小数のべき乗テーブル保持部６６の小数のべき乗テーブルから取得する。そして、この取得されたべき乗値twotable[index2]が、底２のべき乗値（２＾Ｚamari）とされる。
【００７９】
さらに、べき乗演算部６５は、整数／小数分離部６４からの整数Ｚintを用いて式（１７）を計算し、整数Ｚintをべき指数とする底２のべき乗値（２＾Ｚint）を求める。
【００８０】
【数１７】
2010033318.tif 000019
【００８１】
なお、式（１７）において、「＜＜」は左シフトを示している。すなわち、べき乗演算部６５は、求めようとするべき乗値（２＾Ｚint）を、IEEE754に基づく浮動小数点型のフォーマットのデータとするために、整数Ｚintにバイアス成分「１２７」を加算し、２３ビットだけ左シフトする。左シフト演算が行われるのは、浮動小数点数の指数部が、浮動小数点型のデータにおける３０ビット目から２３ビット目までの部分となるからである。
【００８２】
このようにして、べき乗値（２＾Ｚamari）およびべき乗値（２＾Ｚint）が得られると、べき乗演算部６５は、これらのべき乗値から式（１８）を計算して演算値Ｐを求める。
【００８３】
【数１８】
2010033318.tif 000020
【００８４】
ステップＳ１６において、整数変換部６７は、べき乗演算部６５により求められた演算値Ｐを用いて、入力値Ｘの量子化値ＲＺを求めて出力し、量子化処理は終了する。
【００８５】
すなわち、整数変換部６７は演算値Ｐと、予め定められた定数αとから次式（１９）を計算し、量子化値ＲＺを求める。
【００８６】
【数１９】
2010033318.tif 000021
【００８７】
以上のようにして、量子化装置５１は、入力値Ｘのべき乗を計算し、量子化値ＲＺを求める。
【００８８】
【特許文献１】特開２００１−５６４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００８９】
しかしながら、上述した技術では、少ないメモリ量で、べき乗の演算を簡単に精度よく行なうことは困難であった。
【００９０】
例えば、具体的に、量子化装置５１により算出されたべき乗の演算値Ｐと、数学ライブラリを用いて算出したべき乗値ＱとからなるＬ個のデータのセットを用いて、次式（２０）を計算し、相対誤差平均Ｔを求めて演算精度を評価することを考える。
【００９１】
【数２０】
2010033318.tif 000022
【００９２】
なお、式（２０）において、Ｐiは、量子化装置５１により算出された演算値Ｐのｉ番目のサンプルを示しており、Ｑiは、数学ライブラリにより求められた、Ｐiに対応する数を示している。
【００９３】
本出願人が、Ｌ＝８１９２として式（２０）を計算し、量子化装置５１による演算値Ｐの演算精度の評価を行ったところ、テーブルサイズ２NにおけるＮが８であるとき、すなわちSIZE＝256のとき、相対誤差平均Ｔ＝5.45×10-3となり、それほど高い精度は得られなかった。また、テーブルサイズ２NにおけるＮが１６であるとき、すなわちSIZE＝65536のとき、相対誤差平均Ｔ＝5.10×10-6となり、Ｎ＝８の場合よりも高い精度が得られた。
【００９４】
しかしながら、べき乗の演算の精度を上げようとすると、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズを増やす必要があり、それらのテーブルを記録しておくメモリのメモリ容量が逼迫してしまう。逆に、それらのテーブルのテーブルサイズを小さくすると、べき乗の演算精度が低下してしまう。
【００９５】
さらに、例えば式（１）に示したように、オーディオ信号の量子化を行う場合などには、べき乗演算により演算値Ｐを求め、さらに定数αを加算してから整数化を行わなければならず、簡単にべき乗の整数を求めることができなかった。
【００９６】
本発明は、このような状況に鑑みてなされたものであり、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができるようにするものである。また、本発明は、より簡単にべき乗の整数を求めることができるようにするものである。
【課題を解決するための手段】
【００９７】
本発明の第１の側面の演算処理装置は、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であって、浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ１と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ２とに、前記入力値Ｘを分離する仮数／指数分離手段と、前記仮数Ｘ１に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を記録する第１の記録手段と、前記仮数Ｘ１を用いて前記第１の記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、前記変数Ｙおよび前記指数Ｘ２と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段とを備える。
【００９８】
演算処理装置には、前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離する整数／小数分離手段と、前記小数Ｚａｍａｒｉに対して定まる、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を記録する第２の記録手段とをさらに設け、前記べき乗演算手段には、前記小数Ｚａｍａｒｉを用いて前記第２の記録手段から取得した前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとから前記演算値Ｐを求めさせることができる。
【００９９】
前記補間手段には、前記小数Ｚａｍａｒｉを用いて前記第２の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行わせ、最終的な前記定数Ｍの前記べき乗値を求めさせ、前記べき乗演算手段には、前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとから前記演算値Ｐを求めさせることができる。
【０１００】
本発明の第１の側面の演算処理方法またはプログラムは、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置の演算処理方法またはプログラムであって、浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ１と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ２とに、前記入力値Ｘを分離し、前記仮数Ｘ１に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を複数用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、前記変数Ｙおよび前記指数Ｘ２と、前記補間処理により求められた前記仮数の前記対数値とを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるステップを含む。
【０１０１】
本発明の第１の側面においては、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置において、浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ１と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ２とに、前記入力値Ｘが分離され、前記仮数Ｘ１に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値が複数用いられて補間処理が行われ、最終的な前記仮数の前記対数値が求められ、前記変数Ｙおよび前記指数Ｘ２と、前記補間処理により求められた前記仮数の前記対数値とが用いられて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚが求められ、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐが求められる。
【０１０２】
本発明の第２の側面の演算処理装置は、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置であって、前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離する整数／小数分離手段と、前記小数Ｚａｍａｒｉに対して定まる、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を記録する第１の記録手段と、前記小数Ｚａｍａｒｉを用いて前記第１の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求める補間手段と、前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとを用いて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるべき乗演算手段とを備える。
【０１０３】
演算処理装置には、浮動小数点型のデータにおける、前記入力値Ｘを浮動小数点数で表現したときの仮数を表す仮数部である仮数Ｘ１と、前記入力値Ｘを浮動小数点数で表現したときの指数を表す指数部である指数Ｘ２とに、前記入力値Ｘを分離する仮数／指数分離手段をさらに設け、前記対数演算手段には、前記仮数Ｘ１、前記指数Ｘ２、および前記変数Ｙを用いて、前記演算値Ｐの前記対数値Ｚを求めさせることができる。
【０１０４】
演算処理装置には、前記仮数Ｘ１に対して定まる、前記定数Ｍを底とする前記入力値Ｘの前記仮数の対数値を記録する第２の記録手段をさらに設け、前記対数演算手段には、前記仮数Ｘ１を用いて前記第２の記録手段から取得した前記仮数の前記対数値と、前記変数Ｙおよび前記指数Ｘ２とを用いて、前記演算値Ｐの前記対数値Ｚを求めさせることができる。
【０１０５】
本発明の第２の側面の演算処理方法またはプログラムは、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置の演算処理方法またはプログラムであって、前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離し、前記小数Ｚａｍａｒｉに対して定まる、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を複数用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求め、前記補間処理により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとを用いて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐを求めるステップを含む。
【０１０６】
本発明の第２の側面においては、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐを求める演算処理装置において、前記入力値Ｘおよび前記変数Ｙが用いられて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚが求められ、前記演算値Ｐの前記対数値Ｚが、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離され、前記小数Ｚａｍａｒｉに対して定まる、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値が複数用いられて補間処理が行われ、最終的な前記定数Ｍの前記べき乗値が求められ、前記補間処理により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとが用いられて、前記演算値Ｐの前記対数値Ｚをべき指数とする、前記定数Ｍのべき乗を求めることにより、前記演算値Ｐが求められる。
【０１０７】
本発明の第３の側面の演算処理装置は、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置であって、前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求める対数演算手段と、前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離する整数／小数分離手段と、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚｉｎｔを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Ｐの前記整数を求めるべき乗整数変換手段とを備える。
【０１０８】
演算処理装置には、前記小数Ｚａｍａｒｉに対して定まる、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍの前記べき乗値を記録する記録手段をさらに設け、前記べき乗整数変換手段には、前記小数Ｚａｍａｒｉを用いて前記記録手段から取得した前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとから前記演算値Ｐの前記整数を求めさせることができる。
【０１０９】
演算処理装置には、前記小数Ｚａｍａｒｉを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Ｍの前記べき乗値を求める補間手段をさらに設け、前記べき乗整数変換手段には、前記補間手段により求められた前記定数Ｍの前記べき乗値と、前記整数Ｚｉｎｔとから前記演算値Ｐの前記整数を求めさせることができる。
【０１１０】
本発明の第３の側面の演算処理方法またはプログラムは、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置の演算処理方法またはプログラムであって、前記入力値Ｘおよび前記変数Ｙを用いて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚを求め、前記演算値Ｐの前記対数値Ｚを、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離し、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚｉｎｔを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Ｐの前記整数を求めるステップを含む。
【０１１１】
本発明の第３の側面においては、変数Ｙをべき指数とし、所定の定数をＭとして、Ｍ進数で表現される入力値Ｘをべき乗して得られる演算値Ｐの整数を求める演算処理装置において、前記入力値Ｘおよび前記変数Ｙが用いられて、前記定数Ｍを底とする前記演算値Ｐの対数値Ｚが求められ、前記演算値Ｐの前記対数値Ｚが、前記対数値Ｚの整数部分である整数Ｚｉｎｔと、前記対数値Ｚの小数部分である小数Ｚａｍａｒｉとに分離され、前記小数Ｚａｍａｒｉをべき指数とする、前記定数Ｍのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Ｚｉｎｔを減算して得られる数を示すビット数分だけ右シフト演算が行われて、前記演算値Ｐの前記整数が求められる。
【発明の効果】
【０１１２】
本発明の第１の側面によれば、べき乗の演算を行うことができる。特に、本発明の第１の側面によれば、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができる。
【０１１３】
また、本発明の第２の側面によれば、べき乗の演算を行うことができる。特に、本発明の第２の側面によれば、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができる。
【０１１４】
さらに、本発明の第３の側面によれば、べき乗の整数を求めることができる。特に、本発明の第３の側面によれば、より簡単にべき乗の整数を求めることができる。
【発明を実施するための最良の形態】
【０１１５】
以下、図面を参照して、本発明を適用した実施の形態について説明する。
【０１１６】
［第１の実施の形態］
まず、本発明を適用した演算処理装置により行われる処理の概要を説明する。
【０１１７】
本発明を適用した演算処理装置は、供給された入力値Ｘを、例えばIEEE754に基づく浮動小数点数の仮数Ｘ1と指数Ｘ2とに分離して、入力値ＸのＹ乗を求める演算を行う。すなわち、演算処理装置は、基本的には、上述した式（６）および式（７）を計算して、入力値ＸをＹ乗して得られる演算値Ｐを求める。
【０１１８】
ここで、仮数Ｘ1は、浮動小数点型のデータにおける、入力値Ｘの仮数（仮数部分）を表す仮数部であり、指数Ｘ2は、浮動小数点型のデータにおける、入力値Ｘの指数を表す指数部である。また、入力値Ｘの仮数（仮数部分）とは、上述した式（５）に示したように、入力値Ｘを浮動小数点数で表現したときの仮数部分（１＋Ｘ1／２23）である。
【０１１９】
演算処理装置は、演算値Ｐを求める際に、仮数Ｘ1の値に対する、入力値Ｘの仮数部分の対数値を示すテーブル値を含む仮数の対数テーブルを利用して、補間処理により入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））を得る。また、演算処理装置は、式（６）の対数Ｚの整数部分および小数部分を、それぞれ整数Ｚintおよび小数Ｚamariとして、小数Ｚamariの値に対する、底を２とするべき乗値を示すテーブル値を含む小数のべき乗テーブルを利用し、補間処理によりべき乗値２＾Ｚamariを得る。
【０１２０】
図５は、本発明を適用した演算処理装置の一実施の形態の構成例を示す図である。
【０１２１】
演算処理装置９１は、仮数／指数分離部１０１、仮数の対数テーブル保持部１０２、小数のべき乗テーブル保持部１０３、補間処理部１０４、対数演算部１０５、整数／小数分離部１０６、べき乗演算部１０７、および整数変換部１０８から構成される。この演算処理装置９１では、仮数／指数分離部１０１に入力値Ｘが供給され、対数演算部１０５にべき指数Ｙが供給される。
【０１２２】
仮数／指数分離部１０１は、供給された入力値Ｘを、例えばIEEE754に基づく浮動小数点数の仮数Ｘ1と指数Ｘ2とに分離して、仮数Ｘ1を補間処理部１０４に供給するとともに、指数Ｘ2を対数演算部１０５に供給する。
【０１２３】
仮数の対数テーブル保持部１０２は、仮数の対数テーブルを保持している。小数のべき乗テーブル保持部１０３は、小数のべき乗テーブルを保持している。補間処理部１０４は、仮数の対数テーブル保持部１０２の仮数の対数テーブルから、仮数／指数分離部１０１からの仮数Ｘ1により特定されるテーブル値を取得して補間処理を行い、その結果得られた入力値Ｘの仮数部分の対数値を対数演算部１０５に供給する。
【０１２４】
また、補間処理部１０４は、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルから、整数／小数分離部１０６からの小数Ｚamariにより特定されるテーブル値を取得して補間処理を行い、その結果得られたべき乗値をべき乗演算部１０７に供給する。
【０１２５】
対数演算部１０５は、仮数／指数分離部１０１からの指数Ｘ2、供給されたべき指数Ｙ、および補間処理部１０４からの対数値に基づいて、２を底とする演算値Ｐの対数Ｚを求め、整数／小数分離部１０６に供給する。整数／小数分離部１０６は、対数演算部１０５からの対数Ｚを整数Ｚintと小数Ｚamariとに分離し、整数Ｚintをべき乗演算部１０７に供給するとともに、小数Ｚamariを補間処理部１０４に供給する。
【０１２６】
べき乗演算部１０７は、整数／小数分離部１０６からの整数Ｚintと、補間処理部１０４からのべき乗値とを用いて演算値Ｐを求め、整数変換部１０８に供給する。整数変換部１０８は、べき乗演算部１０７からの演算値Ｐに所定の定数αが加算されて得られる数の整数部分を抽出し、抽出した整数部分を出力する。
【０１２７】
したがって、例えば、入力値Ｘが式（１）における（ＡＸ／２q/4）であり、べき指数Ｙが３／４であり、定数αが「-0.0946＋0.5」である場合には、演算処理装置９１は、図１の量子化部２７に対応する装置となる。すなわち、そのような場合、演算処理装置９１は、入力されたオーディオ信号としての入力値Ｘを非線形量子化する量子化装置となる。
【０１２８】
なお、入力値Ｘ＝0.0である場合は、浮動小数点数として特殊な場合であるので、演算値Ｐ＝0.0Y＝0として別途求まるものとする。
【０１２９】
次に、図６のフローチャートを参照して、演算処理装置９１によるべき乗演算処理について説明する。
【０１３０】
ステップＳ４１において、仮数の対数テーブル保持部１０２は、仮数の対数テーブルを生成する。例えば、補間処理部１０４により補間処理として２次の多項式補間が行われる場合、仮数の対数テーブル保持部１０２は、仮数の対数テーブルのテーブルサイズを２N＋２＝SIZE＋２とする。そして、仮数の対数テーブル保持部１０２は、次式（２１）に示されるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。
【０１３１】
【数２１】
2010033318.tif 000023
【０１３２】
ここで、テーブル値logtable[i]の変数ｉは、仮数Ｘ1から求まり、テーブル値logtable[i]を特定するために用いられるインデックスindex1の値を示しており、変数ｉ＝０，・・・，（SIZE＋１）とされる。また、テーブルサイズ（SIZE＋２）の個数だけテーブル値logtable[i]が用意されることになる。
【０１３３】
例えば、インデックスindex1を仮数Ｘ1の上位何ビットかの値とすれば、式（２１）における「log2（１+ｉ／SIZE）」は、仮数Ｘ1の値に対する、２を底とする入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））の近似値となる。
【０１３４】
仮数の対数テーブル保持部１０２は、（SIZE＋２）個の各変数の値ｉのそれぞれに対する、テーブル値logtable[i]のそれぞれを求めると、それらの値ｉとテーブル値logtable[i]とを対応付けて仮数の対数テーブルを生成し、保持する。
【０１３５】
なお、補間処理として、補間処理部１０４により線形補間が行われる場合には、仮数の対数テーブルのテーブルサイズは２N＋１＝SIZE＋１とされ、式（２１）のテーブル値logtable[i]からなる仮数の対数テーブルが生成される。
【０１３６】
ステップＳ４２において、小数のべき乗テーブル保持部１０３は、小数のべき乗テーブルを生成する。例えば、補間処理部１０４により補間処理として２次の多項式補間が行われる場合、小数のべき乗テーブル保持部１０３は、小数のべき乗テーブルのテーブルサイズを２N＋２＝SIZE＋２とする。そして、小数のべき乗テーブル保持部１０３は、次式（２２）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
【０１３７】
【数２２】
2010033318.tif 000024
【０１３８】
ここで、テーブル値twotable[i]の変数ｉは、小数Ｚamariから求まり、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数ｉ＝０，・・・，（SIZE＋１）とされる。また、テーブルサイズ（SIZE＋２）の個数だけテーブル値twotable[i]が用意されることになる。
【０１３９】
インデックスindex2を、小数Ｚamariの上位何ビットかの値とすれば、式（２２）における２(i/SIZE)は、「２」を底（基数）とし、小数Ｚamariをべき指数とするべき乗の値２＾Ｚamariiの近似値となる。
【０１４０】
小数のべき乗テーブル保持部１０３は、（SIZE＋２）個の各変数の値ｉのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値ｉとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
【０１４１】
なお、補間処理として、補間処理部１０４により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは２N＋１＝SIZE＋１とされ、式（２２）のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
【０１４２】
また、仮数の対数テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Ｘのべき乗演算前に１度行っておけばよい。つまり、１度これらのテーブルを生成しておけば、その後、入力値Ｘのべき乗演算を行うときは、既に生成されて保持されている仮数のべき乗テーブルおよび小数のべき乗テーブルを用いればよい。
【０１４３】
ステップＳ４３において、仮数／指数分離部１０１は、供給された入力値Ｘの仮数Ｘ1および指数Ｘ2を求め、求めた仮数Ｘ1を補間処理部１０４に供給し、求めた指数Ｘ2を対数演算部１０５に供給する。
【０１４４】
例えば、IEEE754に基づく浮動小数点数の仮数部および指数部、つまり、上述した式（５）における仮数Ｘ1および指数Ｘ2を示す整数型のデータが、入力値Ｘの仮数Ｘ1および指数Ｘ2のデータとされる。換言すれば、図２に示した浮動小数点型のデータの０ビット目から２２ビット目までの部分が仮数Ｘ1とされ、３０ビット目から２３ビット目までの部分からバイアス値を引き算した値が指数Ｘ2とされる。
【０１４５】
ステップＳ４４において、補間処理部１０４は、仮数／指数分離部１０１からの仮数Ｘ1を用いて補間処理を行って、式（６）に示した、入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））を求め、対数演算部１０５に供給する。
【０１４６】
すなわち、補間処理部１０４は、式（２３）を計算することにより、仮数Ｘ1の２２ビット目から上位Ｎビットをインデックスindex1として求める。
【０１４７】
【数２３】
2010033318.tif 000025
【０１４８】
なお、式（２３）において「＞＞」は右シフトを示している。例えば、図２に示したように、仮数Ｘ1は２３ビットの値であるので、仮数Ｘ1を（２３−Ｎ）ビットだけ右シフトすれば、仮数Ｘ1の上位Ｎビットの値を取り出すことができる。
【０１４９】
また、補間処理部１０４は、次式（２４）を計算することにより、仮数Ｘ1の（２２−Ｎ）ビット目から０ビット目までの部分の値である下位値Ｘh1を求める。
【０１５０】
【数２４】
2010033318.tif 000026
【０１５１】
なお、式（２４）において、「＆」は論理積演算を示しており、以下の説明において同じであるとする。式（２４）では、２進数のデータである仮数Ｘ1と（２23-N−１）との論理積演算を行うことにより、仮数Ｘ1の（２２−Ｎ）ビット目から０ビット目までの部分が抽出される。すなわち、（２23-N−１）は、下位（２３−Ｎ）ビットの値だけが「１」となり、他のビットの値は「０」となる値であるので、論理積演算により、仮数Ｘ1の下位（２３−Ｎ）ビットの値だけが抽出される。
【０１５２】
例えば、図７に示すように、演算処理装置９１では、浮動小数点数のデータの２２ビット目から０ビット目までの仮数部（仮数Ｘ1）のうち、２２ビット目から上位Ｎビットの部分を用いてインデックスindex1が生成される。そして、生成されたインデックスindex1により特定されるテーブル値が、仮数Ｘ1に対する、入力値Ｘの仮数部分の対数値を示す値として仮数の対数テーブルから取得される。
【０１５３】
このテーブル値は、仮数Ｘ1の上位Ｎビットの部分を用いて得られた対数値の近似値であるため、この近似値には誤差が含まれる。そこで、補間処理部１０４は、仮数Ｘ1の２２ビット目から上位Ｎビットの部分を用いてテーブル値を得て、さらに残りの（２３−Ｎ）ビットの部分、つまり仮数Ｘ1の（２２−Ｎ）ビット目から０ビット目までの部分を用いて補間処理を行って、最終的な対数値を求める。これにより、仮数の対数テーブルのテーブルサイズを大きくすることなく、簡単にべき乗演算の精度を向上させることができるようになる。
【０１５４】
なお、図７の例においては、浮動小数点数のデータのうち、３０ビット目から２３ビット目までの８ビットの部分からバイアス値を引き算した値が、指数Ｘ2の整数型のデータとして抽出される。
【０１５５】
図６のフローチャートの説明に戻り、インデックスindex1および下位値Ｘh1が求められると、補間処理部１０４は、さらに、インデックスindex1により特定される仮数の対数テーブルのテーブル値と、下位値Ｘh1とから補間処理を行う。
【０１５６】
例えば、補間処理として線形補間を行う場合、補間処理部１０４は、次式（２５）および式（２６）を計算して、入力値Ｘの仮数部分の対数値のテーブル値Ｖ10およびテーブル値Ｖ11を求める。
【０１５７】
【数２５】
2010033318.tif 000027
【０１５８】
【数２６】
2010033318.tif 000028
【０１５９】
すなわち、補間処理部１０４は、インデックスindex1を変数ｉの値としたテーブル値logtable[index1]をテーブル値Ｖ10として、仮数の対数テーブル保持部１０２の仮数の対数テーブルから取得する。同様に、補間処理部１０４は、インデックスindex1＋1を変数ｉの値としたテーブル値logtable[index1＋1]をテーブル値Ｖ11として、仮数の対数テーブルから取得する。これにより、仮数の対数テーブルから、インデックスindex1の近傍の２つのテーブル値Ｖ10およびテーブル値Ｖ11が得られたことになる。
【０１６０】
そして、補間処理部１０４は、下位値Ｘh1と、テーブル値Ｖ10およびテーブル値Ｖ11とを用いて式（２７）を計算することにより線形補間を行い、２を底とする入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））を求める。
【０１６１】
【数２７】
2010033318.tif 000029
【０１６２】
なお、式（２７）における「ａ」および変数「xin」は、それぞれ式（２８）および式（２９）により表される。
【０１６３】
【数２８】
2010033318.tif 000030
【０１６４】
【数２９】
2010033318.tif 000031
【０１６５】
すなわち、補間処理として線形補間が行われる場合、図８に示すように、テーブル値Ｖ10を原点とみなして、インデックスに対する対数値の傾きａが求められ、インデックス（index1）の値がxinであるときの対数値が補間された対数値として求められる。なお、図８において、縦軸は対数値を示しており、横軸はインデックス（インデックスindex1）の値を示している。
【０１６６】
また、例えば、補間処理部１０４は、補間処理として２次の多項式補間を行う場合、上述した式（２５）および式（２６）と、次式（３０）とを計算することにより、入力値Ｘの仮数部分の対数値のテーブル値Ｖ10乃至テーブル値Ｖ12を求める。
【０１６７】
【数３０】
2010033318.tif 000032
【０１６８】
すなわち、補間処理部１０４は、テーブル値Ｖ10およびテーブル値Ｖ11とともに、インデックスindex1＋2を変数ｉの値としたテーブル値logtable[index1＋2]をテーブル値Ｖ12として、仮数の対数テーブル保持部１０２の仮数の対数テーブルから取得する。
【０１６９】
そして、補間処理部１０４は、下位値Ｘh1と、テーブル値Ｖ10乃至テーブル値Ｖ12とを用いて式（３１）を計算することにより２次の多項式補間を行い、２を底とする入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））を求める。
【０１７０】
【数３１】
2010033318.tif 000033
【０１７１】
なお、式（３１）における「ａ」、「ｂ」、および「xin」は、それぞれ式（３２）乃至式（３４）により表される。
【０１７２】
【数３２】
2010033318.tif 000034
【０１７３】
【数３３】
2010033318.tif 000035
【０１７４】
【数３４】
2010033318.tif 000036
【０１７５】
すなわち、補間処理として２次の多項式補間が行われる場合、図９に示すように、テーブル値Ｖ10を原点とみなして、下位値Ｘh1から求まるインデックスの値xinの２乗の値に乗算される係数ａと、値xinに乗算される係数ｂとが求められ、インデックス（index1）の値がxinであるときの対数値が補間された対数値として求められる。なお、図９において、縦軸は対数値を示しており、横軸はインデックスの値を示している。
【０１７６】
なお、補間処理部１０４は、補間処理を行わない場合には、式（２５）により得られるテーブル値Ｖ10を、入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））とする。
【０１７７】
このようにして求められた対数値の補間値（log2（１+Ｘ1／２23））は、入力値Ｘの仮数部分の最終的な対数値（log2（１+Ｘ1／２23））とされて、補間処理部１０４から対数演算部１０５に供給される。
【０１７８】
ステップＳ４５において、対数演算部１０５は、仮数／指数分離部１０１からの指数Ｘ2、補間処理部１０４からの対数値（log2（１+Ｘ1／２23））、および供給されたべき指数Ｙを用いて上述した式（６）を計算し、対数Ｚを求める。これにより、２を底とする演算値Ｐの対数Ｚが得られる。対数演算部１０５は、計算により得られた対数Ｚを整数／小数分離部１０６に供給する。なお、対数Ｚは、浮動小数点型の２進数のデータとされる。
【０１７９】
ステップＳ４６において、整数／小数分離部１０６は、対数演算部１０５からの対数Ｚの整数Ｚintおよび小数Ｚamariを求め、整数Ｚintをべき乗演算部１０７に供給するとともに、小数Ｚamariを補間処理部１０４に供給する。
【０１８０】
具体的には、整数／小数分離部１０６は、対数Ｚを用いて次式（３５）により整数Ｚintを求める。
【０１８１】
【数３５】
2010033318.tif 000037
【０１８２】
すなわち、対数Ｚが０以上である場合には、その対数Ｚの整数部分が抽出されて整数Ｚintとされ、対数Ｚが０未満である場合には、その対数Ｚの整数部分が抽出され、その整数部分からさらに１が減算された値が整数Ｚintとされる。
【０１８３】
また、整数／小数分離部１０６は、対数Ｚを用いて次式（３６）により小数Ｚamariを求める。
【０１８４】
【数３６】
2010033318.tif 000038
【０１８５】
式（３６）では、対数Ｚから、その対数Ｚの整数部分が減算されて得られる値（差分）に、さらに２23が乗算された値の整数部分が小数Ｚamariとされる。つまり、対数Ｚと対数Ｚの整数部分との差分を求めることで、対数Ｚの小数部分の値が求まる。そして、その小数部分の値に２23を乗算して、その結果得られる値の整数部分を抽出することで、対数Ｚの小数部分が、小数点が２３ビット目に位置する固定小数点数、つまり固定小数点型のデータに変換される。
【０１８６】
ステップＳ４７において、補間処理部１０４は、整数／小数分離部１０６からの小数Ｚamariを用いて補間処理を行い、小数Ｚamariをべき指数とする底２のべき乗値の補間値を求める。
【０１８７】
すなわち、補間処理部１０４は、次式（３７）および式（３８）を計算することにより、固定小数点化された小数Ｚamariの２２ビット目から上位Ｎビットの値をindex2として取り出す。
【０１８８】
【数３７】
2010033318.tif 000039
【０１８９】
【数３８】
2010033318.tif 000040
【０１９０】
なお、式（３７）において「＞＞」は右シフトを示しており、式（３８）において「＆」は論理積演算を示している。
【０１９１】
つまり、補間処理部１０４は、小数Ｚamariを（２３−Ｎ）ビットだけ右シフトすることにより、小数Ｚamariの（２３−Ｎ）ビット目から上位ビットの値を取り出してindex2’とする。ここで、小数Ｚamariは式（３６）の計算により、小数点位置が２３ビット目にある固定小数点数とされているので、小数Ｚamariを（２３−Ｎ）ビットだけ右シフトすると、小数Ｚamariの小数部分の（２３−Ｎ）ビット目から上位ビットの値が抽出される。また、補間処理部１０４は、このようにして得られたindex2’と、（SIZE−１）との論理積演算をすることでＮビットのインデックスindex2を求める。
【０１９２】
さらに、補間処理部１０４は、次式（３９）を計算することにより、小数Ｚamariの（２２−Ｎ）ビット目から０ビット目までの部分の値である下位値Ｘh2を求める。
【０１９３】
【数３９】
2010033318.tif 000041
【０１９４】
式（３９）では、式（２４）における場合と同様に、２進数のデータである小数Ｚamariと（２23-N−１）との論理積演算を行うことにより、小数Ｚamariの（２２−Ｎ）ビット目から０ビット目までの部分が抽出される。
【０１９５】
このようにして、インデックスindex2および下位値Ｘh2が求められると、補間処理部１０４は、さらに、インデックスindex2により特定される小数のべき乗テーブルのテーブル値と、下位値Ｘh2とから補間処理を行う。
【０１９６】
例えば、補間処理として線形補間を行う場合、補間処理部１０４は、次式（４０）および式（４１）を計算して、小数Ｚamariをべき指数とする底２のべき乗値のテーブル値Ｖ20およびテーブル値Ｖ21を求める。
【０１９７】
【数４０】
2010033318.tif 000042
【０１９８】
【数４１】
2010033318.tif 000043
【０１９９】
すなわち、補間処理部１０４は、インデックスindex2およびインデックスindex2＋1を変数ｉの値としたテーブル値twotable[index2]およびテーブル値twotable[index2＋1]をテーブル値Ｖ20およびテーブル値Ｖ21として、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルから取得する。これにより、小数のべき乗テーブルから、インデックスindex2の近傍の２つのテーブル値Ｖ20およびテーブル値Ｖ21が得られたことになる。
【０２００】
なお、上述した式（３８）の論理積演算と、式（３５）の対数Ｚが負である場合における、対数Ｚの整数からの１の減算とを行うことは、次の演算を行うことと等価である。すなわち、式（３８）および式（３５）の演算は、対数Ｚ＝（整数Ｚint＋小数Ｚamari）における小数Ｚamariが負であるときに、対数Ｚの整数Ｚintから１を減算し、対数Ｚの小数Ｚamariに１を加算することと等価である。
【０２０１】
このような演算を行うと、インデックスindex2を用いて、小数のべき乗テーブルからインデックスindex2により特定されるテーブル値（べき乗値）を取得する際に必要となる条件分岐の数を減らすことができ、より迅速にテーブル値を得ることができるようになる。
【０２０２】
なお、２のべき乗演算を、べき指数の小数と整数とに分けて、テーブルを利用して行う場合に、べき指数が負であるときに小数に１を加算し、整数から１を減算することで、テーブル引きの条件分岐数を削減する技術は、特開２００４−１７２７００に記載されている。
【０２０３】
以上のようにして、下位値Ｘh2と、テーブル値Ｖ20およびテーブル値Ｖ21とが求まると、補間処理部１０４は、下位値Ｘh2と、テーブル値Ｖ20およびテーブル値Ｖ21とを用いて式（４２）を計算することにより線形補間を行い、小数Ｚamariをべき指数とする底２のべき乗値の補間値（２＾Ｚamari）を求める。
【０２０４】
【数４２】
2010033318.tif 000044
【０２０５】
なお、式（４２）における「ａ」および変数「xin」は、それぞれ式（４３）および式（４４）により表される。
【０２０６】
【数４３】
2010033318.tif 000045
【０２０７】
【数４４】
2010033318.tif 000046
【０２０８】
すなわち、補間処理として線形補間が行われる場合、図８に示した場合と同様に、テーブル値Ｖ20を原点とみなして、インデックスに対するべき乗値の傾きａが求められ、インデックス（index2）の値がxinであるときのべき乗値が補間されたべき乗値として求められる。
【０２０９】
また、例えば、補間処理部１０４は、補間処理として２次の多項式補間を行う場合、上述した式（４０）および式（４１）と、次式（４５）とを計算することにより、小数Ｚamariをべき指数とする底２のべき乗値のテーブル値Ｖ20乃至テーブル値Ｖ22を求める。
【０２１０】
【数４５】
2010033318.tif 000047
【０２１１】
すなわち、補間処理部１０４は、テーブル値Ｖ20およびテーブル値Ｖ21とともに、インデックスindex2＋2を変数ｉの値としたテーブル値twotable[index2＋2]をテーブル値Ｖ22として、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルから取得する。
【０２１２】
そして、補間処理部１０４は、下位値Ｘh2と、テーブル値Ｖ20乃至テーブル値Ｖ22とを用いて式（４６）を計算することにより２次の多項式補間を行い、小数Ｚamariをべき指数とする底２のべき乗値の補間値（２＾Ｚamari）を求める。
【０２１３】
【数４６】
2010033318.tif 000048
【０２１４】
なお、式（４６）における「ａ」、「ｂ」、および「xin」は、それぞれ式（４７）乃至式（４９）により表される。
【０２１５】
【数４７】
2010033318.tif 000049
【０２１６】
【数４８】
2010033318.tif 000050
【０２１７】
【数４９】
2010033318.tif 000051
【０２１８】
すなわち、補間処理として２次の多項式補間が行われる場合、図９に示した場合と同様に、テーブル値Ｖ20を原点とみなして、下位値Ｘh2から求まるインデックスの値xinの２乗の値に乗算される係数ａと、値xinに乗算される係数ｂとが求められ、インデックス（index2）の値がxinであるときのべき乗値が補間されたべき乗値として求められる。
【０２１９】
なお、補間処理部１０４は、補間処理を行わない場合には、式（４０）により得られるテーブル値Ｖ20を、小数Ｚamariをべき指数とする底２のべき乗値の補間値（２＾Ｚamari）とする。
【０２２０】
このようにして求められたべき乗値の補間値（２＾Ｚamari）は、小数Ｚamariをべき指数とする底２の最終的なべき乗値として、補間処理部１０４からべき乗演算部１０７に供給される。
【０２２１】
ステップＳ４８において、べき乗演算部１０７は、補間処理部１０４からのべき乗値（２＾Ｚamari）と、整数／小数分離部１０６からの整数Ｚintとを用いて演算値Ｐを求める。
【０２２２】
すなわち、べき乗演算部１０７は、整数Ｚintを用いて次式（５０）を計算し、整数Ｚintをべき指数とする底２のべき乗値（２＾Ｚint）を求める。
【０２２３】
【数５０】
2010033318.tif 000052
【０２２４】
なお、式（５０）において、「＜＜」は左シフトを示している。すなわち、べき乗演算部１０７は、求めようとするべき乗値（２＾Ｚint）を、IEEE754に基づく浮動小数点型のフォーマットのデータとするために、整数Ｚintにバイアス成分「１２７」を加算し、２３ビットだけ左シフトする。
【０２２５】
左シフト演算が行われるのは、浮動小数点数の指数部が、浮動小数点型のデータにおける３０ビット目から２３ビット目までの部分となるからである。これにより、指数部が「Ｚint＋１２７」である浮動小数点型のデータが得られる。
【０２２６】
このようにして、べき乗値（２＾Ｚamari）およびべき乗値（２＾Ｚint）が得られると、べき乗演算部１０７は、これらのべき乗値を式（５１）に代入して演算値Ｐを求め、得られた演算値Ｐを整数変換部１０８に供給する。ここで、求められる演算値Ｐは、浮動小数点型のデータとされる。
【０２２７】
【数５１】
2010033318.tif 000053
【０２２８】
ステップＳ４９において、整数変換部１０８は、べき乗演算部１０７からの演算値Ｐを整数化して出力し、べき乗演算処理は終了する。
【０２２９】
すなわち、整数変換部１０８は、次式（５２）を計算することにより、演算値Ｐに定数αが加算されて得られる数の整数部分を求め、求められた値を、整数化された演算値Ｐである出力値として出力する。
【０２３０】
【数５２】
2010033318.tif 000054
【０２３１】
以上のようにして、演算処理装置９１は、仮数の対数テーブルおよび小数のべき乗テーブルのテーブル値を用いて補間処理を行い、補間処理により得られた対数値およびべき乗値を用いて演算値Ｐを求める。
【０２３２】
このように、補間処理を行って演算値Ｐを求めることで、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズを増やさずに、簡単にべき乗演算の精度を向上させることができる。したがって、べき乗の演算に必要なテーブルを記録するメモリのメモリ容量を少なくすることができ、かつより簡単に精度よくべき乗の演算を行うことができる。
【０２３３】
具体的には、上述した式（２０）を計算して求まる相対誤差平均Ｔにより、本出願人が演算処理装置９１のべき乗の演算精度の評価を行ったところ、図１０に示す評価結果が得られた。
【０２３４】
図１０には、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズにおけるＮを８とし、すなわちSIZE＝256とし、Ｌ＝8192個のデータを用いたときの相対誤差平均Ｔが示されている。
【０２３５】
すなわち、文字「べき乗：補間なし」は、小数のべき乗テーブルの値を補間処理せずに演算値Ｐの算出に用いたことを示している。文字「べき乗：線形補間」および「べき乗：２次補間」は、小数のべき乗テーブルの値に線形補間および２次の多項式補間を行って得られた値を、演算値Ｐの算出に用いたことを示している。
【０２３６】
同様に、文字「対数：補間なし」は、仮数の対数テーブルの値を補間処理せずに演算値Ｐの算出に用いたことを示しており、文字「対数：線形補間」および「対数：２次補間」は、仮数の対数テーブルの値に線形補間および２次の多項式補間を行って得られた値を、演算値Ｐの算出に用いたことを示している。
【０２３７】
図１０では、仮数の対数テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、べき乗（より詳細にはべき乗の整数）の演算精度が改善されることが分かる。例えば、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとＴ＝1.71×10-6となり、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に２次の多項式補間を施すとＴ＝1.99×10-7となっている。
【０２３８】
このように、両方のテーブル値に、線形補間または２次の多項式補間を施したときの相対誤差平均は、従来の量子化装置５１において、Ｎ＝１６のとき、つまりテーブルサイズSIZE＝65536としたときの相対誤差平均Ｔ＝5.10×10-6と比べて小さくなっており、演算精度が改善されていることが分かる。すなわち、より小さいテーブルサイズで、より高い演算精度が得られる。
【０２３９】
また、Ｎ＝１，・・・，８である場合、つまり仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズのSIZE＝２，・・・，２５６である場合、仮数の対数テーブルの値、および小数のべき乗テーブルの値の両方の値に、補間処理を施さないとき、線形補間を施したとき、および２次の多項式補間を施したときのそれぞれの相対誤差平均Ｔとして、図１１に示す結果が得られた。
【０２４０】
なお、図中、「テーブルサイズ」の欄は、テーブルサイズのSIZEの数（個数）を示しており、文字「補間なし」、「線形補間」、および「２次補間」のそれぞれは、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、補間処理を施さない場合、線形補間を施す場合、および２次の多項式補間を施す場合のそれぞれを示している。
【０２４１】
図１１では、テーブルサイズが「８」で線形補間を行う場合と、テーブルサイズが「４」で２次の多項式補間を行う場合とで、「補間なし」のテーブルサイズが「２５６」のときの精度と同等の精度が実現されていることが分かる。
【０２４２】
すなわち、テーブルサイズが「２５６」で補間処理を行わない場合、相対誤差平均Ｔ＝5.44×10-3である。また、テーブルサイズが「８」で線形補間を行う場合、相対誤差平均Ｔ＝1.74×10-3であり、テーブルサイズが「４」で２次の多項式補間を行う場合、相対誤差平均Ｔ＝1.70×10-3である。このように、演算処理装置９１では、補間処理を行うことで、より少ないテーブルサイズ（テーブル数）で、より高い精度のべき乗の演算を行うことができる。
【０２４３】
なお、以上においては、仮数の対数テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。テーブルサイズが変更される場合、そのサイズに合わせて補間処理部１０４により行われる補間処理時のビット位置、つまり下位値Ｘh1または下位値Ｘh2の大きさも変更される。
【０２４４】
また、仮数の対数テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。さらに、補間処理として、線形補間や２次の多項式補間に限らず、３次以上の多項式補間やスプライン補間が施されるようにしてもよい。
【０２４５】
また、以上においては、入力値Ｘが２進数で表現されているので、底２の対数と、底２のべき乗をペアとして演算値Ｐを求めたが、入力値ＸがＭ進数で表現される場合には、底Ｍの対数（対数Ｚ）と、底Ｍのべき乗をペアとしても同様の演算で演算値Ｐを求めることができる。すなわち、そのような場合、対数Ｚ＝logMＰとされ、演算値Ｐ＝（Ｍ＾Ｚint）×（Ｍ＾Ｚamari）とされる。
【０２４６】
［第２の実施の形態］
図１２は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図１２において、図５における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
【０２４７】
演算処理装置１３１は、対数演算処理部１４１、べき乗演算処理部１４２、および整数変換部１０８から構成される。演算処理装置１３１では、対数演算処理部１４１に入力値Ｘおよびべき指数Ｙが供給される。
【０２４８】
対数演算処理部１４１は、供給された入力値Ｘおよびべき指数Ｙを用いて対数Ｚを求め、べき乗演算処理部１４２に供給する。べき乗演算処理部１４２は、対数演算処理部１４１からの対数Ｚから演算値Ｐを求め、整数変換部１０８に供給する。
【０２４９】
次に、図１３のフローチャートを参照して、演算処理装置１３１によるべき乗演算処理について説明する。
【０２５０】
ステップＳ７１において、対数演算処理部１４１は、対数演算処理を行って、対数Ｚを求め、べき乗演算処理部１４２に供給する。なお、対数演算処理の詳細は後述するが、この対数演算処理において、上述した式（６）の演算が行われて対数Ｚが算出される。
【０２５１】
ステップＳ７２において、べき乗演算処理部１４２は、演算値算出処理を行って演算値Ｐを求め、整数変換部１０８に供給する。なお、演算値算出処理の詳細は後述するが、この演算値算出処理において、上述した式（７）の演算が行われて演算値Ｐが算出される。
【０２５２】
その後、ステップＳ７３の処理が行われてべき乗演算処理は終了するが、ステップＳ７３の処理は、図６のステップＳ４９の処理と同様であるので、その説明は省略する。
【０２５３】
ところで、対数演算処理を行う対数演算処理部１４１の実現方法として、いくつかの方法が考えられる。
【０２５４】
例えば、対数演算処理部１４１では、式（６）の演算が行われて対数Ｚが求められるが、対数Ｚにおける、入力値Ｘの仮数部分（１+Ｘ1／２23）の取り得る値の範囲は、1.0≦（１+Ｘ1／２23）＜2.0であり、式（６）における対数の演算の底も「２」と定められている。したがって、式（６）における対数値（log2（１+Ｘ1／２23））の演算を行うための処理量はそれほど多くない。
【０２５５】
そこで、対数演算処理部１４１を、底２の対数の演算を行う演算装置から構成すれば、高速で対数Ｚを算出する演算処理を行うことのできる対数演算処理部１４１を実現することができる。この場合、演算装置として、対数値（log2（１+Ｘ1／２23））を求める専用の演算装置を用意すれば、汎用の演算装置を用いる場合よりも、対数演算処理部１４１の構成を簡単な構成とすることができる。
【０２５６】
そのような場合、対数演算処理部１４１は、図１４に示すように構成される。なお、図１４において、図５における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
【０２５７】
図１４の対数演算処理部１４１は、仮数／指数分離部１０１および対数演算部１７１から構成される。また、対数演算処理部１４１では、仮数／指数分離部１０１に入力値Ｘが供給され、対数演算部１７１にべき指数Ｙが供給される。
【０２５８】
対数演算部１７１は、対数の演算を行う演算装置などから構成され、供給されたべき指数Ｙと、仮数／指数分離部１０１から供給された仮数Ｘ1および指数Ｘ2とを用いて、演算装置により対数Ｚを求め、図１２のべき乗演算処理部１４２に供給する。
【０２５９】
次に、図１５のフローチャートを参照して、図１３のステップＳ７１の処理に対応する処理である対数演算処理について説明する。なお、ステップＳ９１の処理は、図６のステップＳ４３の処理と同様であるので、その説明は省略する。
【０２６０】
ステップＳ９２において、対数演算部１７１は、供給されたべき指数Ｙと、仮数／指数分離部１０１からの仮数Ｘ1および指数Ｘ2とから、演算装置を用いて式（６）を計算し、対数Ｚを求める。
【０２６１】
すなわち、対数演算部１７１は、内蔵している演算装置を用いて、仮数／指数分離部１０１からの仮数Ｘ1から、２を底とする入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））を求める。このとき、仮数Ｘ1は、２３ビット目に小数点位置がある整数型のデータとされているので、浮動小数点型のデータに変換されて対数値の演算が行われる。
【０２６２】
さらに、対数演算部１７１は、求めた対数値、供給されたべき指数Ｙ、および仮数／指数分離部１０１からの指数Ｘ2を式（６）に代入して対数Ｚの値を求め、対数Ｚをべき乗演算処理部１４２に供給する。べき乗演算処理部１４２に対数Ｚが供給されると、対数演算処理は終了し、処理は図１３のステップＳ７２に進む。
【０２６３】
このようにして対数演算処理部１４１は、演算装置を利用して対数Ｚを求める。これにより、仮数の対数テーブルが不要となり、対数演算処理部１４１の小型化を図ることができる。
【０２６４】
また、図１４では、対数演算処理部１４１が演算装置を利用して演算を行う例について説明したが、仮数の対数テーブルが利用されて対数Ｚが求められるようにしてもよい。そのような場合、対数演算処理部１４１は、例えば図１６に示すように構成される。なお、図１６において、図５における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
【０２６５】
図１６の対数演算処理部１４１は、仮数／指数分離部１０１、仮数の対数テーブル保持部１０２、および対数演算部２０１から構成される。また、対数演算処理部１４１では、仮数／指数分離部１０１に入力値Ｘが供給され、対数演算部２０１にべき指数Ｙが供給される。
【０２６６】
対数演算部２０１は、供給されたべき指数Ｙと、仮数／指数分離部１０１からの仮数Ｘ1および指数Ｘ2とを用いて、仮数の対数テーブル保持部１０２の仮数の対数テーブルを参照しながら対数Ｚを求め、求めた対数Ｚを図１２のべき乗演算処理部１４２に供給する。
【０２６７】
次に、図１７のフローチャートを参照して、図１３のステップＳ７１の処理に対応する処理である対数演算処理について説明する。
【０２６８】
なお、ステップＳ１２１およびステップＳ１２２の処理は、図６のステップＳ４１およびステップＳ４３の処理と同様であるので、その説明は省略する。
【０２６９】
但し、ステップＳ１２１において、仮数の対数テーブル保持部１０２は、仮数の対数テーブルのテーブルサイズを２N＝SIZEとして、上述した式（２１）に示されるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。したがって、変数ｉ＝０，・・・，（SIZE−１）とされる。
【０２７０】
仮数の対数テーブルが生成され、入力値Ｘの仮数Ｘ1および指数Ｘ2が求められると、ステップＳ１２３において、対数演算部２０１は、仮数／指数分離部１０１からの仮数Ｘ1を用いて、仮数の対数テーブル保持部１０２の仮数の対数テーブルを利用し、入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））を求める。
【０２７１】
すなわち、対数演算部２０１は、仮数Ｘ1を用いて式（２３）を計算して、仮数Ｘ1の２２ビット目から上位Ｎビットの値をインデックスindex1として求め、そのインデックスindex1を用いて式（５３）により、入力値Ｘの仮数部分の対数値を求める。
【０２７２】
【数５３】
2010033318.tif 000055
【０２７３】
具体的には、対数演算部２０１は、仮数Ｘ1から抽出した上位Ｎビットの値をインデックスindex1とし、インデックスindex1を変数ｉの値としたテーブル値logtable[index1]を、仮数の対数テーブル保持部１０２の仮数の対数テーブルから取得する。そして、この取得されたテーブル値logtable[index1]が、入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））とされる。
【０２７４】
ステップＳ１２４において、対数演算部２０１は、仮数／指数分離部１０１からの指数Ｘ2、供給されたべき指数Ｙ、および求めた対数値（log2（１+Ｘ1／２23））を、式（６）に代入して対数Ｚを求め、対数Ｚをべき乗演算処理部１４２に供給する。対数Ｚが求められると、対数演算処理は終了し、処理は図１３のステップＳ７２に進む。
【０２７５】
このようにして、対数演算処理部１４１は、仮数の対数テーブルを利用して対数Ｚを求める。
【０２７６】
なお、仮数の対数テーブルのテーブルサイズを減らすために、仮数の対数テーブルから得られたテーブル値に対して補間処理が行われるようにしてもよい。そのような場合、対数演算処理部１４１は、例えば、図１８に示すように構成される。なお、図１８において、図５における場合と対応する部分には同一の符号を付してあり、その説明は、適宜省略する。
【０２７７】
図１８の対数演算処理部１４１は、仮数／指数分離部１０１、仮数の対数テーブル保持部１０２、補間処理部１０４、および対数演算部２３１から構成される。また、対数演算処理部１４１では、仮数／指数分離部１０１に入力値Ｘが供給され、対数演算部２３１にべき指数Ｙが供給される。
【０２７８】
仮数／指数分離部１０１は、供給された入力値Ｘの仮数Ｘ1および指数Ｘ2を求め、仮数Ｘ1を補間処理部１０４に供給するとともに、指数Ｘ2を対数演算部２３１に供給する。補間処理部１０４は、仮数／指数分離部１０１からの仮数Ｘ1を用いて、仮数の対数テーブル保持部１０２の仮数の対数テーブルのテーブル値に補間処理を施して、入力値Ｘの仮数部分の対数値を求め、対数演算部２３１に供給する。
【０２７９】
対数演算部２３１は、仮数／指数分離部１０１からの指数Ｘ2、供給されたべき指数Ｙ、および補間処理部１０４からの対数値を用いて対数Ｚを求め、図１２のべき乗演算処理部１４２に供給する。
【０２８０】
次に、図１９のフローチャートを参照して、図１３のステップＳ７１の処理に対応する処理である対数演算処理について説明する。
【０２８１】
なお、ステップＳ１５１乃至ステップＳ１５３の処理のそれぞれは、図６のステップＳ４１、ステップＳ４３、およびステップＳ４４の処理のそれぞれと同様であるため、その説明は省略する。
【０２８２】
すなわち、仮数の対数テーブル保持部１０２により、式（２１）に示した仮数の対数テーブルが生成され、仮数／指数分離部１０１により入力値Ｘの仮数Ｘ1および指数Ｘ2が求められて、仮数Ｘ1が補間処理部１０４に供給されるとともに、指数Ｘ2が対数演算部２３１に供給される。
【０２８３】
そして、補間処理部１０４により、仮数Ｘ1から式（２３）および式（２４）のインデックスindex1および下位値Ｘh1が求められ、インデックスindex1が用いられて仮数の対数テーブルからテーブル値が取得される。さらに、補間処理部１０４により、下位値Ｘh1と、テーブル値とから線形補間、２次の多項式補間等の補間処理が行われて、入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））が求められる。このようにして求められた補間値は、入力値Ｘの仮数部分の最終的な対数値として、補間処理部１０４から対数演算部２３１に供給される。
【０２８４】
なお、生成される仮数の対数テーブルのテーブルサイズは、補間処理部１０４により行われる補間処理に応じて定められる。例えば、補間処理として、２次の多項式補間が行われる場合には、テーブルサイズは、２N＋２＝SIZE＋２とされる。
【０２８５】
ステップＳ１５４において、対数演算部２３１は、仮数／指数分離部１０１からの指数Ｘ2、供給されたべき指数Ｙ、および補間処理部１０４からの対数値（log2（１+Ｘ1／２23））を用いて式（６）を計算し、対数Ｚを求める。そして、対数演算部２３１が、求めた対数Ｚをべき乗演算処理部１４２に供給すると、対数演算処理は終了し、処理は図１３のステップＳ７２に進む。
【０２８６】
このようにして、対数演算処理部１４１は、仮数の対数テーブルから取得したテーブル値を用いて補間処理を行い、補間処理により得られた対数値から、対数Ｚを求める。
【０２８７】
また、図１２の演算処理装置１３１では、対数演算処理部１４１と同様に、べき乗演算処理部１４２についても、いくつかの実現方法が考えられる。
【０２８８】
例えば、べき乗演算処理部１４２では、式（７）の演算が行われて演算値Ｐが求められるが、式（７）のべき乗値（２＾Ｚamari）における小数Ｚamariの取り得る値の範囲は、0≦Ｚamari＜1.0である。したがって、べき乗値（２＾Ｚamari）の演算を行うための処理量はそれほど多くない。
【０２８９】
そこで、べき乗演算処理部１４２を、２のべき乗の演算を行う演算装置から構成すれば、高速で演算値Ｐを算出する演算処理を行うことのできるべき乗演算処理部１４２を実現することができる。この場合、演算装置として、べき乗値（２＾Ｚamari）を求める専用の演算装置を用意すれば、汎用の演算装置を用いる場合よりも、べき乗演算処理部１４２の構成を簡単な構成とすることができる。
【０２９０】
そのような場合、べき乗演算処理部１４２は、図２０に示すように構成される。
【０２９１】
図２０に示すべき乗演算処理部１４２は、整数／小数分離部２６１およびべき乗演算部２６２から構成される。また、べき乗演算処理部１４２では、対数演算処理部１４１からの対数Ｚは、整数／小数分離部２６１に供給される。
【０２９２】
整数／小数分離部２６１は、対数演算処理部１４１から供給された対数Ｚの整数Ｚintおよび小数Ｚamariを求めてべき乗演算部２６２に供給する。べき乗演算部２６２は、整数／小数分離部２６１からの整数Ｚintおよび小数Ｚamariを用い、演算装置を利用して演算値Ｐを求め、図１２の整数変換部１０８に供給する。
【０２９３】
次に、図２１のフローチャートを参照して、図１３のステップＳ７２の処理に対応する処理である演算値算出処理について説明する。
【０２９４】
ステップＳ１８１において、整数／小数分離部２６１は、対数演算処理部１４１から供給された対数Ｚから、次式（５４）および式（５５）を計算して、整数Ｚintおよび小数Ｚamariを求める。
【０２９５】
【数５４】
2010033318.tif 000056
【０２９６】
【数５５】
2010033318.tif 000057
【０２９７】
すなわち、整数／小数分離部２６１は、対数Ｚの整数部分を抽出して整数Ｚintとするとともに、対数Ｚから、対数Ｚの整数部分を減算して得られる値を小数Ｚamariとする。このようにして求められた整数Ｚintおよび小数Ｚamariは、整数／小数分離部２６１からべき乗演算部２６２に供給される。
【０２９８】
ステップＳ１８２において、べき乗演算部２６２は、内蔵する演算装置を用いて、整数／小数分離部２６１から供給された小数Ｚamariから、小数Ｚamariをべき指数とする底「２」のべき乗値（２＾Ｚamari）を求める。
【０２９９】
ステップＳ１８３において、べき乗演算部２６２は、整数／小数分離部２６１からの整数Ｚint、および求めたべき乗値（２＾Ｚamari）から演算値Ｐを求めて整数変換部１０８に供給する。
【０３００】
すなわち、べき乗演算部２６２は、整数／小数分離部２６１からの整数Ｚintを、上述した式（５０）に代入することで、整数Ｚintをべき指数とする底２のべき乗値（２＾Ｚint）を求める。さらに、べき乗演算部２６２は、求めたべき乗値（２＾Ｚint）およびべき乗値（２＾Ｚamari）を式（５１）に代入して演算値Ｐを求める。ここで、演算値Ｐは、浮動小数点型のデータとされる。演算値Ｐが求められ、整数変換部１０８に供給されると、演算値算出処理は終了し、処理は図１３のステップＳ７３に進む。
【０３０１】
このようにして、べき乗演算処理部１４２は、演算装置を利用して演算値Ｐを求める。これにより、小数のべき乗テーブルが不要となり、べき乗演算処理部１４２の小型化を図ることができる。
【０３０２】
また、図２０では、べき乗演算処理部１４２が演算装置を利用して演算を行う例について説明したが、小数のべき乗テーブルが利用されて演算値Ｐが求められるようにしてもよい。そのような場合、べき乗演算処理部１４２は、例えば図２２に示すように構成される。なお、図２２において、図５における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
【０３０３】
図２２のべき乗演算処理部１４２は、整数／小数分離部１０６、小数のべき乗テーブル保持部１０３、およびべき乗演算部３０１から構成される。また、べき乗演算処理部１４２では、対数演算処理部１４１からの対数Ｚは、整数／小数分離部１０６に供給される。
【０３０４】
整数／小数分離部１０６は、対数演算処理部１４１から供給された対数Ｚの整数Ｚintおよび小数Ｚamariを求めてべき乗演算部３０１に供給する。べき乗演算部３０１は、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルを参照しながら、整数／小数分離部１０６からの整数Ｚintおよび小数Ｚamariを用いて、演算値Ｐを求め、図１２の整数変換部１０８に供給する。
【０３０５】
次に、図２３のフローチャートを参照して、図１３のステップＳ７２の処理に対応する処理である演算値算出処理について説明する。
【０３０６】
なお、ステップＳ２１１およびステップＳ２１２の処理は、図６のステップＳ４２およびステップＳ４６の処理と同様であるので、その説明は省略する。
【０３０７】
但し、ステップＳ２１１において、小数のべき乗テーブル保持部１０３は、小数のべき乗テーブルのテーブルサイズを２N＝SIZEとして、上述した式（２２）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。したがって、変数ｉ＝０，・・・，（SIZE−１）とされる。さらに、小数のべき乗テーブルが生成され、上述した式（３５）および式（３６）により整数Ｚintおよび小数Ｚamariが求められると、処理はステップＳ２１２からステップＳ２１３に進む。
【０３０８】
ステップＳ２１３において、べき乗演算部３０１は、整数／小数分離部１０６からの小数Ｚamariを用いて、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルを利用し、小数Ｚamariをべき指数とする底２のべき乗値（２＾Ｚamari）を求める。
【０３０９】
すなわち、べき乗演算部３０１は、小数Ｚamariを用いて式（３７）および式（３８）を計算し、小数Ｚamariの２２ビット目から上位Ｎビットの値をインデックスindex2として求める。さらに、べき乗演算部３０１は、そのインデックスindex2を用いて次式（５６）により、べき乗値（２＾Ｚamari）を求める。
【０３１０】
【数５６】
2010033318.tif 000058
【０３１１】
具体的には、べき乗演算部３０１は、小数Ｚamariから抽出した上位Ｎビットの値をインデックスindex2とし、インデックスindex2を変数ｉの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部１０３の小数のべき乗テーブルから取得する。そして、この取得されたテーブル値twotable[index2]が、べき乗値（２＾Ｚamari）とされる。
【０３１２】
ステップＳ２１４において、べき乗演算部３０１は、整数／小数分離部１０６からの整数Ｚint、および求めたべき乗値（２＾Ｚamari）から演算値Ｐを求める。
【０３１３】
すなわち、べき乗演算部３０１は、整数／小数分離部１０６からの整数Ｚintから、上述した式（５０）を計算することにより、べき乗値（２＾Ｚint）を求める。さらに、べき乗演算部３０１は、求めたべき乗値（２＾Ｚamari）およびべき乗値（２＾Ｚint）を式（５１）に代入して、演算値Ｐを求め、整数変換部１０８に供給する。演算値Ｐが求められると、演算値算出処理は終了し、処理は図１３のステップＳ７３に進む。
【０３１４】
このようにして、べき乗演算処理部１４２は、小数のべき乗テーブルを利用して演算値Ｐを求める。
【０３１５】
なお、小数のべき乗テーブルのテーブルサイズを減らすために、小数のべき乗テーブルから得られたテーブル値に対して補間処理が行われるようにしてもよい。そのような場合、べき乗演算処理部１４２は、例えば、図２４に示すように構成される。なお、図２４において、図５における場合と対応する部分には同一の符号を付してあり、その説明は、適宜省略する。
【０３１６】
図２４のべき乗演算処理部１４２は、小数のべき乗テーブル保持部１０３、補間処理部１０４、整数／小数分離部１０６、およびべき乗演算部１０７から構成される。また、べき乗演算処理部１４２では、対数演算処理部１４１からの対数Ｚは、整数／小数分離部１０６に供給される。
【０３１７】
整数／小数分離部１０６は、対数演算処理部１４１から供給された対数Ｚの整数Ｚintおよび小数Ｚamariを求め、小数Ｚamariを補間処理部１０４に供給するとともに、整数Ｚintをべき乗演算部１０７に供給する。べき乗演算部１０７は、整数／小数分離部１０６からの整数Ｚintと、補間処理部１０４からのべき乗値（２＾Ｚamari）とから演算値Ｐを求め、図１２の整数変換部１０８に供給する。
【０３１８】
次に、図２５のフローチャートを参照して、図１３のステップＳ７２の処理に対応する処理である演算値算出処理について説明する。
【０３１９】
なお、ステップＳ２４１乃至ステップＳ２４３の処理のそれぞれは、図６のステップＳ４２、ステップＳ４６、およびステップＳ４７の処理のそれぞれと同様であるため、その説明は省略する。
【０３２０】
すなわち、小数のべき乗テーブル保持部１０３により、例えば式（２２）に示した小数のべき乗テーブルが生成され、整数／小数分離部１０６により、対数演算処理部１４１からの対数Ｚから、式（３５）および式（３６）が計算されて整数Ｚintおよび小数Ｚamariが求められる。そして、整数Ｚintは整数／小数分離部１０６からべき乗演算部１０７に供給され、小数Ｚamariは、整数／小数分離部１０６から補間処理部１０４に供給される。
【０３２１】
さらに、補間処理部１０４により、小数Ｚamariから式（３７）乃至式（３９）が計算されて、インデックスindex2および下位値Ｘh2が求められ、インデックスindex2が用いられて小数のべき乗テーブルからテーブル値が取得される。その後、補間処理部１０４により、下位値Ｘh2と、テーブル値とから線形補間、２次の多項式補間等の補間処理が行われて、小数Ｚamariをべき指数とする２のべき乗値の補間値（２＾Ｚamari）が求められる。求められた補間値は、最終的なべき乗値（２＾Ｚamari）とされて補間処理部１０４からべき乗演算部１０７に供給される。
【０３２２】
ステップＳ２４４において、べき乗演算部１０７は、整数／小数分離部１０６からの整数Ｚint、および補間処理部１０４からのべき乗値（２＾Ｚamari）から演算値Ｐを求める。
【０３２３】
すなわち、べき乗演算部１０７は、整数／小数分離部１０６からの整数Ｚintから、上述した式（５０）を計算することにより、べき乗値（２＾Ｚint）を求める。さらに、べき乗演算部１０７は、補間処理部１０４からのべき乗値（２＾Ｚamari）およびべき乗値（２＾Ｚint）を式（５１）に代入して、演算値Ｐを求め、整数変換部１０８に供給する。演算値Ｐが求められると、演算値算出処理は終了し、処理は図１３のステップＳ７３に進む。
【０３２４】
このようにして、べき乗演算処理部１４２は、小数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、補間処理により得られたべき乗値から演算値Ｐを求める。
【０３２５】
［第３の実施の形態］
ところで、以上においては、演算値Ｐを整数化する場合に、演算値Ｐに定数αを加算してから整数化が行われると説明した。例えば、式（１）に示したように、オーディオ信号の量子化などの多くの規格等においては、べき指数Ｙの値が決められていることが多いので、定数αを演算値Ｐに加算するのではなく、予め入力値Ｘにα1/Yを加算しておくとことで、簡単な演算で演算値の整数部分を得ることができるようになる。
【０３２６】
すなわち、これまでの入力値（上述した入力値Ｘ）をＸ’とすると、Ｘ’にα1/Yが加算された値を新たな入力値Ｘ＝Ｘ’＋α1/Yとしてべき乗演算に用いることにする。例えば、式（１）に示したオーディオ信号の量子化の場合には、入力値Ｘ＝Ｘ’＋α4/3とされる。
【０３２７】
このように、定数αの１／Ｙ乗の値が変数Ｘ’に加算されて入力値Ｘとされる場合、演算処理装置は、図２６に示すように構成される。なお、図２６において、図５における場合と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
【０３２８】
演算処理装置３３１は、仮数／指数分離部１０１、仮数の対数テーブル保持部３４１、小数のべき乗テーブル保持部３４２、対数演算部３４３、整数／小数分離部３４４、およびべき乗整数変換部３４５から構成される。
【０３２９】
演算処理装置３３１では、仮数／指数分離部１０１に、入力値Ｘ＝Ｘ’＋α1/Yが供給され、対数演算部３４３にべき指数Ｙが供給される。すなわち、演算処理装置３３１は、変数Ｘ’に定数α1/Yを加算して入力値Ｘとし、その入力値Ｘを仮数／指数分離部１０１に供給する。
【０３３０】
仮数の対数テーブル保持部３４１および小数のべき乗テーブル保持部３４２は、仮数の対数テーブルおよび小数のべき乗テーブルを保持しており、インデックスindex1およびインデックスindex2により特定されるテーブル値を、対数演算部３４３およびべき乗整数変換部３４５に供給する。
【０３３１】
対数演算部３４３は、仮数／指数分離部１０１から供給された、入力値Ｘの仮数Ｘ1および指数Ｘ2を用いて式（６）により、対数Ｚを求め、整数／小数分離部３４４に供給する。その際、対数演算部３４３は、仮数の対数テーブル保持部３４１から、仮数Ｘ1から得られるインデックスindex1により特定されるテーブル値を、入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））として取得する。
【０３３２】
整数／小数分離部３４４は、対数演算部３４３からの対数Ｚを、整数Ｚintおよび小数Ｚamariに分離し、べき乗整数変換部３４５に供給する。べき乗整数変換部３４５は、小数のべき乗テーブル保持部３４２の小数のべき乗テーブルを参照し、整数／小数分離部３４４からの整数Ｚintおよび小数Ｚamariを用いて演算値（Ｐ＋α）の整数部分を求め、出力する。ここで、演算値（Ｐ＋α）は、演算値Ｐ＝Ｘ’Yに定数αが加算された値、つまり演算値（Ｐ＋α）＝ＸYであり、整数化の対象となる値である。
【０３３３】
次に、図２７のフローチャートを参照して、演算処理装置３３１によるべき乗演算処理について説明する。
【０３３４】
ステップＳ２７１において、仮数の対数テーブル保持部３４１は、仮数の対数テーブルを生成する。すなわち、仮数の対数テーブル保持部３４１は、仮数の対数テーブルのテーブルサイズを２N＝SIZEとすると、次式（５７）に示される、仮数Ｘ1の値に対する、２を底とする入力値Ｘの仮数部分の対数値であるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。
【０３３５】
【数５７】
2010033318.tif 000059
【０３３６】
ここで、テーブル値logtable[i]の変数ｉは、仮数Ｘ1から求まるインデックスindex1の値を示しており、変数ｉ＝０，・・・，（SIZE−１）とされる。仮数の対数テーブル保持部３４１は、（SIZE）個の各変数の値ｉのそれぞれに対する、テーブル値logtable[i]のそれぞれを求めると、それらの値ｉとテーブル値logtable[i]とを対応付けて仮数の対数テーブルを生成し、保持する。
【０３３７】
ステップＳ２７２において、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルのテーブルサイズを２N＝SIZEとすると、次式（５８）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
【０３３８】
【数５８】
2010033318.tif 000060
【０３３９】
ここで、テーブル値twotable[i]の変数ｉは、小数Ｚamariから求まり、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数ｉ＝０，・・・，（SIZE−１）とされる。
【０３４０】
インデックスindex2を、小数Ｚamariの上位何ビットかの値とすれば、式（５８）における２(i/SIZE)は、小数Ｚamariの値をべき指数とし、底を２とするべき乗値２＾Ｚamariの近似値となる。さらに、式（５８）では、近似値２(i/SIZE)に２23が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が２３ビット目にある固定小数点数（固定小数点型の２進数のデータ）とされる。
【０３４１】
小数のべき乗テーブル保持部３４２は、（SIZE）個の各変数の値ｉのそれぞれに対する、テーブル値twotable[i]のそれぞれを求めると、それらの値ｉとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
【０３４２】
なお、仮数の対数テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Ｘのべき乗演算前に１度行っておけばよい。つまり、１度これらのテーブルを生成しておけば、その後、入力値Ｘのべき乗演算を行うときは、既に生成されて保持されている仮数の対数テーブルおよび小数のべき乗テーブルを用いればよい。
【０３４３】
ステップＳ２７３において、仮数／指数分離部１０１は、供給された入力値Ｘの仮数Ｘ1および指数Ｘ2を求めて対数演算部３４３に供給する。
【０３４４】
ステップＳ２７４において、対数演算部３４３は、仮数／指数分離部１０１からの仮数Ｘ1および指数Ｘ2を用いて式（６）により、２を底とする演算値（Ｐ＋α）の対数Ｚを求め、整数／小数分離部３４４に供給する。なお、この場合、式（６）における演算値Ｐが、演算値（Ｐ＋α）とされる。
【０３４５】
例えば、対数演算部３４３は、仮数Ｘ1を用いて式（２３）を計算して、仮数Ｘ1の２２ビット目から上位Ｎビットの値をインデックスindex1として求め、そのインデックスindex1を用いて式（５３）により、入力値Ｘの仮数部分の対数値を求める。
【０３４６】
具体的には、対数演算部３４３は、仮数Ｘ1から抽出した上位Ｎビットの値をインデックスindex1とし、インデックスindex1を変数ｉの値としたテーブル値logtable[index1]を、仮数の対数テーブル保持部３４１の仮数の対数テーブルから取得する。そして、この取得されたテーブル値logtable[index1]が、入力値Ｘの仮数部分の対数値（log2（１+Ｘ1／２23））とされる。
【０３４７】
さらに、対数演算部３４３は、供給されたべき指数Ｙ、仮数／指数分離部１０１からの指数Ｘ2、および取得した対数値（log2（１+Ｘ1／２23））から、対数Ｚ＝Ｙ（Ｘ2＋log2（１+Ｘ1／２23））を計算し、対数Ｚを得る。
【０３４８】
ステップＳ２７５において、整数／小数分離部３４４は、対数演算部３４３から供給された対数Ｚの整数Ｚintおよび小数Ｚamariを求めてべき乗整数変換部３４５に供給する。
【０３４９】
例えば、整数／小数分離部３４４は、対数Ｚを用いて次式（５９）を計算することにより、対数Ｚの整数Ｚintを求める。
【０３５０】
【数５９】
2010033318.tif 000061
【０３５１】
すなわち、対数Ｚが０以上である場合には、その対数Ｚの整数部分が抽出されて整数Ｚintとされ、対数Ｚが０未満である場合には、負の値「−２」が整数Ｚintとされる。
【０３５２】
また、整数／小数分離部３４４は、対数Ｚを用いて次式（６０）により小数Ｚamariを求める。
【０３５３】
【数６０】
2010033318.tif 000062
【０３５４】
式（６０）では、対数Ｚから、その対数Ｚの整数部分が減算されて得られる値（差分）に、さらに２23が乗算された値の整数部分が小数Ｚamariとされる。つまり、対数Ｚと対数Ｚの整数部分との差分を求めることで、対数Ｚの小数部分の値が求まる。そして、その小数部分の値に２23を乗算して、その結果得られる値の整数部分を抽出することで、対数Ｚの小数部分が、小数点が２３ビット目に位置する固定小数点数（固定小数点型の２進数のデータ）に変換される。
【０３５５】
ステップＳ２７６において、べき乗整数変換部３４５は、整数／小数分離部３４４からの整数Ｚintおよび小数Ｚamariを用いて、演算値（Ｐ＋α）の整数部分を求めて出力する。
【０３５６】
すなわち、べき乗整数変換部３４５は、小数Ｚamariを用いて式（３７）および式（３８）を計算し、小数Ｚamariの２２ビット目から上位Ｎビットの値をインデックスindex2として求める。さらに、べき乗整数変換部３４５は、そのインデックスindex2を用いて式（５６）により、べき乗値（２＾Ｚamari）を求める。
【０３５７】
具体的には、べき乗整数変換部３４５は、小数Ｚamariから抽出した上位Ｎビットの値をインデックスindex2とし、インデックスindex2を変数ｉの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部３４２の小数のべき乗テーブルから取得する。そして、この取得されたテーブル値twotable[index2]が、べき乗値（２＾Ｚamari）とされる。
【０３５８】
そして、べき乗整数変換部３４５は、求めたべき乗値（２＾Ｚamari）と、整数／小数分離部３４４からの整数Ｚintとから、次式（６１）を計算して、演算値（Ｐ＋α）の整数部分を求める。
【０３５９】
【数６１】
2010033318.tif 000063
【０３６０】
ここで、式（６１）において、「＞＞」は右シフトを示している。べき乗整数変換部３４５は、べき乗値（２＾Ｚamari）を（２３−Ｚint）ビットだけ右シフトさせて、演算値（Ｐ＋α）の整数部分の値（ｉｎｔ）（Ｐ＋α）を得る。
【０３６１】
なお、（２３−Ｚint）ビットの右シフトを行うのは、次のような理由からである。すなわち、テーブル引きにより求められたべき乗値（２＾Ｚamari）は、小数点位置が２３ビット目の位置にある固定小数点型のデータである。また、演算値（Ｐ＋α）を、底（基数）を用いずに（通常の小数で）表現するには、べき乗値（２＾Ｚamari）の値の小数点位置を、Ｚintだけ下位ビット側に移動（左シフト演算）させればよい。
【０３６２】
したがって、べき乗値（２＾Ｚamari）の値を（２３−Ｚint）ビットだけ右シフトすれば、演算値（Ｐ＋α）の整数部分の値が得られる。
【０３６３】
また、対数Ｚが負である場合、演算値（Ｐ＋α）は０≦Ｐ＋α＜１となるので、演算値（Ｐ＋α）の整数部をとると０となる。
【０３６４】
このように、演算値（Ｐ＋α）の整数部分を求めるために右シフト演算が行われ、またべき乗値（２＾Ｚamari）の最大値が２となることを考慮すると、整数Ｚintは、−２よりも大きい値とされる必要がある。そのため、上述した式（５９）の整数Ｚintを求める計算では、対数Ｚが０未満（負）である場合には、整数Ｚint＝−２とされる。
【０３６５】
このようにして、演算値（Ｐ＋α）の整数部分が求められると、べき乗整数変換部３４５は、演算値（Ｐ＋α）の整数部分、つまり整数化された演算値（Ｐ＋α）を出力し、べき乗演算処理は終了する。
【０３６６】
以上のようにして、演算処理装置３３１は、値Ｘ’に定数α1/Yが加算された値を新たな入力値Ｘとし、演算値（Ｐ＋α）の整数部を求める。
【０３６７】
このように、値Ｘ’にα1/Yが加算された値を新たな入力値Ｘとして、演算値（Ｐ＋α）の整数部分を求めることにより、より簡単かつ迅速に演算値（Ｐ＋α）の整数部分の値を求めることができる。すなわち、一旦、演算値Ｐを求めてから、さらに演算値（Ｐ＋α）の整数部分を求める必要がなく、べき乗値（２＾Ｚamari）および整数Ｚintから、直接、演算値（Ｐ＋α）の整数部分を求めることができる。これにより、図５の整数変換部１０８に相当する処理ブロックが不要となり、演算処理装置３３１の小型化も図ることができる。
【０３６８】
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。また、入力値ＸをＭ進数で表現し、底Ｍの対数（対数Ｚ）と、底Ｍのべき乗とから演算値（Ｐ＋α）の整数部分を求めるようにしてもよい。
【０３６９】
［第４の実施の形態］
ところで、上述した第３の実施の形態の演算処理装置３３１では、仮数の対数テーブルや小数のべき乗テーブルの値の補間処理が行われないため、べき乗の演算精度、つまり演算値の整数部分の演算精度を向上させるには、それらのテーブルのサイズを大きくする必要がある。
【０３７０】
具体的に、演算処理装置３３１により、仮数の対数テーブルおよび小数のべき乗テーブルが用いられて算出された演算値（Ｐ＋α）の整数部分Ｒと、数学ライブラリを用いた計算により得られた演算値（Ｐ＋α）の整数部分ＱとからなるＬ個のデータのセットを用いて、次式（６２）を計算し、絶対誤差平均Ｕを求めて整数部分Ｒの算出精度を評価することを考える。
【０３７１】
【数６２】
2010033318.tif 000064
【０３７２】
なお、式（６２）において、Ｒiは、演算処理装置３３１により算出された整数部分ＲのＬ個の整数部分（サンプル）のうちのｉ番目のサンプルを示しており、Ｑiは、数学ライブラリにより求められた、Ｒiに対応する整数部分の値を示している。
【０３７３】
例えば、Ｌ＝8192として整数部分Ｒの算出精度の評価を行ったところ、テーブルサイズにおけるＮが８であるとき、すなわちSIZE＝256のとき、絶対誤差平均Ｕ＝1.78×101となり、それほど高い精度は得られなかった。また、テーブルサイズにおけるＮが１６であるとき、すなわちSIZE＝65536のとき、絶対誤差平均Ｕ＝1.56×10-2となり、Ｎ＝８の場合よりも高い精度が得られた。
【０３７４】
このような絶対誤差平均Ｕによる評価の結果からも分かるように、演算処理装置３３１においては、演算値（Ｐ＋α）の整数部分の演算精度を向上させるには、仮数の対数テーブルや小数のべき乗テーブルのサイズを大きくする必要がある。
【０３７５】
そこで、入力値Ｘ＝Ｘ’＋α1/Yとし、仮数の対数テーブルおよび小数のべき乗テーブルの値の補間処理を行うようにすることで、より簡単に演算値を整数化するとともに、整数化の演算精度を向上させる。
【０３７６】
そのような場合、演算処理装置は、例えば図２８に示すように構成される。なお、図２８において、図５、または図２６における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
【０３７７】
演算処理装置３７１は、仮数／指数分離部１０１、仮数の対数テーブル保持部１０２、補間処理部１０４、対数演算部１０５、小数のべき乗テーブル保持部３４２、整数／小数分離部３８１、およびべき乗整数変換部３８２から構成される。
【０３７８】
演算処理装置３７１では、入力値Ｘ＝Ｘ’＋α1/Yが仮数／指数分離部１０１に供給され、べき指数Ｙが対数演算部１０５に供給される。
【０３７９】
整数／小数分離部３８１は、対数演算部１０５から供給された対数Ｚの整数Ｚintおよび小数Ｚamariを求めて、整数Ｚintをべき乗整数変換部３８２に供給するとともに、小数Ｚamariを補間処理部１０４に供給する。
【０３８０】
べき乗整数変換部３８２は、補間処理部１０４から供給された、小数Ｚamariをべき指数とする２のべき乗値と、整数／小数分離部３８１からの整数Ｚintとを用いて、演算値（Ｐ＋α）の整数部分を求め、出力する。ここで、演算値（Ｐ＋α）は、演算値Ｐ＝Ｘ’Yに定数αが加算された値、つまり演算値（Ｐ＋α）＝ＸYである。
【０３８１】
次に、図２９のフローチャートを参照して、演算処理装置３７１によるべき乗演算処理について説明する。
【０３８２】
なお、ステップＳ３０１の処理は、図６のステップＳ４１の処理と同様であるため、その説明は省略する。すなわち、例えば、仮数の対数テーブル保持部１０２により、式（２１）に示したテーブル値logtable[i]からなる仮数の対数テーブルが生成される。
【０３８３】
ステップＳ３０２において、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルを生成する。例えば、補間処理部１０４により補間処理として２次の多項式補間が行われる場合、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルのテーブルサイズを２N＋２＝SIZE＋２とする。そして、小数のべき乗テーブル保持部３４２は、上述した式（５８）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。この場合、変数ｉ＝０，・・・，（SIZE＋１）とされる。
【０３８４】
小数のべき乗テーブル保持部３４２は、（SIZE＋２）個の各変数の値ｉのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値ｉとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
【０３８５】
なお、補間処理として、補間処理部１０４により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは２N＋１＝SIZE＋１とされ、式（５８）のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
【０３８６】
その後、ステップＳ３０３およびステップＳ３０４の処理が行われるが、それらの処理は、図６のステップＳ４３およびステップＳ４４の処理と同様であるので、その説明は省略する。
【０３８７】
すなわち、仮数／指数分離部１０１により求められた入力値Ｘの仮数Ｘ1が補間処理部１０４に供給され、指数Ｘ2が対数演算部１０５に供給される。そして、補間処理部１０４により、仮数Ｘ1から式（２３）および式（２４）のインデックスindex1および下位値Ｘh1が求められ、インデックスindex1が用いられて仮数の対数テーブル保持部１０２の仮数の対数テーブルからテーブル値が取得される。
【０３８８】
さらに、補間処理部１０４により、下位値Ｘh1と、テーブル値とから線形補間、２次の多項式補間等の補間処理が行われて、入力値Ｘの仮数部分の対数値の補間値（log2（１+Ｘ1／２23））が求められる。このようにして求められた補間値は、最終的な入力値Ｘの仮数部分の対数値として、補間処理部１０４から対数演算部１０５に供給される。
【０３８９】
ステップＳ３０５において、対数演算部１０５は、仮数／指数分離部１０１からの指数Ｘ2、供給されたべき指数Ｙ、および補間処理部１０４からの対数値を用いて式（６）の演算を行い、２を底とする演算値（Ｐ＋α）の対数Ｚを求め、整数／小数分離部３８１に供給する。なお、この場合、式（６）における演算値Ｐが、演算値（Ｐ＋α）とされる。
【０３９０】
ステップＳ３０６において、整数／小数分離部３８１は、対数演算部１０５からの対数Ｚを用いて、式（５９）および式（６０）から対数Ｚの整数Ｚintおよび小数Ｚamariを求める。整数／小数分離部３８１は、求めた整数Ｚintをべき乗整数変換部３８２に供給するとともに、小数Ｚamariを補間処理部１０４に供給する。
【０３９１】
小数Ｚamariが補間処理部１０４に供給されると、ステップＳ３０７の処理が行われて、補間処理により、小数Ｚamariをべき指数とする２のべき乗値の補間値が求められるが、ステップＳ３０７の処理は、図６のステップＳ４７の処理と同様であるため、その説明は省略する。
【０３９２】
すなわち、補間処理部１０４により、小数Ｚamariから式（３７）乃至式（３９）が計算されて、インデックスindex2および下位値Ｘh2が求められる。そして、補間処理部１０４により、インデックスindex2が用いられて、小数のべき乗テーブル保持部３４２の小数のべき乗テーブルからテーブル値が取得される。その後、補間処理部１０４により、下位値Ｘh2と、テーブル値とから線形補間、２次の多項式補間等の補間処理が行われて、小数Ｚamariをべき指数とする２のべき乗値の補間値（２＾Ｚamari）が求められる。求められた補間値は、最終的なべき乗値（２＾Ｚamari）として、補間処理部１０４からべき乗整数変換部３８２に供給される。
【０３９３】
ステップＳ３０８において、べき乗整数変換部３８２は、整数／小数分離部３８１からの整数Ｚintと、補間処理部１０４からのべき乗値（２＾Ｚamari）とから、式（６１）を計算して、演算値（Ｐ＋α）の整数部分を求める。
【０３９４】
このようにして、演算値（Ｐ＋α）の整数部分が求められると、べき乗整数変換部３８２は、演算値（Ｐ＋α）の整数部分、つまり整数化された演算値（Ｐ＋α）を出力し、べき乗演算処理は終了する。
【０３９５】
以上のように、仮数の対数テーブルの値と、小数のべき乗テーブルの値とに補間処理を施すことで、それらのテーブルのテーブルサイズを増やさずに、簡単に演算値（Ｐ＋α）の整数部分を求める演算の精度を向上させることができる。
【０３９６】
具体的には、上述した式（６２）を計算して求まる絶対誤差平均Ｕにより、本出願人が演算処理装置３７１によって算出された演算値（Ｐ＋α）の整数部分Ｒの算出精度の評価を行ったところ、図３０に示す評価結果が得られた。
【０３９７】
図３０には、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズにおけるＮを８とし、すなわちSIZE＝256としたときの絶対誤差平均Ｕが示されている。
【０３９８】
文字「べき乗：補間なし」は、小数のべき乗テーブルの値を補間処理せずに整数部分Ｒの算出に用いたことを示している。文字「べき乗：線形補間」および「べき乗：２次補間」は、小数のべき乗テーブルの値に線形補間および２次の多項式補間を行って得られた値を、整数部分Ｒの算出に用いたことを示している。
【０３９９】
同様に、文字「対数：補間なし」は、仮数の対数テーブルの値を補間処理せずに整数部分Ｒの算出に用いたことを示している。文字「対数：線形補間」および「対数：２次補間」は、仮数の対数テーブルの値に線形補間および２次の多項式補間を行って得られた値を、整数部分Ｒの算出に用いたことを示している。
【０４００】
図３０では、仮数の対数テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、べき乗（より詳細にはべき乗の整数部分）の演算精度が改善されることが分かる。例えば、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとＵ＝8.06×10-3となり、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に２次の多項式補間を施すとＵ＝2.44×10-3となっている。
【０４０１】
このように、両方のテーブル値に、線形補間または２次の多項式補間を施したときの絶対誤差平均は、従来の量子化装置５１において、Ｎ＝１６のとき、つまりテーブルサイズSIZE＝65536としたときの絶対誤差平均と比べて小さくなることが確認されており、演算精度が改善されていることが分かる。すなわち、より小さいテーブルサイズで、より高い演算精度が得られる。
【０４０２】
なお、演算処理装置３７１では、仮数の対数テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。
【０４０３】
［第５の実施の形態］
図３１は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図３１において、図１２と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
【０４０４】
演算処理装置４１１は、対数演算処理部１４１、整数／小数分離部４２１、およびべき乗整数変換部４２２から構成される。演算処理装置４１１では、入力値Ｘ＝Ｘ’＋α1/Yおよびべき指数Ｙが、対数演算処理部１４１に供給される。
【０４０５】
対数演算処理部１４１は、図１２の対数演算処理部１４１と同様であり、例えば、図１４、図１６、または図１８に示した構成とされる。対数演算処理部１４１は、入力値Ｘから求めた対数Ｚを整数／小数分離部４２１に供給する。
【０４０６】
整数／小数分離部４２１は、対数演算処理部１４１からの対数Ｚの整数Ｚintおよび小数Ｚamariを求めて、べき乗整数変換部４２２に供給する。べき乗整数変換部４２２は、整数／小数分離部４２１からの整数Ｚintおよび小数Ｚamariを用いて、シフト演算により演算値（Ｐ＋α）の整数部分を求めて出力する。ここで、演算値（Ｐ＋α）は、演算値Ｐ＝Ｘ’Yに定数αが加算された値、つまり演算値（Ｐ＋α）＝ＸYである。
【０４０７】
次に、図３２のフローチャートを参照して、演算処理装置４１１によるべき乗演算処理について説明する。なお、ステップＳ３３１の処理は、図１３のステップＳ７１の処理と同様であるので、その説明は省略する。
【０４０８】
ステップＳ３３２において、整数／小数分離部４２１は、対数演算処理部１４１からの対数Ｚを用いて、式（５９）および式（６０）から対数Ｚの整数Ｚintおよび小数Ｚamariを求める。式（６０）の計算では、小数Ｚamariが、２３ビット目に小数点が位置するように固定小数点化される。整数／小数分離部４２１は、求めた整数Ｚintおよび小数Ｚamariを、べき乗整数変換部４２２に供給する。
【０４０９】
ステップＳ３３３において、べき乗整数変換部４２２は、整数／小数分離部４２１からの整数Ｚintおよび小数Ｚamariを用いて演算値（Ｐ＋α）の整数部分を求める。
【０４１０】
例えば、べき乗整数変換部４２２は、整数／小数分離部４２１から供給された小数Ｚamariを用いて、べき乗整数変換部４２２に内蔵されている演算装置により、小数Ｚamariをべき指数とするべき乗値（２＾Ｚamari）を求める。
【０４１１】
ここで、小数Ｚamariの取り得る値の範囲は、０≦Ｚamari＜１．０であり、べき乗値の底は、予め２と定められている。したがって、底２のべき乗演算を高速で行う専用の演算装置を利用してべき乗値（２＾Ｚamari）を求めれば、汎用の演算装置を用いる場合よりも、べき乗整数変換部４２２の構成を簡単にすることができ、小型化を図ることができる。
【０４１２】
べき乗整数変換部４２２は、べき乗値（２＾Ｚamari）を求めると、そのべき乗値と、整数／小数分離部４２１からの整数Ｚintとから、次式（６３）を計算して、演算値（Ｐ＋α）の整数部分を求める。
【０４１３】
【数６３】
2010033318.tif 000065
【０４１４】
ここで、式（６３）において、「＞＞」は右シフトを示している。べき乗整数変換部４２２は、べき乗値（２＾Ｚamari）に２23を乗算して得られる値の整数部分を求めることで、べき乗値（２＾Ｚamari）を、小数点位置が２３ビット目にある固定小数点に変換する。そして、べき乗整数変換部４２２は、固定小数点化されたべき乗値（ｉｎｔ）（（２＾Ｚamari）×２23）を、（２３−Ｚint）ビットだけ右シフトさせて、演算値（Ｐ＋α）の整数部分の値（ｉｎｔ）（Ｐ＋α）を得る。
【０４１５】
なお、（２３−Ｚint）ビットの右シフトを行うのは、上述した式（６１）における場合と同様に、べき乗値（ｉｎｔ）（（２＾Ｚamari）×２23）は、小数点位置が２３ビット目の位置にある固定小数点型のデータであり、べき乗値（ｉｎｔ）（（２＾Ｚamari）×２23）の小数点位置を、（２３−Ｚint）ビットだけ下位ビット側に移動させると、演算値（Ｐ＋α）の整数部分が抽出されるからである。
【０４１６】
べき乗整数変換部４２２は、このようにして、演算値（Ｐ＋α）の整数部分を求めると、求めた整数部分を出力し、べき乗演算処理は終了する。
【０４１７】
なお、演算処理装置４１１においては、演算の対象となる数値が２進数で表現されるため、２を底とする対数と、２を底とするべき乗とを求めることで、演算値（Ｐ＋α）の整数部分を求めたが、入力値ＸがＭ進数で表現される場合には、底Ｍの対数（対数Ｚ）と、底Ｍのべき乗をペアとしても同様の演算で演算値（Ｐ＋α）の整数部分を求めることができる。
【０４１８】
また、演算処理装置４１１では、べき乗整数変換部４２２が、演算装置を利用して２を底とするべき乗の演算を行うと説明したが、小数のべき乗テーブルが利用されてべき乗値が求められるようにしてもよい。
【０４１９】
そのような場合、演算処理装置は、例えば、図３３に示すように構成される。なお、図３３において、図３１または図２６と対応する部分には、同一の符号を付してあり、その説明は、適宜、省略する。
【０４２０】
演算処理装置４５１は、小数のべき乗テーブル保持部３４２、対数演算処理部１４１、整数／小数分離部４２１、およびべき乗整数変換部３４５から構成される。演算処理装置４５１では、入力値Ｘ＝Ｘ’＋α1/Yおよびべき指数Ｙが、対数演算処理部１４１に供給される。
【０４２１】
べき乗整数変換部３４５は、小数のべき乗テーブル保持部３４２の小数のべき乗テーブルを参照しながら、整数／小数分離部４２１からの整数Ｚintおよび小数Ｚamariを用いて、シフト演算により演算値（Ｐ＋α）の整数部分を求めて出力する。ここで、演算値（Ｐ＋α）は、演算値Ｐ＝Ｘ’Yに定数αが加算された値、つまり演算値（Ｐ＋α）＝ＸYである。
【０４２２】
次に、図３４のフローチャートを参照して、演算処理装置４５１によるべき乗演算処理について説明する。
【０４２３】
ステップＳ３６１において、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部３４２は、小数のべき乗テーブルのテーブルサイズを２N＝SIZEとすると、上述した式（５８）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
【０４２４】
ここで、変数ｉは、小数Ｚamariから求まるインデックスindex2の値を示しており、変数ｉ＝０，・・・，（SIZE−１）とされる。また、式（５８）では、近似値２(i/SIZE)に２23が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が２３ビット目にある固定小数点数とされる。
【０４２５】
小数のべき乗テーブルが生成されると、その後、ステップＳ３６２およびステップＳ３６３の処理が行われるが、これらの処理は、図３２のステップＳ３３１およびステップＳ３３２の処理と同様であるので、その説明は、省略する。
【０４２６】
すなわち、対数演算処理部１４１により、入力値Ｘ＝Ｘ’＋α1/Yと、べき指数Ｙとから対数Ｚが求められて整数／小数分離部４２１に供給される。また、整数／小数分離部４２１により、式（５９）および式（６０）から対数Ｚの整数Ｚintおよび小数Ｚamariが求められてべき乗整数変換部３４５に供給される。
【０４２７】
ステップＳ３６４において、べき乗整数変換部３４５は、整数／小数分離部４２１からの整数Ｚintおよび小数Ｚamariを用いて、演算値（Ｐ＋α）の整数部分を求めて出力し、べき乗演算処理は終了する。ここで、演算値（Ｐ＋α）は、演算値Ｐ＝Ｘ’Yに定数αが加算された値、つまり演算値（Ｐ＋α）＝ＸYである。
【０４２８】
すなわち、べき乗整数変換部３４５は、小数Ｚamariを用いて式（３７）および式（３８）を計算し、小数Ｚamariの２２ビット目から上位Ｎビットの値をインデックスindex2として求める。さらに、べき乗整数変換部３４５は、そのインデックスindex2を用いて次式（５６）により、べき乗値（２＾Ｚamari）を求める。
【０４２９】
具体的には、べき乗整数変換部３４５は、インデックスindex2を変数ｉの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部３４２の小数のべき乗テーブルから取得して、べき乗値（２＾Ｚamari）とする。
【０４３０】
さらに、べき乗整数変換部３４５は、求めたべき乗値（２＾Ｚamari）と、整数／小数分離部４２１からの整数Ｚintとから、式（６１）を計算して、演算値（Ｐ＋α）の整数部分を求める。
【０４３１】
このように、演算処理装置４５１では、小数のべき乗テーブルを利用して、べき乗値（２＾Ｚamari）を求めるので、図３１のべき乗整数変換部４２２の場合のような演算装置を必要とせずに、べき乗値を得ることができる。
【０４３２】
なお、演算処理装置４５１の場合においても、入力値ＸがＭ進数とされ、底Ｍの対数および底Ｍのべき乗が用いられて、演算値（Ｐ＋α）の整数部分が求められるようにしてもよい。
【０４３３】
また、演算処理装置４５１では、小数のべき乗テーブルを利用して２を底とするべき乗の演算を行うと説明したが、小数のべき乗テーブルのテーブル値に、さらに補間処理が施されてべき乗値が求められるようにしてもよい。
【０４３４】
そのような場合、演算処理装置は、例えば図３５に示すように構成される。なお、図３５において、図３１または図２８における場合と対応する部分には、同一の符号を付してあり、その説明は、適宜、省略する。
【０４３５】
演算処理装置４８１は、小数のべき乗テーブル保持部４９１、対数演算処理部１４１、整数／小数分離部４２１、補間処理部１０４、およびべき乗整数変換部３８２から構成される。また、演算処理装置４８１では、入力値Ｘ＝Ｘ’＋α1/Yおよびべき指数Ｙが、対数演算処理部１４１に供給される。
【０４３６】
小数のべき乗テーブル保持部４９１は、小数のべき乗テーブルを保持しており、対数Ｚの小数Ｚamariから求まるインデックスindex2により特定されるテーブル値を、補間処理部１０４に供給する。小数のべき乗テーブル保持部４９１により保持されている小数のべき乗テーブルにおいては、テーブル値が固定小数点化された値となっている。
【０４３７】
補間処理部１０４は、整数／小数分離部４２１から供給された小数Ｚamariから求まるインデックスindex2を用いて、インデックスindex2の近傍のテーブル値を、小数のべき乗テーブル保持部４９１から取得する。また、補間処理部１０４は、取得したテーブル値を用いて補間処理を行って２を底とし、小数Ｚamariをべき指数とするべき乗値を求めてべき乗整数変換部３８２に供給する。
【０４３８】
べき乗整数変換部３８２は、補間処理部１０４からのべき乗値と、整数／小数分離部４２１からの整数Ｚintとから、演算値（Ｐ＋α）の整数部分を求めて出力する。
【０４３９】
次に、図３６のフローチャートを参照して、演算処理装置４８１によるべき乗演算処理について説明する。
【０４４０】
ステップＳ３９１において、小数のべき乗テーブル保持部４９１は、小数のべき乗テーブルを生成する。例えば、補間処理部１０４により補間処理として２次の多項式補間が行われる場合、小数のべき乗テーブル保持部４９１は、小数のべき乗テーブルのテーブルサイズを２N＋２＝SIZE＋２とする。そして、小数のべき乗テーブル保持部４９１は、次式（６４）に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
【０４４１】
【数６４】
2010033318.tif 000066
【０４４２】
ここで、テーブル値twotable[i]の変数ｉは、小数Ｚamariから求まる、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数ｉ＝０，・・・，（SIZE＋１）とされる。また、テーブルサイズ（SIZE＋２）の個数だけテーブル値twotable[i]が用意されることになる。
【０４４３】
インデックスindex2を、小数Ｚamariの上位何ビットかの値とすれば、式（６４）における２(i/SIZE)は、小数Ｚamariの値をべき指数とし、２を底とするべき乗値２＾Ｚamariの近似値となる。さらに、式（６４）では、近似値２(i/SIZE)に２23が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が２３ビット目にある固定小数点数（固定小数点型の２進数のデータ）とされる。
【０４４４】
小数のべき乗テーブル保持部４９１は、（SIZE＋２）個の各変数の値ｉのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値ｉとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
【０４４５】
なお、補間処理として、補間処理部１０４により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは２N＋１＝SIZE＋１とされ、式（６４）のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
【０４４６】
また、小数のべき乗テーブルを生成する処理は、演算値（Ｐ＋α）の整数部分を求める演算の前に１度行っておけばよい。つまり、１度、小数のべき乗テーブルを生成しておけば、その後、整数部分を求める演算を行うときは、既に生成されて保持されている小数のべき乗テーブルを用いればよい。
【０４４７】
小数のべき乗テーブルが求められると、その後、ステップＳ３９２およびステップＳ３９３の処理が行われるが、これらの処理は、図３２のステップＳ３３１およびステップＳ３３２の処理と同様であるので、その説明は、省略する。
【０４４８】
すなわち、対数演算処理部１４１により、入力値Ｘ＝Ｘ’＋α1/Yと、べき指数Ｙとから対数Ｚが求められて整数／小数分離部４２１に供給される。また、整数／小数分離部４２１により、式（５９）および式（６０）から対数Ｚの整数Ｚintおよび小数Ｚamariが求められる。そして、整数Ｚintが整数／小数分離部４２１から、べき乗整数変換部３８２に供給され、小数Ｚamariが整数／小数分離部４２１から、補間処理部１０４に供給される。
【０４４９】
ステップＳ３９４において、補間処理部１０４は、整数／小数分離部４２１からの小数Ｚamariを用いて補間処理を行い、小数Ｚamariをべき指数とする底２のべき乗値の補間値を求める。
【０４５０】
すなわち、補間処理部１０４は、式（３７）および式（３８）を計算することにより、インデックスindex2を求める。また、補間処理部１０４は、式（３９）を計算することにより、小数Ｚamariの（２２−Ｎ）ビット目から０ビット目までの部分の値である下位値Ｘh2を求める。
【０４５１】
このようにして、インデックスindex2および下位値Ｘh2が求められると、補間処理部１０４は、さらに、インデックスindex2により特定される、小数のべき乗テーブル保持部４９１の小数のべき乗テーブルのテーブル値と、下位値Ｘh2とから補間処理を行う。
【０４５２】
例えば、補間処理として線形補間を行う場合、補間処理部１０４は、式（４０）および式（４１）を計算してテーブル値Ｖ20およびテーブル値Ｖ21を求める。つまり、補間処理部１０４は、小数のべき乗テーブル保持部４９１からテーブル値Ｖ20およびテーブル値Ｖ21を取得する。さらに、補間処理部１０４は、これらの取得したテーブル値と、下位値Ｘh2とから、式（４２）乃至式（４４）を計算して線形補間を行い、べき乗値の補間値（２＾Ｚamari）を求める。
【０４５３】
また、例えば、補間処理として２次の多項式補間を行う場合、補間処理部１０４は、式（４０）および式（４１）と、式（４５）とを計算することにより、テーブル値Ｖ20乃至テーブル値Ｖ22を求める。さらに、補間処理部１０４は、これらの求められたテーブル値と、下位値Ｘh2とから、式（４６）乃至式（４９）を計算することにより２次の多項式補間を行い、べき乗値の補間値（２＾Ｚamari）を求める。
【０４５４】
なお、補間処理部１０４は、補間処理を行わない場合には、式（４０）により得られるテーブル値Ｖ20を、べき乗値の補間値（２＾Ｚamari）とする。
【０４５５】
このようにして求められたべき乗値の補間値（２＾Ｚamari）は、最終的なべき乗値（２＾Ｚamari）とされて、補間処理部１０４からべき乗整数変換部３８２に供給される。
【０４５６】
ステップＳ３９５において、べき乗整数変換部３８２は、補間処理部１０４からのべき乗値と、整数／小数分離部４２１からの整数Ｚintとから、演算値（Ｐ＋α）の整数部分を求めて出力し、べき乗演算処理は終了する。
【０４５７】
すなわち、べき乗整数変換部３８２は、補間処理部１０４からのべき乗値（２＾Ｚamari）と、整数／小数分離部４２１からの整数Ｚintとから、式（６１）を計算して、演算値（Ｐ＋α）の整数部分を求める。
【０４５８】
なお、演算処理装置４８１の場合においても、入力値ＸがＭ進数とされ、底Ｍの対数および底Ｍのべき乗が用いられて、演算値（Ｐ＋α）の整数部分が求められるようにしてもよい。また、補間処理部１０４による補間処理は、線形補間や２次の多項式補間に限らず、３次以上の多項式補間やスプライン補間とされてもよい。
【０４５９】
以上のように、図３１の演算処理装置４１１、図３３の演算処理装置４５１、および図３５の演算処理装置４８１によれば、入力値Ｘ＝Ｘ’＋α1/Yとして演算値（Ｐ＋α）の整数部分を求めるようにしたので、より簡単かつ迅速に演算値（Ｐ＋α）の整数部分の値を求めることができる。
【０４６０】
すなわち、一旦、演算値Ｐを求めてから、さらに演算値（Ｐ＋α）の整数部分を求める必要がなく、べき乗値（２＾Ｚamari）および整数Ｚintから、直接、演算値（Ｐ＋α）の整数部分を求めることができる。これにより、図５の整数変換部１０８に相当する処理ブロックが不要となり、演算処理装置の小型化も図ることができる。
【０４６１】
また、演算処理装置４１１、演算処理装置４５１、および演算処理装置４８１のそれぞれにおける対数演算処理部１４１を、必要な演算精度と処理量とを考慮して、図１４、図１６、または図１８の何れかの構成とすることができる。これにより、演算処理装置が、求められる演算精度に対して必要な、最小限の構成要素からなるように構成することができる。
【０４６２】
さらに、図５の仮数の対数テーブル保持部１０２のテーブル値と、図３３の小数のべき乗テーブル保持部３４２のテーブル値、または図３５の小数のべき乗テーブル保持部４９１のテーブル値とに、それぞれ補間処理を加えた場合と、加えない場合との組み合わせに対して、図３０に示した絶対誤差平均Ｕが得られる。したがって、補間処理により、演算値（Ｐ＋α）の整数部分を求める演算の精度を向上させることができることが分かる。
【０４６３】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０４６４】
図３７は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０４６５】
コンピュータにおいて、CPU（Central Processing Unit）６０１，ROM（Read Only Memory）６０２，RAM（Random Access Memory）６０３は、バス６０４により相互に接続されている。
【０４６６】
バス６０４には、さらに、入出力インターフェース６０５が接続されている。入出力インターフェース６０５には、キーボード、マウス、マイクロホンなどよりなる入力部６０６、ディスプレイ、スピーカなどよりなる出力部６０７、ハードディスクや不揮発性のメモリなどよりなる記録部６０８、ネットワークインターフェースなどよりなる通信部６０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア６１１を駆動するドライブ６１０が接続されている。
【０４６７】
以上のように構成されるコンピュータでは、CPU６０１が、例えば、記録部６０８に記録されているプログラムを、入出力インターフェース６０５及びバス６０４を介して、RAM６０３にロードして実行することにより、上述した一連の処理が行われる。
【０４６８】
コンピュータ（CPU６０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア６１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０４６９】
そして、プログラムは、リムーバブルメディア６１１をドライブ６１０に装着することにより、入出力インターフェース６０５を介して、記録部６０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部６０９で受信し、記録部６０８にインストールすることができる。その他、プログラムは、ROM６０２や記録部６０８に、あらかじめインストールしておくことができる。
【０４７０】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０４７１】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０４７２】
【図１】従来の符号化装置の構成を示す図である。
【図２】単精度浮動小数点数を示す浮動小数点型のデータの構成を示す図である。
【図３】従来の量子化装置の構成を示す図である。
【図４】従来の量子化装置による量子化処理を説明するフローチャートである。
【図５】本発明を適用した演算処理装置の一実施の形態の構成例を示す図である。
【図６】べき乗演算処理を説明するフローチャートである。
【図７】浮動小数点型のデータにおいて、べき乗値を得るために用いられる部分を説明する図である。
【図８】線形補間を説明する図である。
【図９】２次の多項式補間を説明する図である。
【図１０】相対誤差平均を示す図である。
【図１１】相対誤差平均を示す図である。
【図１２】演算処理装置の他の構成例を示す図である。
【図１３】べき乗演算処理を説明するフローチャートである。
【図１４】対数演算処理部の構成例を示す図である。
【図１５】対数演算処理を説明するフローチャートである。
【図１６】対数演算処理部の他の構成例を示す図である。
【図１７】対数演算処理を説明するフローチャートである。
【図１８】対数演算処理部の他の構成例を示す図である。
【図１９】対数演算処理を説明するフローチャートである。
【図２０】べき乗演算処理部の構成例を示す図である。
【図２１】演算値算出処理を説明するフローチャートである。
【図２２】べき乗演算処理部の他の構成例を示す図である。
【図２３】演算値算出処理を説明するフローチャートである。
【図２４】べき乗演算処理部の他の構成例を示す図である。
【図２５】演算値算出処理を説明するフローチャートである。
【図２６】演算処理装置の他の構成例を示す図である。
【図２７】べき乗演算処理を説明するフローチャートである。
【図２８】演算処理装置の他の構成例を示す図である。
【図２９】べき乗演算処理を説明するフローチャートである。
【図３０】絶対値誤差平均を示す図である。
【図３１】演算処理装置の他の構成例を示す図である。
【図３２】べき乗演算処理を説明するフローチャートである。
【図３３】演算処理装置の他の構成例を示す図である。
【図３４】べき乗演算処理を説明するフローチャートである。
【図３５】演算処理装置の他の構成例を示す図である。
【図３６】べき乗演算処理を説明するフローチャートである。
【図３７】コンピュータの構成例を示す図である。
【符号の説明】
【０４７３】
９１  演算処理装置，  １０１  仮数／指数分離部，  １０２  仮数の対数テーブル保持部，  １０３  小数のべき乗テーブル保持部，  １０４  補間処理部，  １０５  対数演算部，  １０６  整数／小数分離部，  １０７  べき乗演算部，  １０８  整数変換部，  １３１  演算処理装置，  １４１  対数演算処理部，  １４２  べき乗演算処理部，  １７１  対数演算部，  ２０１  対数演算部，  ２３１  対数演算部，  ２６１  整数／小数分離部，  ２６２  べき乗演算部，  ３０１  べき乗演算部，  ３３１  演算処理装置，  ３４１  仮数の対数テーブル保持部，  ３４２  小数のべき乗テーブル保持部，  ３４３  対数演算部，  ３４４  整数／小数分離部，  ３４５  べき乗整数変換部，  ３７１  演算処理装置，  ３８１  整数／小数分離部，  ３８２  べき乗整数変換部，  ４１１  演算処理装置，  ４２１  整数／小数分離部，  ４２２  べき乗整数変換部，  ４５１  演算処理装置，  ４８１  演算処理装置，  ４９１  小数のべき乗テーブル保持部
【図１】
2010033318.tif 000067
【図２】
2010033318.tif 000068
【図３】
2010033318.tif 000069
【図４】
2010033318.tif 000070
【図５】
2010033318.tif 000071
【図６】
2010033318.tif 000072
【図７】
2010033318.tif 000073
【図８】
2010033318.tif 000074
【図９】
2010033318.tif 000075
【図１０】
2010033318.tif 000076
【図１１】
2010033318.tif 000077
【図１２】
2010033318.tif 000078
【図１３】
2010033318.tif 000079
【図１４】
2010033318.tif 000080
【図１５】
2010033318.tif 000081
【図１６】
2010033318.tif 000082
【図１７】
2010033318.tif 000083
【図１８】
2010033318.tif 000084
【図１９】
2010033318.tif 000085
【図２０】
2010033318.tif 000086
【図２１】
2010033318.tif 000087
【図２２】
2010033318.tif 000088
【図２３】
2010033318.tif 000089
【図２４】
2010033318.tif 000090
【図２５】
2010033318.tif 000091
【図２６】
2010033318.tif 000092
【図２７】
2010033318.tif 000093
【図２８】
2010033318.tif 000094
【図２９】
2010033318.tif 000095
【図３０】
2010033318.tif 000096
【図３１】
2010033318.tif 000097
【図３２】
2010033318.tif 000098
【図３３】
2010033318.tif 000099
【図３４】
2010033318.tif 000100
【図３５】
2010033318.tif 000101
【図３６】
2010033318.tif 000102
【図３７】
2010033318.tif 000103