JP2010032762A - 演算処理装置および方法、並びにプログラム - Google Patents
演算処理装置および方法、並びにプログラム Download PDFInfo
- Publication number
- JP2010032762A JP2010032762A JP2008194689A JP2008194689A JP2010032762A JP 2010032762 A JP2010032762 A JP 2010032762A JP 2008194689 A JP2008194689 A JP 2008194689A JP 2008194689 A JP2008194689 A JP 2008194689A JP 2010032762 A JP2010032762 A JP 2010032762A
- Authority
- JP
- Japan
- Prior art keywords
- power
- value
- mantissa
- exponent
- integer
- 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
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】より簡単かつ精度よくべき乗の演算を行う。
【解決手段】仮数/指数分離部101は、入力値X=(1+X1/223)×(2^X2)を浮動小数点数の仮数部の仮数X1と、指数部の指数X2とに分離する。整数/小数分離部102は、指数X2とべき指数Yとの積(X2×Y)=Xint×Xamariを、整数Xintと小数Xamariとに分離する。べき乗演算部105は、仮数X1、整数Xint、および小数Xamariから、演算値P=XY=(1+X1/223)Y×(2^Xamari)×(2^Xint)を求める。その際、べき乗演算部105は、入力値Xの仮数のべき乗値(1+X1/223)Yと、入力値Xの底のべき乗値(2^Xamari)とを、仮数X1および小数Xamariを用いてテーブルから取得する。本発明は、量子化装置に適用することができる。
【選択図】図5
【解決手段】仮数/指数分離部101は、入力値X=(1+X1/223)×(2^X2)を浮動小数点数の仮数部の仮数X1と、指数部の指数X2とに分離する。整数/小数分離部102は、指数X2とべき指数Yとの積(X2×Y)=Xint×Xamariを、整数Xintと小数Xamariとに分離する。べき乗演算部105は、仮数X1、整数Xint、および小数Xamariから、演算値P=XY=(1+X1/223)Y×(2^Xamari)×(2^Xint)を求める。その際、べき乗演算部105は、入力値Xの仮数のべき乗値(1+X1/223)Yと、入力値Xの底のべき乗値(2^Xamari)とを、仮数X1および小数Xamariを用いてテーブルから取得する。本発明は、量子化装置に適用することができる。
【選択図】図5
Description
本発明は演算処理装置および方法、並びにプログラムに関し、特に、より精度よくべき乗の演算を行うことができるようにした演算処理装置および方法、並びにプログラムに関する。
オーディオ信号を符号化する方法として、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規格と呼ぶこととする。
図1に、AAC規格に準拠した従来の符号化装置の構成を示す。
符号化装置は、聴覚心理モデル保持部11、ゲイン制御部12、スペクトル処理部13、量子化/符号化部14、およびマルチプレクサ部15から構成される。
符号化装置に入力されたオーディオ信号は、聴覚心理モデル保持部11およびゲイン制御部12に供給される。聴覚心理モデル保持部11は、供給されたオーディオ信号を時間軸に沿ってブロック化し、ブロック化されたオーディオ信号を分割帯域ごとに人間の聴覚特性に従って分析して、各分割帯域の許容誤差強度を算出する。
ゲイン制御部12は、SSR(Scalable Sampling Rate)プロファイルのみに使用され、供給されたオーディオ信号を4つの等間隔の周波数帯域に分割し、最低域以外の帯域について利得調整を行う。
スペクトル処理部13は、ゲイン制御部12において利得調整されたオーディオ信号を周波数領域のスペクトルデータに変換する。また、スペクトル処理部13は、聴覚心理モデル保持部11から供給された許容誤差強度に基づいて、スペクトル処理部13の各部を制御し、スペクトルデータに所定の処理を施す。
スペクトル処理部13は、MDCT(Modified Discrete Cosine Transform)部21、TNS(Temporal Noise Shaping)処理部22、インテンシティ/カップリング部23、予測部24、およびM/S(Middle/Side Stereo)ステレオ部25を備えている。
MDCT部21は、ゲイン制御部12から供給された時間領域のオーディオ信号を周波数領域のスペクトルデータに変換する。TNS処理部22は、MDCT部21によりスペクトルデータとされたオーディオ信号を加工して量子化雑音の時間的な形状を調整する。インテンシティ/カップリング部23は、TNS処理部22により加工されたオーディオ信号に対してステレオ相関符号化処理を施す。
予測部24は、インテンシティ/カップリング部23においてステレオ相関符号化されたオーディオ信号と、量子化部27から供給されるオーディオ信号とを用いて予測符号化を行い、その結果得られたオーディオ信号をM/Sステレオ部25に供給する。M/Sステレオ部25は、予測部24からのオーディオ信号をステレオ相関符号化し、量子化/符号化部14に供給する。
量子化/符号化部14は、M/Sステレオ部25からのオーディオ信号を符号列に変換し、マルチプレクサ部15に供給する。量子化/符号化部14は、正規化係数部26、量子化部27、およびハフマン符号化部28を備えている。
正規化係数部26は、M/Sステレオ部25からのオーディオ信号を量子化部27に供給するとともに、そのオーディオ信号に基づいて、オーディオ信号の量子化に用いる正規化係数を算出し、量子化部27およびハフマン符号化部28に供給する。例えば、聴覚心理モデル保持部11からの許容誤差強度が用いられて、分割帯域ごとの正規化係数として、量子化ステップパラメータが算出される。
量子化部27は、正規化係数部26からの正規化係数を用いて、正規化係数部26から供給されたオーディオ信号を非線形量子化し、その結果得られたオーディオ信号(量子化値)をハフマン符号化部28および予測部24に供給する。ハフマン符号化部28は、予め定められたハフマン符号表に基づいて、正規化係数部26からの正規化係数と、量子化部27からの量子化値とに、それぞれハフマン符号を与えることで正規化係数および量子化値をハフマン符号化し、マルチプレクサ部15に供給する。
マルチプレクサ部15は、ゲイン制御部12およびMDCT部21乃至正規化係数部26から供給された、オーディオ信号の符号化の過程で生成された各種の情報と、ハフマン符号化部28からのハフマン符号とを多重化して、符号化されたオーディオ信号のビットストリームを生成して出力する。
また、量子化部27におけるオーディオ信号の非線形量子化は、正規化係数部26からのオーディオ信号の値を入力値AXとし、正規化係数部26からの正規化係数としての量子化ステップパラメータをqとすると、次式(1)を計算することにより行われる。すなわち、式(1)が計算されて、オーディオ信号の入力値AXから量子化値Zが求められる。
なお、式(1)において、(int)(A)は、浮動小数点数Aの小数部分を切り捨てて整数部分を得る演算を示す。
AAC規格の符号化においては、量子化値Zは14ビットと規定されているため、量子化前の値AY=AX/2q/4は、逆算すると、0≦AY<8191.5943(4/3)の範囲の値とされる。したがって、量子化値Zは、0≦Z≦8191の範囲の整数となり、量子化値Zがこの範囲内の値となるように、量子化ステップパラメータqが定められる。
また、オーディオ信号の量子化時において、量子化部27は、全ての入力値AXに対する量子化値Zを逆量子化し、量子化誤差が所定の範囲内に収まっているか否かを確認する。例えば、次式(2)の演算により逆量子化が行われ、逆量子化値Wが得られる。
さらに、量子化誤差は、逆量子化値Wと入力値AXとの差分を求めることで得られ、その差分が所定の範囲内の値となっているか否かの判定が行われる。
ところで、従来、上述した式(1)における4分の3乗や、式(2)における3分の4乗などのべき乗の演算結果を効率よく得る方法が提案されている(例えば、特許文献1参照)。特許文献1には、定数である、べき指数をY=A/B(但し、A=3,B=4)として、任意の変数XのY乗の演算を、テーブルを用いて行うことが開示されている。すなわち、特許文献1の番号63の段落には「小数部uに関しては仮数部をROMのテーブル検索により求めるようにして」と記載されており、u個のテーブルが用いられて変数Xのべき乗が求められる。
具体的には、特許文献1では、以下に説明する手順でべき乗の演算が行われる。
まず、変数XのY乗の演算結果として得られる演算値をPとすると、次式(3)の関係が成立する。
次に、入力された変数Xが、式(4)に示すように、C言語の関数frexpおよびldexpの仕様に基づく仮数X1と指数X2とに分離される。ここで、仮数X1の取り得る値の範囲は0.5以上1.0未満とされる。
この式(4)を式(3)に代入すれば、次式(5)が得られる。
さらに、式(5)におけるX2×A/Bの整数部分をXintとし、小数部分をXamariとすると、式(5)は、式(6)で表され、整数部分Xintおよび小数部分Xamariは、それぞれ式(7)および式(8)で表される。
なお、式(7)における(int)(A)は、浮動小数点数Aの小数部分を切り捨てて整数部分を得る演算を示している(以下の説明においても同様であるとする)。また、式(8)において、%はモジュロを意味し、(X2×(B−A))をBで割った余りを求める処理を示している。
さらに、仮数X1および小数部分Xamariから、式(6)における(X1^(A/B))×(2^Xamari)を得るテーブルと、仮数X1が0.5以上1.0未満となるように指数X2を調整するテーブルを用意し、それらのテーブルを利用して式(6)の演算を行うことで、変数XのY乗の演算結果として演算値Pが得られる。なお、「^」はべき乗を表しており、例えば、「2^Xamari」は、2のXamari乗を示している。「^」についても、以下の説明において同様であるとする。
以上のようにしてべき乗の演算を行い、オーディオ信号を量子化する量子化装置は、図2に示す構成とされる。
量子化装置51は、図1の量子化部27に対応し、量子化装置51には、式(1)における量子化前の値AYが変数Xとして供給されるとともに、べき指数Yが供給される。
仮数/指数分離部61は、供給された変数Xを仮数X1と指数X2とに分離し、指数X2を整数/小数分離部62に供給し、仮数X1をべき乗演算部63に供給する。整数/小数分離部62は、仮数/指数分離部61からの指数X2と、供給されたべき指数Yとの積の整数部分Xintおよび小数部分Xamariを求めてべき乗演算部63に供給する。
べき乗テーブル保持部64は、仮数X1および小数部分Xamariから、求めようとする演算値Pを浮動小数点表現したときの仮数Pamariを得るためのべき乗テーブルを保持している。また、指数調整テーブル保持部65は、整数部分Xintおよび小数部分Xamariから、演算値Pを浮動小数点表現したときの指数Pintの調整値を得るための調整テーブルを保持している。
べき乗演算部63は、仮数/指数分離部61からの仮数X1と、整数/小数分離部62からの整数部分Xintおよび小数部分Xamariとを用いて、演算値Pの仮数Pamariおよび指数Pintを求めることで、変数XのY乗の演算を行う。このとき、べき乗演算部63は、べき乗テーブル保持部64のべき乗テーブルと、指数調整テーブル保持部65の指数調整テーブルとを利用して、仮数Pamariおよび調整値を得る。また、指数Pintは、整数部分Xintおよび調整値から求められる。
整数変換部66は、べき乗演算部63により求められた演算値Pに所定の定数αが加算されて得られる数の整数部分を抽出し、抽出した整数部分を、入力された変数Xの量子化値Zとして出力する。この場合、定数αは、式(1)の「-0.0946+0.5」とされる。
次に、図3のフローチャートを参照して、量子化装置51による量子化処理について説明する。
ステップS11において、べき乗テーブル保持部64および指数調整テーブル保持部65は、べき乗テーブルおよび指数調整テーブルを生成する。
すなわち、べき乗テーブル保持部64は、テーブルサイズを2N=SIZEとすると、次式(9)に示される仮数Pamariの値frc[i][j]からなるべき乗テーブルを生成する。
なお、式(9)において、仮数Pamariの値frc[i][j]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE−1)とされる。また、frc[i][j]の変数jは、小数部分Xamariの値を示しており、変数j=1,・・・,(B−1)である。この変数jにおける「B」は、べき指数Y=A/BにおけるBである。
さらに、式(9)におけるfrctmpは、式(10)により求まる値である。
なお、式(10)における値frc[i][0]は、式(11)により求まる値である。
ここで、式(10)および式(11)における「A」および「B」も、べき指数Y=A/BにおけるAおよびBである。
このように、べき乗テーブル保持部64は、インデックスindex1および小数部分Xamariにより定まる仮数Pamariの各値frc[i][j]からなるべき乗テーブルを生成し、保持する。
また、指数調整テーブル保持部65は、テーブルサイズを2N=SIZEとして、次式(12)に示される指数Pintの調整値exp[i][j]からなる指数調整テーブルを生成する。
ここで、調整値exp[i][j]の変数iおよびjは、frc[i][j]における変数iおよびjと同じであり、式(12)におけるfrctmpは、上述した式(10)により求まる。また、調整値exp[i][0]は0とされる。
指数調整テーブル保持部65は、インデックスindex1および小数部分Xamariにより定まる各調整値exp[i][j]からなる指数調整テーブルを生成し、保持する。
なお、以上において説明した仮数Pamariの値frc[i][j]と、調整値exp[i][j]とは、べき指数Y=A/B=3/4を想定したときの値であり、べき指数Yの分子「A」および分母「B」を任意の値とするには、0.5≦frc[i][j]<1.0となるように、frc[i][j]および調整値exp[i][j]を求める必要がある。
べき乗テーブルおよび指数調整テーブルが生成されると、ステップS12において、仮数/指数分離部61は、C言語の関数frexpを用いて、供給された変数Xの仮数X1および指数X2を求める。ここで、仮数X1は、0.5以上1.0未満の値とされる。
仮数/指数分離部61は、求めた仮数X1をべき乗演算部63に供給し、指数X2を整数/小数分離部62に供給する。
ステップS13において、整数/小数分離部62は、仮数/指数分離部61からの指数X2と、供給されたべき指数Yとを用いて式(7)および式(8)の計算を行い、指数X2とべき指数Y=A/Bの積の整数部分Xintおよび小数部分Xamariを求める。
ステップS14において、べき乗演算部63は、仮数/指数分離部61からの仮数X1と、整数/小数分離部62からの整数部分Xintおよび小数部分Xamariとを用いて、変数XをY乗して得られる演算値Pを求める。
すなわち、べき乗演算部63は、次式(13)を計算することで、べき乗テーブルおよび指数調整テーブルから、所望のfrc[i][j]およびexp[i][j]の値を引くために用いられるインデックスindex1を求める。
そして、べき乗演算部63は、求めたインデックスindex1と、整数/小数分離部62からの小数部分Xamariとを用いて、式(14)に示される演算値Pの仮数Pamariを求める。
すなわち、べき乗演算部63は、べき乗テーブル保持部64のべき乗テーブルから、frc[index1][Xamari]を取得して、このfrc[index1][Xamari]の値を仮数Pamariとする。
また、べき乗演算部63は、指数調整テーブル保持部65の指数調整テーブルから、インデックスindex1および小数部分Xamariから特定される調整値exp[index1][Xamari]を取得する。さらに、べき乗演算部63は、取得した調整値exp[index1][Xamari]と、整数/小数分離部62からの整数部分Xintを用いて次式(15)を計算し、演算値Pの指数Pintを求める。
べき乗演算部63は、演算値Pの仮数Pamariおよび指数Pintを求めると、C言語の関数ldexpを用いて仮数Pamariおよび指数Pintを合成し、浮動小数点数のべき乗の演算結果である演算値Pを求めて整数変換部66に供給する。
ステップS15において、整数変換部66は、べき乗演算部63からの演算値Pを用いて、変数Xの量子化値Zを求めて出力し、量子化処理は終了する。
すなわち、整数変換部66は演算値Pと、予め定められた定数αとから次式(16)を計算し、量子化値Zを求める。
以上のようにして、量子化装置51は、入力された変数Xのべき乗を計算し、量子化値Zを求める。
しかしながら、上述した技術では、少ないメモリ量で、べき乗の演算を簡単に精度よく行なうことは困難であった。
例えば、特許文献1に記載の技術では、べき指数Y=A/Bの分子Aおよび分母Bを個々に用いた演算が行われるため、特許文献1に記載の技術は、べき指数Yが分数で表現される場合にしか、べき乗の演算に適用することができない。
また、変数i,jに対する仮数Pamariの値frc[i][j]の個数、つまりべき乗テーブルの数がSIZE×B個必要となり、さらに変数Xを関数frexpおよびldexpの仕様に合わせるための指数の調整値の個数、つまり指数調整テーブルの数がSIZE×B個必要となる。したがって、べき指数Yの分母Bの値によっては、べき乗テーブルや指数調整テーブルを記録しておくために膨大なメモリ量が必要となってしまう。
さらに、べき乗テーブルや指数調整テーブルを用いずに、直接、べき乗の演算をしようとしても、変数Xの仮数および指数は、C言語の関数frexpおよびldexpの仕様に基づいたものであるため、浮動小数点数の仮数および指数とは異なる。したがって、量子化装置51の一部を浮動小数点数の演算を行う演算器に置き換えることも容易ではない。
さらに、また、べき乗の演算の精度を上げようとすると、べき乗テーブルおよび指数調整テーブルのサイズを増やす必要があり、逆にそれらのテーブルのサイズを小さくすると、べき乗の演算精度が低下してしまう。
具体的には、量子化装置51により算出されたべき乗の演算値Pと、数学ライブラリを用いて算出したべき乗値QとからなるL個のデータのセットを用いて、次式(17)を計算し、相対誤差平均Tを求めて演算精度を評価することを考える。
なお、式(17)において、Piは、量子化装置51により算出されたべき乗値P(演算値P)のi番目のサンプルを示しており、Qiは、数学ライブラリにより求められたQに対応する数を示している。
本出願人がべき指数Y=3/4とし、L=8192として式(17)を計算し、量子化装置51によるべき乗値P(演算値P)の演算精度の評価を行ったところ、テーブルサイズ2NにおけるNが8であるとき、すなわちSIZE=256のとき、相対誤差平均T=8.25×10-4となり、それほど高い精度は得られなかった。また、テーブルサイズ2NにおけるNが16であるとき、すなわちSIZE=65536のとき、相対誤差平均T=2.56×10-8となり、N=8の場合よりも高い精度が得られた。
しかしながら、べき乗の演算値Pの演算精度を高くするために、べき乗テーブルおよび指数調整テーブルのテーブルサイズをSIZE=65536とすると、それらのテーブルが合計524288(=65536×4×2)個も必要となり、テーブルを記録するためのメモリ容量が逼迫してしまう。
さらに、例えば式(1)に示したように、オーディオ信号の量子化を行う場合などには、べき乗演算により演算値Pを求め、さらに定数αを加算してから整数化を行わなければならず、簡単にべき乗の整数を求めることができなかった。
本発明は、このような状況に鑑みてなされたものであり、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができるようにするものである。また、本発明は、より簡単にべき乗の整数を求めることができるようにするものである。
本発明の第1の側面の演算処理装置は、定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う演算処理装置であって、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値を記録する第1の記録手段と、前記小数Xamariに対して定まる、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値を記録する第2の記録手段と、前記仮数X1を用いて前記第1の記録手段から取得した前記仮数の前記べき乗値、前記小数Xamariを用いて前記第2の記録手段から取得した前記底の前記べき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算するべき乗演算手段とを備える。
演算処理装置には、前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記仮数の前記べき乗値を求める補間手段をさらに設け、前記べき乗演算手段には、前記底の前記べき乗値、および前記整数Xint、および前記補間手段により求められた前記仮数の前記べき乗値から、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算させることができる。
演算処理装置には、前記小数Xamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記底の前記べき乗値を求める補間手段をさらに設け、前記べき乗演算手段には、前記仮数の前記べき乗値、および前記整数Xint、および前記補間手段により求められた前記底の前記べき乗値から、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算させることができる。
本発明の第1の側面の演算処理方法またはプログラムは、定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う場合に、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離し、前記仮数X1を用いて取得した、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値、前記小数Xamariを用いて取得した、前記小数Xamariに対して定まる、前記入力値Xを浮動小数点数で表現したときの底の前記小数Xamariをべき指数とするべき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算するステップを含む。
本発明の第1の側面においては、定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う場合に、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xが分離され、前記指数X2と前記定数Yとの積が、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離され、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値が記録され、前記小数Xamariに対して定まる、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値が記録され、前記仮数X1が用いられて取得された前記仮数の前記べき乗値、前記小数Xamariが用いられて取得された前記底の前記べき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗が演算される。
本発明の第2の側面の演算処理装置は、定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める演算処理装置であって、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記入力値Xのべき乗値の前記整数を求めるべき乗整数変換手段とを備える。
演算処理装置には、前記仮数X1に対して定まる、前記入力値Xの前記仮数の前記べき乗値を記録する第1の記録手段と、前記小数Xamariに対して定まる、前記底の前記べき乗値を記録する第2の記録手段とをさらに設け、前記べき乗整数変換手段には、前記仮数X1を用いて前記第1の記録手段から取得された前記仮数の前記べき乗値、および前記小数Xamariを用いて前記第2の記録手段から取得された前記底の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求めさせることができる。
演算処理装置には、前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記仮数の前記べき乗値を求める補間手段をさらに設け、前記べき乗整数変換手段には、前記補間手段により求められた前記仮数の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求めさせることができる。
演算処理装置には、前記小数Xamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記底の前記べき乗値を求める補間手段をさらに設け、前記べき乗整数変換手段には、前記補間手段により求められた前記底の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求めさせることができる。
本発明の第2の側面の演算処理方法またはプログラムは、定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める場合に、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離し、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記入力値Xのべき乗値の前記整数を求めるステップを含む。
本発明の第2の側面においては、定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める場合に、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xが分離され、前記指数X2と前記定数Yとの積が、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離され、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算が行われて、前記入力値Xのべき乗値の前記整数が求められる。
本発明の第1の側面によれば、べき乗の演算を行うことができる。特に、本発明の第1の側面によれば、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができる。
また、本発明の第2の側面によれば、べき乗の整数を求める演算を行うことができる。特に、本発明の第2の側面によれば、より簡単かつ精度よくべき乗の整数を求める演算を行うことができる。
以下、図面を参照して、本発明を適用した実施の形態について説明する。
[第1の実施の形態]
まず、本発明を適用した演算処理装置により行われる処理の概要を説明する。
まず、本発明を適用した演算処理装置により行われる処理の概要を説明する。
本発明を適用した演算処理装置は、入力値XのY乗を求める演算を行う。このとき、演算処理装置は、定数であるべき指数Yが例えばY=3.141592のような浮動小数点数など、どのような値であっても、べき乗の演算を行うことができるように、IEEE(Institute for Electrical and Electronics Engineering)754に基づく浮動小数点数の仮数と指数を利用して演算を行う。
例えば、IEEE754の規格に基づく単精度浮動小数点数を示す浮動小数点型のデータは、図4に示すように、32ビットのビット列で構成される。すなわち、浮動小数点数のデータの最下位ビットである0ビット目から22ビット目までの部分は、浮動小数点数の仮数を表す仮数部である仮数X1とされ、23ビット目から30ビット目までは、浮動小数点数の指数を表す指数部である指数X2とされ、最上位の31ビット目は符号ビットSとされる。
ここで、符号ビットSは、仮数部が正である場合には「0」とされ、仮数部が負の場合には「1」とされる。また、指数部のビット構成は「指数+バイアス」となる。したがって、指数部の指数X2は、実際の指数値にバイアスが加算された値である。例えば、IEEE754の規格では、単精度のバイアスとして127が用いられているため、指数値が「0」であるときは、指数X2の値は「127」(=0+127)となり、指数部は127のビット構成(0x7f)となる(「0x」は「7f」が16進数であることを示す)。
なお、指数部が0と255の場合は、特別な意味があるが、その説明は省略する。
このように浮動小数点型のデータにより表される入力値Xを数値表現形式で表すと、入力値Xは次式(18)に示すように表される。
なお、式(18)において、「.X1」は、仮数X1の上位ビットの前に小数点が位置するものとして仮数部を小数点表現していることを示す。また、式(18)における「B」はバイアス成分を示しており、「S」は符号ビットを示している。
演算処理装置は、以上のような浮動小数点数である入力値Xを仮数X1と指数X2とに分離してべき乗の演算を行う。入力値XをIEEE754に基づく浮動小数点数で表すと、入力値Xは式(19)に示すように表される。
式(19)において、(1+X1/223)は、入力値Xを浮動小数点数で表現したときの仮数であり、この仮数におけるX1は、浮動小数点型のデータにおける、入力値Xの仮数を表す仮数部(仮数X1)である。また、式(19)において、X2は、浮動小数点型のデータにおける、入力値Xの指数を表す指数部(指数X2)である。さらに、式(19)では、浮動小数点数で表現された入力値Xの基数(底)は2とされている。
いま、入力値XのY乗を計算することを考えると、このべき乗の計算により得られる演算値P=XYは、次式(20)により表される。
また、式(20)における「X2×Y」の整数部分を整数Xintとし、小数部分を小数Xamariとすると、演算値P、整数Xint、および小数Xamariは、それぞれ式(21)乃至式(23)で表される。
なお、式(22)における(int)(A)は、浮動小数点数Aの小数部分を切り捨てて整数部分を得る演算を示しており、以下の説明において同じであるとする。
演算処理装置は、式(21)の各項の値を求めることで、最終的に入力値Xをべき指数Yでべき乗した演算値Pを求める。なお、入力値X=0.0である場合は、浮動小数点数として特殊な場合であるので、演算値P=0.0Y=0として別途求まるものとする。
次に、図5に本発明を適用した演算処理装置の一実施の形態の構成例を示す。
演算処理装置91は、仮数/指数分離部101、整数/小数分離部102、仮数のべき乗テーブル保持部103、小数のべき乗テーブル保持部104、べき乗演算部105、および整数変換部106から構成される。演算処理装置91では、仮数/指数分離部101に入力値Xが供給され、整数/小数分離部102に、定数であるべき指数Yが供給される。
仮数/指数分離部101は、供給された入力値Xを、IEEE754に基づく浮動小数点数の仮数X1および指数X2に分離し、仮数X1をべき乗演算部105に供給するとともに、指数X2を整数/小数分離部102に供給する。整数/小数分離部102は、仮数/指数分離部101からの指数X2と、供給されたべき指数Yとの積の整数Xintおよび小数Xamariを求め、べき乗演算部105に供給する。
仮数のべき乗テーブル保持部103は、仮数X1の値により定まる、入力値Xの仮数部分のべき乗の値が含まれる仮数のべき乗テーブルを保持している。すなわち、仮数のべき乗テーブルには、仮数X1から求められ、入力値Xの仮数部分のべき乗の値を特定するために用いられるインデックスindex1と、そのインデックスindex1に対応付けられた入力値Xの仮数部分のべき乗の値とのセットが複数含まれている。ここで、入力値Xの仮数部分とは、式(19)における(1+X1/223)であり、べき乗のべき指数は、べき指数Yとされる。
小数のべき乗テーブル保持部104は、小数Xamariの値により定まり、小数Xamariをべき指数とする、入力値Xを浮動小数点数で表現したときの基数(底)のべき乗の値が含まれる小数のべき乗テーブルを保持している。すなわち、小数のべき乗テーブルには、小数Xamariから求められ、入力値Xの基数のべき乗の値を特定するために用いられるインデックスindex2と、そのインデックスindex2に対応付けられた入力値Xの基数のべき乗の値とのセットが複数含まれている。
べき乗演算部105は、仮数のべき乗テーブル保持部103の仮数のべき乗テーブル、および小数のべき乗テーブル保持部104の小数のべき乗テーブルを参照して、仮数/指数分離部101からの仮数X1と、整数/小数分離部102からの整数Xintおよび小数Xamariとから演算値Pを求める。べき乗演算部105は求めた演算値Pを整数変換部106に供給する。整数変換部106は、べき乗演算部105からの演算値Pに定数αが加算されて得られる数の整数部分を求め、出力する。
このように演算処理装置91は、入力値Xに対してべき指数Yのべき乗演算を行い、その結果得られる演算値P=XYに予め定められた定数αを加算して得られる数の整数部分を求めて出力する。したがって、例えば、入力値Xが式(1)における(AX/2q/4)であり、べき指数Yが3/4であり、定数αが「-0.0946+0.5」である場合には、演算処理装置91は、図1の量子化部27に対応する装置となる。すなわち、そのような場合、演算処理装置91は、入力されたオーディオ信号としての入力値Xを非線形量子化する量子化装置となる。
次に、図6のフローチャートを参照して、演算処理装置91によるべき乗演算処理について説明する。
ステップS41において、仮数のべき乗テーブル保持部103は、仮数のべき乗テーブルを生成する。すなわち、仮数のべき乗テーブル保持部103は、仮数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(24)に示される、入力値Xの仮数部分をY乗して得られる浮動小数点型のデータのべき乗値frctable[i]からなる仮数のべき乗テーブルを生成する。
ここで、テーブルサイズSIZEは、Nビットのデータで表すことのできる数の個数であり、このテーブルサイズSIZEの個数だけべき乗値frctable[i]が用意されることになる。また、べき乗値frctable[i]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
インデックスindex1を仮数X1の上位何ビットかの値とすれば、式(24)における(1+i/SIZE)Yは、仮数X1の値に対する、入力値Xの仮数部分をY乗して得られる値(1+X1/223)Yの近似値となる。
仮数のべき乗テーブル保持部103は、(SIZE)個の各変数の値iのそれぞれに対する、べき乗値frctable[i]のそれぞれを求めると、それらの値iとべき乗値frctable[i]とを対応付けて仮数のべき乗テーブルを生成し、保持する。
ステップS42において、小数のべき乗テーブル保持部104は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部104は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(25)に示される入力値X(演算値P)の基数である2をXamari乗して得られる浮動小数点型のデータのべき乗値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、べき乗値twotable[i]の変数iは、小数Xamariから求まるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
インデックスindex2を、小数Xamariの上位何ビットかの値とすれば、式(25)における2(i/SIZE)は、小数Xamariの値に対する、入力値Xの基数「2」のXamari乗の値2^Xamariの近似値となる。
小数のべき乗テーブル保持部104は、(SIZE)個の各変数の値iのそれぞれに対する、べき乗値twotable[i]のそれぞれを求めると、それらの値iとべき乗値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、仮数のべき乗テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Xのべき乗演算前に1度行っておけばよい。つまり、1度これらのテーブルを生成しておけば、その後、入力値Xのべき乗演算を行うときは、既に生成されて保持されている仮数のべき乗テーブルおよび小数のべき乗テーブルを用いればよい。
ステップS43において、仮数/指数分離部101は、供給された入力値Xの仮数X1および指数X2を求め、仮数X1をべき乗演算部105に供給するとともに、指数X2を整数/小数分離部102に供給する。
ここで、例えば、入力値Xが図4に示した浮動小数点型のデータとされる場合、入力値Xのデータの下位23ビットの部分が、仮数X1のデータとされ、入力値Xのデータの30ビット目から23ビット目までの8ビットの部分からバイアス値を引き算した値が、指数X2のデータとされる。つまり、仮数X1および指数X2は、浮動小数点数の仮数部および指数部を表す整数型のデータとされる。
ステップS44において、整数/小数分離部102は、仮数/指数分離部101からの指数X2と、供給されたべき指数Yとの積の整数Xintおよび小数Xamariを求め、べき乗演算部105に供給する。
具体的には、整数/小数分離部102は、指数X2と、べき指数Yとの積(X2×Y)を求め、その積を用いて次式(26)により整数Xintを求める。
すなわち、積(X2×Y)が0以上である場合には、その積の整数部分が抽出されて整数Xintとされ、積(X2×Y)が0未満である場合には、その積の整数部分が抽出され、その整数部分からさらに1が減算された値が整数Xintとされる。この整数Xintのデータは、整数型のデータとされる。
また、整数/小数分離部102は、積(X2×Y)を用いて、次式(27)により小数Xamariを求める。
式(27)では、積(X2×Y)から、その積の整数部分が減算されて得られる値(差分)に、さらに223が乗算された値の整数部分が小数Xamariとされる。つまり、積(X2×Y)と積の整数部分との差分を求めることで、積(X2×Y)の小数部分の値が求まる。そして、その小数部分の値に223を乗算して、その結果得られる値の整数部分を抽出することで、積(X2×Y)の小数部分が、小数点が23ビット目に位置する固定小数点数のデータに変換される。
ステップS45において、べき乗演算部105は、仮数/指数分離部101から供給された仮数X1を用いて、べき指数Yに対する入力値Xの仮数部分のべき乗の値(1+X1/223)Yを求める。
すなわち、べき乗演算部105は、次式(28)を計算することにより、仮数X1の22ビット目から上位Nビットの値をインデックスindex1として求め、そのインデックスindex1を用いて式(29)により、入力値Xの仮数部分のべき乗の値を求める。
なお、式(28)において「>>」は右シフトを示している。図4に示したように、仮数X1は23ビットの値であるので、仮数X1を(23−N)ビットだけ右シフトすれば、仮数X1の上位Nビットの値を取り出すことができる。
べき乗演算部105は、仮数X1から抽出した上位Nビットの値をインデックスindex1とし、そのインデックスindex1を変数iの値としたべき乗値frctable[index1]を、仮数のべき乗テーブル保持部103の仮数のべき乗テーブルから取得する。そして、この取得されたべき乗値frctable[index1]が、入力値Xの仮数部分のべき乗の値(1+X1/223)Yとされる。
ステップS46において、べき乗演算部105は、整数/小数分離部102から供給された小数Xamariを用いて、小数Xamariをべき指数とする、入力値Xの基数である2のべき乗を求める。
すなわち、べき乗演算部105は、次式(30)および式(31)を計算することで、インデックスindex2を求め、そのインデックスindex2を用いて式(32)より、入力値Xの基数のべき乗の値を求める。
なお、式(30)において「>>」は右シフトを示しており、式(31)において「&」は論理積演算を示している。
すなわち、べき乗演算部105は、小数Xamariを(23−N)ビットだけ右シフトすることにより、小数Xamariの(23−N)ビット目から上位ビットの値を取り出してindex2’とする。ここで、小数Xamariは式(27)の計算により、小数点位置が23ビット目にある固定小数点数とされているので、小数Xamariを(23−N)ビットだけ右シフトすると、小数Xamariの小数部分の(23−N)ビット目から上位ビットの値が抽出される。
また、べき乗演算部105は、このようにして得られたindex2’と、(SIZE−1)との論理積演算をすることでNビットのインデックスindex2を求め、そのインデックスindex2を変数iの値としたべき乗値twotable[index2]を、小数のべき乗テーブル保持部104の小数のべき乗テーブルから取得する。そして、この取得されたべき乗値twotable[index2]が、基数である2のべき乗値(2^(Xamari))とされる。
ここで、式(31)の論理積演算と、式(26)の積(X2×Y)が負である場合における、積(X2×Y)の整数からの1の減算とを行うことは、次の演算を行うことと等価である。すなわち、式(31)および式(26)の演算は、積(X2×Y)=(Xint×Xamari)における小数Xamariが負であるときに、積の整数Xintから1を減算し、積の小数Xamariに1を加算することと等価である。
このような演算を行うと、インデックスindex2を用いて、小数のべき乗テーブルからインデックスindex2により特定されるべき乗値を取得する際に、必要となる条件分岐の数を減らすことができ、より迅速にべき乗値を得ることができるようになる。
なお、2のべき乗演算を、テーブルを用いてべき指数の小数と整数とに分けて行う場合に、べき指数が負であるときに小数に1を加算し、整数から1を減算することで、テーブル引きの条件分岐数を削減する技術は、特開2004−172700に記載されている。
以上のようにして、べき乗の値(1+X1/223)Yと、べき乗の値(2^(Xamari))とがテーブル引きにより求められる。
ステップS47において、べき乗演算部105は、べき乗の値(1+X1/223)Y、およびべき乗の値(2^(Xamari))と、整数/小数分離部102からの整数Xintとを用いて演算値Pを求める。
すなわち、べき乗演算部105は、次式(33)を計算することで、演算値Pを得る。
ここで、式(33)において、「(1+X1/223)Y」および「2^Xamari」は既に求められているので、整数Xintをべき指数とする、入力値Xの基数である2のべき乗の値「2^Xint」を求めればよいことになる。
そこで、べき乗演算部105は、式(34)を計算することで、べき乗の値「2^Xint」を求める。
なお、式(34)において、「<<」は左シフトを示している。すなわち、べき乗演算部105は、求めようとするべき乗の値「2^Xint」、つまり演算値Pを、IEEE754に基づく浮動小数点型のフォーマットのデータとするために、整数Xintにバイアス成分「127」を加算し、23ビットだけ左シフトする。
左シフト演算が行われるのは、図4に示したように、浮動小数点数の指数部が、データにおける30ビット目から23ビット目までの部分となるからである。これにより、指数部が「Xint+127」である浮動小数点型のデータが得られる。なお、べき乗値(1+X1/223)Yおよびべき乗値(2^Xamari)も、予めまたは演算により浮動小数点型のデータとされるようになされる。
さらに、べき乗演算部105は、「(1+X1/223)Y」、「2^Xamari」、および「2^Xint」を上述した式(33)に代入することで、演算値Pを示す浮動小数点型のデータを得る。このようにして求められた演算値Pは、べき乗演算部105から整数変換部106に供給される。
ステップS48において、整数変換部106は、べき乗演算部105から供給された演算値Pを整数化して出力し、べき乗演算処理は終了する。
すなわち、整数変換部106は、次式(35)を計算することにより、演算値Pに定数αが加算されて得られる数の整数部分を求め、求められた値を、整数化された演算値Pである出力値として出力する。
以上のようにして、演算処理装置91は、入力値Xを浮動小数点数の仮数X1および指数X2に分離し、仮数X1と、指数X2およびべき指数Yから得られる小数Xamariおよび整数Xintとを用いて、入力値Xのべき乗を演算する。
このように、入力値Xから得られる仮数X1と、小数Xamariおよび整数Xintとを用いて、入力値Xのべき乗を演算することで、任意の入力値Xに対して、より簡単かつ精度よくべき乗の演算を行うことができる。
すなわち、このようにしてべき乗の演算を行うことにより、べき指数が分数表現されたものに限らず、Y=3.141592のような浮動小数点数である場合であっても、簡単な処理で迅速にべき乗の演算を行うことができる。また、浮動小数点数の仮数X1および指数X2を用いた演算を行うため、上述した式(12)に示される、従来の指数調整テーブルを用いた煩雑な処理が必要なくなる。
さらに、(SIZE)個の仮数のべき乗テーブルと、(SIZE)個の小数のべき乗テーブルとを用いて、つまり合計(SIZE×2)個のテーブルを用いるだけで、べき乗の演算を簡単かつ迅速に行うことができる。特に、従来の特許文献1の例と比較すると、テーブル数を1/Bにするこができ、テーブルを記録しておくメモリのメモリ容量を大幅に削減することができる。
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、必要な精度に応じて異なる大きさとされてもよい。
また、浮動小数点数の形式(フォーマット)は、単精度浮動小数点の形式に限らず、倍精度浮動小数点の形式などであってもよい。
[第2の実施の形態]
ところで、本出願人が、べき指数Y=3.141592とし、L=8192個のデータを用いて、上述した式(17)を計算して求まる相対誤差平均Tにより、演算処理装置91のべき乗の演算精度の評価を行ったところ、N=8のとき、つまりテーブルサイズSIZE=256のとき、T=6.0×10-3であった。また、N=16のとき、つまりテーブルサイズSIZE=65536のとき、T=3.85×10-6であった。
ところで、本出願人が、べき指数Y=3.141592とし、L=8192個のデータを用いて、上述した式(17)を計算して求まる相対誤差平均Tにより、演算処理装置91のべき乗の演算精度の評価を行ったところ、N=8のとき、つまりテーブルサイズSIZE=256のとき、T=6.0×10-3であった。また、N=16のとき、つまりテーブルサイズSIZE=65536のとき、T=3.85×10-6であった。
この評価結果から、演算処理装置91では、仮数のべき乗テーブルおよび小数のべき乗テーブルを記録させておくメモリ容量は少なくて済むが、べき乗演算の精度をより高くしようとすると、やはりテーブルサイズを増やす必要があることが分かる。
そこで、演算処理装置において、仮数のべき乗テーブルおよび小数のべき乗テーブルの値(べき乗の値)に対して補間処理を行うことで、テーブルサイズを増やさずにべき乗演算の精度を向上させることができるようにする。
具体的には、例えば、図7に示すように、演算処理装置91は、浮動小数点数のデータの22ビット目から0ビット目までの仮数部のうち、22ビット目から上位Nビットの部分を用いてべき乗の値を得ていた。つまり、上位Nビットの部分を用いた近似により、べき乗の値を得ていたので、この近似には誤差が含まれる。
そこで、22ビット目から上位Nビットの部分を用いてべき乗の値を得て、さらに残りの(23−N)ビットの部分、つまり(22−N)ビット目から0ビット目までの部分を、べき乗の値の補間処理に用いることで、べき乗演算の精度を向上させる。
そのような場合、演算処理装置は、図8に示すように構成される。なお、図8において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は省略する。
演算処理装置131は、仮数/指数分離部101、整数/小数分離部102、仮数のべき乗テーブル保持部103、小数のべき乗テーブル保持部104、べき乗演算部105、整数変換部106、および補間処理部141から構成される。すなわち、演算処理装置131には、演算処理装置91に、さらに補間処理部141が設けられている。
補間処理部141は、仮数/指数分離部101からの仮数X1を用いてインデックスindex1を求め、仮数のべき乗テーブル保持部103の仮数のべき乗テーブルから、インデックスindex1の近傍の複数のテーブル値(べき乗値)を取得する。また、補間処理部141は、仮数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、これにより求められた入力値Xの仮数部分のべき乗の値である補間値(1+X1/223)Yを、補間処理により得られた最終的な入力値Xの仮数部分のべき乗の値として、べき乗演算部105に供給する。
補間処理部141は、整数/小数分離部102からの小数Xamariを用いてインデックスindex2を求め、小数のべき乗テーブル保持部104の小数のべき乗テーブルから、インデックスindex2の近傍の複数のテーブル値(べき乗値)を取得する。また、補間処理部141は、小数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、これにより求められた入力値Xの基数のべき乗の値である補間値(2^Xamari)を、補間処理により得られた最終的な基数のべき乗値としてべき乗演算部105に供給する。
次に、図9のフローチャートを参照して、演算処理装置131によるべき乗演算処理について説明する。
なお、ステップS71の処理乃至ステップS74の処理は、図6のステップS41の処理乃至ステップS44の処理と同様であるため、その説明は省略する。
但し、仮数のべき乗テーブルおよび小数のべき乗テーブルのテーブルサイズは、補間処理部141により補間処理として線形補間が行われる場合には2N+1=SIZE+1とされ、補間処理として2次の多項式補間が行われる場合には2N+2=SIZE+2とされる。
例えば、補間処理として2次の多項式補間が行われる場合、式(24)および式(25)に示した仮数のべき乗テーブルおよび小数のべき乗テーブルが生成され、変数i=0,・・・,SIZE+1とされる。
また、仮数/指数分離部101により求められた仮数X1は補間処理部141に供給される。さらに、整数/小数分離部102により求められた小数Xamariは補間処理部141に供給され、整数Xintはべき乗演算部105に供給される。
ステップS75において、補間処理部141は、仮数/指数分離部101からの仮数X1を用いて補間処理を行って、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yを求め、べき乗演算部105に供給する。
すなわち、補間処理部141は、上述した式(28)を計算することにより、仮数X1の22ビット目から上位Nビットをインデックスindex1として求める。
また、補間処理部141は、次式(36)を計算することにより、仮数X1の(22−N)ビット目から0ビット目までの部分の値である下位値Xh1を求める。
なお、式(36)において、「&」は論理積演算を示しており、以下の説明において同じであるとする。式(36)では、仮数X1と(223-N−1)との論理積演算を行うことにより、仮数X1の(22−N)ビット目から0ビット目までの部分が抽出される。すなわち、(223-N−1)は、下位(23−N)ビットの値だけが「1」となり、他のビットの値は「0」となる値であるので、論理積演算により、仮数X1の下位(23−N)ビットの値だけが抽出される。
さらに、補間処理部141は、式(37)乃至式(39)により、入力値Xの仮数部分のべき乗の値のテーブル値V10乃至テーブル値V12を求める。
すなわち、補間処理部141は、インデックスindex1を変数iの値としたべき乗値frctable[index1]をテーブル値V10として、仮数のべき乗テーブル保持部103の仮数のべき乗テーブルから取得する。同様に、補間処理部141は、インデックスindex1+1およびインデックスindex1+2を変数iの値としたべき乗値frctable[index1+1]およびべき乗値frctable[index1+2]をテーブル値V11およびテーブル値V12として、仮数のべき乗テーブルから取得する。
そして、補間処理部141は、下位値Xh1と、テーブル値V10乃至テーブル値V12とを用いて補間処理を行い、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yを求める。
例えば、補間処理部141は、補間処理として線形補間を行う場合、式(40)を計算することにより、補間値H=(1+X1/223)Yを求める。
なお、式(40)における「a」および「xin」は、それぞれ式(41)および式(42)により求められる。
すなわち、補間処理として線形補間が行われる場合、図10に示すように、テーブル値V10を原点とみなして、インデックスに対するべき乗値の傾きaが求められ、インデックス(index1)の値がxinであるときのべき乗値が補間値Hとして求められる。なお、図10において、縦軸はべき乗値を示しており、横軸はインデックスindex1の値を示している。
また、例えば、補間処理部141は、補間処理として2次の多項式補間を行う場合、式(43)を計算することにより、補間値H=(1+X1/223)Yを求める。
なお、式(43)における「a」、「b」、および「xin」は、それぞれ式(44)乃至式(46)により求められる。
すなわち、補間処理として2次の多項式補間が行われる場合、図11に示すように、テーブル値V10を原点とみなして、下位値Xh1から求まるインデックスの値xinの2乗の値に乗算される係数aと、値xinに乗算される係数bとが求められ、インデックス(index1)の値がxinであるときのべき乗値が補間値Hとして求められる。なお、図11において、縦軸はべき乗値を示しており、横軸はインデックスindex1の値を示している。
なお、補間処理部141は、補間処理を行わない場合には、テーブル値V10を、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yとする。
図9のフローチャートの説明に戻り、最終的な入力値Xの仮数部分のべき乗の値としての補間値(1+X1/223)Yが求められると、処理はステップS75からステップS76へと進む。
ステップS76において、補間処理部141は、整数/小数分離部102からの小数Xamariを用いて補間処理を行って、入力値Xの基数のべき乗の値の補間値(2^Xamari)を求め、べき乗演算部105に供給する。
すなわち、補間処理部141は、上述した式(30)および式(31)を計算することにより、固定小数点化された小数Xamariの22ビット目から上位Nビットの値をindex2として取り出す。
また、補間処理部141は、次式(47)を計算することにより、小数Xamariの(22−N)ビット目から0ビット目までの部分の値である下位値Xh2を求める。
式(47)では、式(36)における場合と同様に、小数Xamariと(223-N−1)との論理積演算を行うことにより、小数Xamariの(22−N)ビット目から0ビット目までの部分が抽出される。
さらに、補間処理部141は、式(48)乃至式(50)により、入力値Xの基数のべき乗の値のテーブル値V20乃至テーブル値V22を求める。
すなわち、補間処理部141は、インデックスindex2を変数iの値とした入力値Xの基数のべき乗の値twotable[index2]をテーブル値V20として、小数のべき乗テーブル保持部104の小数のべき乗テーブルから取得する。
同様に、補間処理部141は、インデックスindex2+1およびインデックスindex2+2を変数iの値としたべき乗値twotable[index2+1]およびべき乗値twotable[index2+2]をテーブル値V21およびテーブル値V22として、小数のべき乗テーブルから取得する。
そして、補間処理部141は、下位値Xh2と、テーブル値V20乃至テーブル値V22とを用いて補間処理を行い、入力値Xの基数のべき乗の値の補間値(2^Xamari)を求める。
例えば、補間処理部141は、補間処理として線形補間を行う場合、式(40)乃至式(42)を計算することにより、補間値H=(2^Xamari)を求める。なお、この場合、式(40)乃至式(42)における下位値Xh1、テーブル値V10、およびテーブル値V11は、下位値Xh2、テーブル値V20、およびテーブル値V21とされる(置き換えられる)。
また、例えば、補間処理部141は、補間処理として2次の多項式補間を行う場合、式(43)乃至式(46)を計算することにより、補間値H=(2^Xamari)を求める。なお、この場合、式(43)乃至式(46)における下位値Xh1、テーブル値V10、テーブル値V11、およびテーブル値V12は、下位値Xh2、テーブル値V20、テーブル値V21、およびテーブル値V22、とされる(置き換えられる)。
なお、補間処理部141は、補間処理を行わない場合には、テーブル値V20を、入力値Xの基数のべき乗の値の補間値(2^Xamari)とする。
ステップS77において、べき乗演算部105は、整数/小数分離部102からの整数Xintと、補間処理部141からの補間値(1+X1/223)Yおよび補間値(2^Xamari)とから、上述した式(33)および式(34)を計算することにより演算値Pを求める。
その後、ステップS78の処理が行われて、べき乗演算処理は終了するが、ステップS78の処理は、図6のステップS48の処理と同様であるため、その説明は省略する。
このようにして、演算処理装置131は、仮数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、最終的な入力値Xの仮数部分のべき乗の値を求めるとともに、小数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、最終的な入力値Xの基数のべき乗の値を求める。そして、演算処理装置131は、求めたそれらのべき乗の値を用いて演算値Pを求め、整数化する。
このように、補間処理を行って、入力値Xの仮数部分のべき乗の値と、入力値Xの基数のべき乗の値とを求めることにより、仮数のべき乗テーブルおよび小数のべき乗テーブルのテーブルサイズを増やさずにべき乗演算の精度を向上させることができる。
具体的には、本出願人は、べき指数Y=3.141592とし、L=8192個のデータを用いて、上述した式(17)を計算して求まる相対誤差平均Tにより、演算処理装置131のべき乗の演算精度の評価を行った。N=8のとき、つまりテーブルサイズSIZE=256のとき、仮数のべき乗テーブルの値、および小数のべき乗テーブルの値に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、図12に示す評価結果が得られた。
図12には、補間処理を加えた場合と、加えない場合との各組み合わせについての相対誤差平均Tの値が示されている。すなわち、文字「小数:補間なし」は、小数のべき乗テーブルの値を補間処理せずに演算値Pの算出に用いたことを示しており、文字「小数:線形補間」および「小数:2次補間」は、小数のべき乗テーブルの値に線形補間および2次の多項式補間を行って演算値Pの算出に用いたことを示している。
同様に、文字「仮数:補間なし」は、仮数のべき乗テーブルの値を補間処理せずに演算値Pの算出に用いたことを示しており、文字「仮数:線形補間」および「仮数:2次補間」は、仮数のべき乗テーブルの値に線形補間および2次の多項式補間を行って演算値Pの算出に用いたことを示している。
図12では、仮数のべき乗テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、べき乗の演算精度が改善されることが分かる。例えば、仮数のべき乗テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとT=5.31×10-6となり、仮数のべき乗テーブルの値および小数のべき乗テーブルの値の両方に2次の多項式補間を施すとT=3.93×10-8となっている。
このように、両方のテーブル値に2次の多項式補間を施したときの相対誤差平均の値は、従来の量子化装置51において、N=16のとき、つまりテーブルサイズSIZE=65536としたときのテーブルを用いた整数部分の演算精度と同等以上の精度である。
また、N=1,・・・,8の場合、つまりテーブルサイズSIZE=2,・・・,256の場合、仮数のべき乗テーブルの値、および小数のべき乗テーブルの値の両方の値に、補間処理を施さないとき、線形補間を施したとき、および2次の多項式補間を施したときのそれぞれの相対誤差平均Tとして、図13に示される結果が得られた。
なお、図中、「テーブルサイズ」の欄は、テーブルサイズSIZEの数(個数)を示しており、文字「補間なし」、文字「線形補間」、および「2次補間」のそれぞれは、仮数のべき乗テーブルの値、および小数のべき乗テーブルの値に、補間処理を施さない場合、線形補間を施す場合、および2次の多項式補間を施す場合のそれぞれを示している。
図13では、テーブルサイズが「16」で線形補間を行う場合と、テーブルサイズが「4」で2次の多項式補間を行う場合とで、「補間なし」のテーブルサイズが「256」のときの精度と同等の精度が実現されていることが分かる。
すなわち、テーブルサイズが「256」で補間処理を行わない場合、相対誤差平均T=6.00×10-3である。また、テーブルサイズが「16」で線形補間を行う場合、相対誤差平均T=1.37×10-3であり、テーブルサイズが「4」で2次の多項式補間を行う場合、相対誤差平均T=2.52×10-3である。このように、演算処理装置131では、補間処理を行うことで、より少ないテーブルサイズ(テーブル数)で、より高い精度のべき乗の演算を行うことができる。
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。テーブルサイズが変更される場合、そのサイズに合わせて補間処理部141により行われる補間処理時のビット位置、つまり下位値Xh1または下位値Xh2の大きさも変更される。
また、仮数のべき乗テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。さらに、補間処理として、線形補間や2次の多項式補間に限らず、3次以上の多項式補間やスプライン補間が施されるようにしてもよい。
[第3の実施の形態]
ところで、以上においては、べき乗演算により得られた演算値Pを整数化する場合に、演算値Pに定数αを加算してから整数化が行われると説明した。例えば、式(1)に示したように、オーディオ信号の量子化などの多くの規格等においては、べき指数Yの値が決められていることが多いので、定数αを演算値Pに加算するのではなく、予め入力値Xにα1/Yを加算しておくとことで、簡単な演算で演算値の整数部分を得ることができるようになる。
ところで、以上においては、べき乗演算により得られた演算値Pを整数化する場合に、演算値Pに定数αを加算してから整数化が行われると説明した。例えば、式(1)に示したように、オーディオ信号の量子化などの多くの規格等においては、べき指数Yの値が決められていることが多いので、定数αを演算値Pに加算するのではなく、予め入力値Xにα1/Yを加算しておくとことで、簡単な演算で演算値の整数部分を得ることができるようになる。
すなわち、これまでの入力値をX’(以上において説明した入力値X)とすると、X’にα1/Yが加算された値を新たな入力値X=X’+α1/Yとしてべき乗演算に用いる。例えば、式(1)に示したオーディオ信号の量子化の場合には、入力値X=X’+α4/3とされる。
このように、定数αの1/Y乗の値が変数X’に加算されて入力値Xとされる場合、演算処理装置は、図14に示すように構成される。なお、図14において、図5における場合と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置171は、仮数/指数分離部101、整数/小数分離部102、仮数のべき乗テーブル保持部181、小数のべき乗テーブル保持部182、およびべき乗整数変換部183から構成される。
この演算処理装置171では、仮数/指数分離部101に入力値X=X’+α1/Yが供給され、整数/小数分離部102にべき指数Yが供給される。すなわち、演算処理装置171は、変数X’に定数α1/Yを加算して入力値Xとし、その入力値Xを仮数/指数分離部101に供給する。
仮数のべき乗テーブル保持部181は、仮数X1の値により定まる、入力値Xの仮数部分のべき乗の値が含まれる仮数のべき乗テーブルを保持している。なお、仮数のべき乗テーブルにおける、入力値Xの仮数部分のべき乗の値は、小数点位置が23ビット目にある固定小数点数とされている。
小数のべき乗テーブル保持部182は、小数Xamariの値により定まり、小数Xamariをべき指数とする入力値X(演算値(P+α))の基数(底)のべき乗の値が含まれる小数のべき乗テーブルを保持している。
なお、小数のべき乗テーブルにおける、入力値Xの基数のべき乗の値は、小数点位置が23ビット目にある固定小数点数とされている。
べき乗整数変換部183は、仮数のべき乗テーブル保持部181の仮数のべき乗テーブル、および小数のべき乗テーブル保持部182の小数のべき乗テーブルを参照して、仮数/指数分離部101からの仮数X1と、整数/小数分離部102からの整数Xintおよび小数Xamariとから演算値(P+α)の整数部分を求め、出力する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値である。
次に、図15のフローチャートを参照して、演算処理装置171によるべき乗演算処理について説明する。
ステップS111において、仮数のべき乗テーブル保持部181は、仮数のべき乗テーブルを生成する。すなわち、仮数のべき乗テーブル保持部181は、仮数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(51)に示される、入力値Xの仮数部分をY乗して得られるべき乗値frctable[i]からなる仮数のべき乗テーブルを生成する。
ここで、テーブルサイズSIZEは、Nビットのデータで表すことのできる数の個数であり、このテーブルサイズSIZEの個数だけべき乗値frctable[i]が用意されることになる。また、べき乗値frctable[i]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
例えば、インデックスindex1を仮数X1の上位何ビットかの値とすれば、式(51)における(1+i/SIZE)Yは、仮数X1の値に対する、入力値Xの仮数部分をY乗して得られる値(1+X1/223)Yの近似値となる。さらに、式(51)では、近似値(1+i/SIZE)Yに223が乗算されて整数化され(int(A)の演算)、近似値が固定小数点化されている。つまり、べき乗値frctable[i]は、小数点位置が23ビット目にある固定小数点数とされる。
仮数のべき乗テーブル保持部181は、(SIZE)個の各変数の値iのそれぞれに対する、べき乗値frctable[i]のそれぞれを求めると、それらの値iとべき乗値frctable[i]とを対応付けて仮数のべき乗テーブルを生成し、保持する。
ステップS112において、小数のべき乗テーブル保持部182は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部182は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(52)に示される入力値Xの基数である2をXamari乗して得られるべき乗値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、べき乗値twotable[i]の変数iは、小数Xamariから求まるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
インデックスindex2を、小数Xamariの上位何ビットかの値とすれば、式(52)における2(i/SIZE)は、小数Xamariの値に対する、入力値Xの基数「2」のXamari乗の値2^Xamariの近似値となる。さらに、式(52)では、近似値2(i/SIZE)に223が乗算されて整数化され、近似値が固定小数点化されている。つまり、べき乗値twotable[i]は、小数点位置が23ビット目にある固定小数点数とされる。
小数のべき乗テーブル保持部182は、(SIZE)個の各変数の値iのそれぞれに対する、べき乗値twotable[i]のそれぞれを求めると、それらの値iとべき乗値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、仮数のべき乗テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Xのべき乗演算前に1度行っておけばよい。つまり、1度これらのテーブルを生成しておけば、その後、入力値Xのべき乗演算を行うときは、既に生成されて保持されている仮数のべき乗テーブルおよび小数のべき乗テーブルを用いればよい。
このようにして、仮数のべき乗テーブルおよび小数のべき乗テーブルが生成されると、その後、ステップS113およびステップS114の処理が行われるが、これらの処理は、図6のステップS43およびステップS44の処理と同様であるので、その説明は省略する。なお、仮数/指数分離部101により求められた、入力値X=X’+α1/Yの仮数X1はべき乗整数変換部183に供給され、入力値X=X’+α1/Yの指数X2は整数/小数分離部102に供給される。
また、整数/小数分離部102が式(26)および式(27)を計算することにより求められた、指数X2とべき指数Yとの積の整数Xintおよび小数Xamariは、べき乗整数変換部183に供給される。
ステップS115において、べき乗整数変換部183は、仮数/指数分離部101から供給された仮数X1を用いて、べき指数Yに対する入力値Xの仮数部分のべき乗の値(1+X1/223)Yを求める。
具体的には、べき乗整数変換部183は、式(28)を計算することによりインデックスindex1を求め、そのインデックスindex1を用いて式(29)より、入力値Xの仮数部分のべき乗の値を求める。すなわち、べき乗整数変換部183は、インデックスindex1を変数iの値としたべき乗値frctable[index1]を、仮数のべき乗テーブル保持部181の仮数のべき乗テーブルから取得する。そして、この取得されたべき乗値frctable[index1]が、入力値Xの仮数部分のべき乗の値(1+X1/223)Yとされる。
ステップS116において、べき乗整数変換部183は、整数/小数分離部102から供給された小数Xamariを用いて、小数Xamariをべき指数とする、入力値Xの基数である2のべき乗を求める。
具体的には、べき乗整数変換部183は、次式(30)および式(31)を計算することで、インデックスindex2を求め、そのインデックスindex2を用いて式(32)より、入力値Xの基数のべき乗の値を求める。すなわち、べき乗整数変換部183は、インデックスindex2を変数iの値としたべき乗値twotable[index2]を、小数のべき乗テーブル保持部182の小数のべき乗テーブルから取得する。そして、この取得されたべき乗値twotable[index2]が、基数である2のべき乗値(2^(Xamari))とされる。
ステップS117において、べき乗整数変換部183は、べき乗の値(1+X1/223)Y、およびべき乗の値(2^(Xamari))と、整数/小数分離部102からの整数Xintとを用いて演算値(P+α)の整数部分を求め、求められた値を、整数化された演算値(P+α)である出力値として出力する。
すなわち、べき乗整数変換部183は、次式(53)を計算することで、演算値(P+α)の整数部分を得る。
ここで、式(53)において、「>>」は右シフトを示している。べき乗整数変換部183は、整数Xintが0以上である場合、「(1+X1/223)Y×2^Xamari」を(46−Xint)ビットだけ右シフトさせて、演算値(P+α)の整数部分の値(int)(P+α)を得る。また、べき乗整数変換部183は、整数Xintが0未満である場合、値「0」を演算値(P+α)の整数部分の値(int)(P+α)とする。
なお、整数Xintが0以上である場合に、(46−Xint)ビットの右シフトを行うのは、次のような理由からである。すなわち、テーブル引きにより求められたべき乗値(1+X1/223)Y、およびべき乗値2^Xamariは、小数点位置が23ビット目の位置にあるため、それらのべき乗値の積の値の小数点位置は、46ビット目となる。
また、演算値(P+α)を、基数を用いずに(通常の小数で)表現するには、べき乗値(1+X1/223)Yと、べき乗値2^Xamariとの積の値の小数点位置を、整数Xintだけ下位ビット側に移動(左シフト演算)させればよい。
したがって、整数Xintが0以上である場合、べき乗値(1+X1/223)Yと、べき乗値2^Xamariとの積の値を(46−Xint)ビットだけ右シフトすれば、演算値(P+α)の整数部分の値が得られる。また、整数Xintが負(0未満)である場合には、演算値(P+α)は、1未満の値となるので、演算値(P+α)の整数部分は0とされる。
このようにして、演算値(P+α)の整数部分が求められると、べき乗整数変換部183は、演算値(P+α)の整数部分、つまり整数化された演算値(P+α)を出力し、べき乗演算処理は終了する。
以上のようにして、演算処理装置171は、値X’に定数α1/Yが加算された値を新たな入力値Xとし、テーブルを利用して得られたべき乗値の積と、整数Xintとからシフト演算を利用して、演算値(P+α)の整数部分を求める。
これより、より簡単かつ迅速に演算値(P+α)の整数部分の値を求めることができる。すなわち、一旦、演算値Pを求めてから、さらに演算値(P+α)の整数部分を求める必要がなく、仮数のべき乗テーブルおよび小数のべき乗テーブルを参照して、仮数X1と、小数Xamariおよび整数Xintとから、シフト演算により直接、演算値(P+α)の整数部分を求めることができる。したがって、図5の整数変換部106に相当する処理ブロックが不要となり、演算処理装置171の小型化も図ることができる。
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。
[第4の実施の形態]
ところで、以上において説明した例では、入力値Xの仮数部分(1+X1/223)は、1.0≦(1+X1/223)<2.0であり、小数Xamariは、0.0≦Xamari<1.0であり、べき指数Yは定数であった。
ところで、以上において説明した例では、入力値Xの仮数部分(1+X1/223)は、1.0≦(1+X1/223)<2.0であり、小数Xamariは、0.0≦Xamari<1.0であり、べき指数Yは定数であった。
したがって、入力値Xから、演算値P(または演算値(P+α))の整数部分を求めるために、べき乗の演算を仮数のべき乗テーブルや小数のべき乗テーブルを用いずに、べき乗演算装置により直接演算しても、それほど処理量は多くならない。つまり、べき乗演算装置の小型化が期待できる。そこで、浮動小数点数の演算を行う、べき乗演算装置を利用して、入力値Xから演算値(P+α)の整数部分を求めるようにしてもよい。
そのような場合、演算処理装置は、例えば図16に示すように構成される。なお、図16において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置211は、仮数/指数分離部101、整数/小数分離部102、およびべき乗整数変換部221から構成される。また、演算処理装置211では、仮数/指数分離部101に入力値X=X’+α1/Yが供給され、整数/小数分離部102およびべき乗整数変換部221にべき指数Yが供給される。なお、入力値Xは、上述した第3の実施の形態と同様であり、入力値X=X’+α1/Yである。
べき乗整数変換部221は、例えば、浮動小数点数の演算を行う、べき乗演算装置などから構成され、仮数/指数分離部101からの仮数X1、整数/小数分離部102からの整数Xintおよび小数Xamari、並びに供給されたべき指数Yを用いて、演算値(P+α)の整数部分を求め、出力する。
次に、図17のフローチャートを参照して、演算処理装置211によるべき乗演算処理について説明する。
なお、ステップS141およびステップS142の処理は、図6のステップS43およびステップS44の処理と同様であるので、その説明は省略する。なお、仮数/指数分離部101により求められた、入力値Xの仮数X1はべき乗整数変換部221に供給され、指数X2は整数/小数分離部102に供給される。
また、整数/小数分離部102が式(26)および式(27)を計算することにより求められた、指数X2とべき指数Yとの積の整数Xintおよび小数Xamariは、べき乗整数変換部221に供給される。
ステップS143において、べき乗整数変換部221は、供給されたべき指数Yと、仮数/指数分離部101から供給された仮数X1とを用いて、べき乗整数変換部221に内蔵されているべき乗演算装置により、べき指数Yに対する入力値Xの仮数部分のべき乗の値(1+X1/223)Yを求める。
ステップS144において、べき乗整数変換部221は、整数/小数分離部102から供給された小数Xamariを用いて、べき乗整数変換部221に内蔵されているべき乗演算装置により、小数Xamariをべき指数とする、入力値Xの基数である2のべき乗を求める。これにより、2のべき乗値(2^(Xamari))が求められる。
ステップS145において、べき乗整数変換部221は、求めたべき乗の値(1+X1/223)Y、およびべき乗値(2^(Xamari))と、整数/小数分離部102からの整数Xintとを用いて、上述した式(53)から、演算値(P+α)の整数部分を求める。そして、べき乗整数変換部221は、求められた演算値(P+α)の整数部分を出力値として出力し、べき乗演算処理は終了する。
このようにして、演算処理装置211は、べき乗演算装置を利用して、直接べき乗の演算を行い、入力値Xから演算値(P+α)の整数部分を求める。このように、処理量の少ないべき乗の演算を、べき乗演算装置により行うことで、演算処理装置211の小型化を図ることができる。
[第5の実施の形態]
ところで、上述した第3の実施の形態の演算処理装置171では、仮数のべき乗テーブルや小数のべき乗テーブルの値の補間処理が行われないため、べき乗の演算精度、つまり演算値の整数部分の演算精度を向上させるには、それらのテーブルのサイズを大きくする必要がある。
ところで、上述した第3の実施の形態の演算処理装置171では、仮数のべき乗テーブルや小数のべき乗テーブルの値の補間処理が行われないため、べき乗の演算精度、つまり演算値の整数部分の演算精度を向上させるには、それらのテーブルのサイズを大きくする必要がある。
具体的に、演算処理装置171により算出された演算値(P+α)の整数部分Rと、数学ライブラリを用いた計算により得られた演算値(P+α)の整数部分QとからなるL個のデータのセットを用いて、次式(54)を計算し、絶対誤差平均Uを求めて整数部分Rの算出精度を評価することを考える。
なお、式(54)において、Riは、演算処理装置171により算出された整数部分RのL個の整数部分(サンプル)のうちのi番目のサンプルを示しており、Qiは、数学ライブラリにより求められた、Riに対応する整数部分を示している。
例えば、べき指数Y=3.141592とし、L=8192として整数部分Rの算出精度の評価を行ったところ、テーブルサイズ2NにおけるNが8であるとき、すなわちSIZE=256のとき、絶対誤差平均U=2.09×101となり、それほど高い精度は得られなかった。また、テーブルサイズ2NにおけるNが16であるとき、すなわちSIZE=65536のとき、絶対誤差平均U=1.15×10-2となり、N=8の場合よりも高い精度が得られた。
このような絶対誤差平均Uによる評価の結果からも分かるように、演算処理装置171においては、整数部分の演算精度を向上させるには、仮数のべき乗テーブルや小数のべき乗テーブルのサイズを大きくする必要がある。
そこで、入力値X=X’+α1/Yとし、仮数のべき乗テーブルおよび小数のべき乗テーブルの値の補間処理を行うようにすることで、より簡単に演算値の整数化を行うとともに、整数化の演算精度を向上させる。
そのような場合、演算処理装置は、例えば図18に示すように構成される。なお、図18において、図5、または図8における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置251は、仮数/指数分離部101、整数/小数分離部102、補間処理部141、仮数のべき乗テーブル保持部261、小数のべき乗テーブル保持部262、およびべき乗整数変換部263から構成される。
仮数のべき乗テーブル保持部261は、仮数X1の値により定まる、入力値Xの仮数部分のべき乗の値であるテーブル値が含まれる仮数のべき乗テーブルを保持している。なお、仮数のべき乗テーブルにおける、テーブル値は、小数点位置が23ビット目にある固定小数点数とされている。
小数のべき乗テーブル保持部262は、小数Xamariをべき指数とし、小数Xamariの値により定まる、入力値Xの基数(底)のべき乗の値であるテーブル値が含まれる小数のべき乗テーブルを保持している。なお、小数のべき乗テーブルにおける、テーブル値は、小数点位置が23ビット目にある固定小数点数とされている。
また、仮数のべき乗テーブル保持部261のべき乗の値(テーブル値)、および小数のべき乗テーブル保持部262のべき乗の値(テーブル値)は、補間処理部141に供給される。さらに、補間処理部141において、仮数のべき乗テーブル保持部261および小数のべき乗テーブル保持部262からのテーブル値を用いた補間処理により、入力値Xの仮数部分のべき乗の値である補間値(1+X1/223)Y、および入力値Xの基数のべき乗の値である補間値(2^Xamari)が得られる。これらの補間値は、補間処理部141からべき乗整数変換部263に供給される。
べき乗整数変換部263は、補間処理部141からの補間値と、整数/小数分離部102からの整数Xintとを用いて、演算値(P+α)の整数部分を求め、出力する。
次に、図19のフローチャートを参照して、演算処理装置251によるべき乗演算処理について説明する。
ステップS171において、仮数のべき乗テーブル保持部261は、仮数のべき乗テーブルを生成する。例えば、補間処理部141により補間処理として2次の多項式補間が行われる場合、仮数のべき乗テーブル保持部261は、仮数のべき乗テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、仮数のべき乗テーブル保持部261は、次式(55)に示されるテーブル値frctable[i]からなる仮数のべき乗テーブルを生成する。
ここで、テーブル値frctable[i]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE+1)とされる。
例えば、インデックスindex1を仮数X1の上位何ビットかの値とすれば、式(55)における(1+i/SIZE)Yは、仮数X1の値に対する、入力値Xの仮数部分をY乗して得られる値(1+X1/223)Yの近似値となる。さらに、式(55)では、近似値(1+i/SIZE)Yに223が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値frctable[i]は、小数点位置が23ビット目にある固定小数点数とされる。
仮数のべき乗テーブル保持部261は、(SIZE+2)個の各変数の値iのそれぞれに対する、テーブル値frctable[i]のそれぞれを求めると、それらの値iとテーブル値frctable[i]とを対応付けて仮数のべき乗テーブルを生成し、保持する。
なお、補間処理として、補間処理部141により線形補間が行われる場合には、仮数のべき乗テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(55)のテーブル値frctable[i]からなる仮数のべき乗テーブルが生成される。
ステップS172において、小数のべき乗テーブル保持部262は、小数のべき乗テーブルを生成する。例えば、補間処理部141により補間処理として2次の多項式補間が行われる場合、小数のべき乗テーブル保持部262は、小数のべき乗テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、小数のべき乗テーブル保持部262は、次式(56)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、テーブル値twotable[i]の変数iは、小数Xamariから求まるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE+1)とされる。
インデックスindex2を、小数Xamariの上位何ビットかの値とすれば、式(56)における2(i/SIZE)は、小数Xamariの値に対する、入力値Xの基数「2」のXamari乗の値2^Xamariの近似値となる。さらに、式(56)では、近似値2(i/SIZE)に223が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が23ビット目にある固定小数点数とされる。
小数のべき乗テーブル保持部262は、(SIZE+2)個の各変数の値iのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値iとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、補間処理として、補間処理部141により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(56)のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
また、仮数のべき乗テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Xのべき乗演算前に1度行っておけばよい。つまり、1度これらのテーブルを生成しておけば、その後、入力値Xのべき乗演算を行うときは、既に生成されて保持されている仮数のべき乗テーブルおよび小数のべき乗テーブルを用いればよい。
このようにして、仮数のべき乗テーブルおよび小数のべき乗テーブルが生成されると、その後、ステップS173およびステップS174の処理が行われるが、これらの処理は、図6のステップS43およびステップS44の処理と同様であるので、その説明は省略する。なお、仮数/指数分離部101により求められた、入力値Xの仮数X1は補間処理部141に供給され、指数X2は整数/小数分離部102に供給される。
また、整数/小数分離部102が式(26)および式(27)を計算することにより求められた、指数X2とべき指数Yとの積の整数Xintおよび小数Xamariは、べき乗整数変換部263および補間処理部141に供給される。
ステップS175において、補間処理部141は、仮数/指数分離部101からの仮数X1を用いて補間処理を行って、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yを求め、べき乗整数変換部263に供給する。
すなわち、補間処理部141は、上述した式(28)を計算することにより、仮数X1の22ビット目から上位Nビットをインデックスindex1として求める。
また、補間処理部141は、上述した式(36)を計算することにより、仮数X1の(22−N)ビット目から0ビット目までの部分の値である下位値Xh1を求める。
さらに、補間処理部141は、式(37)乃至式(39)により、入力値Xの仮数部分のべき乗の値のテーブル値V10乃至テーブル値V12を求める。
すなわち、補間処理部141は、インデックスindex1を変数iの値としたテーブル値frctable[index1]をテーブル値V10として、仮数のべき乗テーブル保持部261の仮数のべき乗テーブルから取得する。同様に、補間処理部141は、インデックスindex1+1およびインデックスindex1+2を変数iの値としたテーブル値frctable[index1+1]およびテーブル値frctable[index1+2]をテーブル値V11およびテーブル値V12として、仮数のべき乗テーブルから取得する。
そして、補間処理部141は、下位値Xh1と、テーブル値V10乃至テーブル値V12とを用いて補間処理を行い、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yを求める。
例えば、補間処理部141は、補間処理として線形補間を行う場合、式(40)乃至式(42)を計算することにより、補間値H=(1+X1/223)Yを求める。また、例えば、補間処理部141は、補間処理として2次の多項式補間を行う場合、式(43)乃至式(46)を計算することにより、補間値H=(1+X1/223)Yを求める。
なお、補間処理部141は、補間処理を行わない場合には、テーブル値V10を、入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yとする。
入力値Xの仮数部分のべき乗の値の補間値(1+X1/223)Yが求められると、処理はステップS175からステップS176へと進む。
ステップS176において、補間処理部141は、整数/小数分離部102からの小数Xamariを用いて補間処理を行って、入力値Xの基数のべき乗の値の補間値(2^Xamari)を求め、べき乗整数変換部263に供給する。
すなわち、補間処理部141は、上述した式(30)および式(31)を計算することにより、固定小数点化された小数Xamariの22ビット目から上位Nビットの値をindex2として取り出す。また、補間処理部141は、式(47)を計算することにより、小数Xamariの(22−N)ビット目から0ビット目までの部分の値である下位値Xh2を求める。
さらに、補間処理部141は、式(48)乃至式(50)により、入力値Xの基数のべき乗の値のテーブル値V20乃至テーブル値V22を求める。
すなわち、補間処理部141は、インデックスindex2を変数iの値とした入力値Xの基数のべき乗の値、つまりテーブル値twotable[index2]をテーブル値V20として、小数のべき乗テーブル保持部262の小数のべき乗テーブルから取得する。
同様に、補間処理部141は、インデックスindex2+1およびインデックスindex2+2を変数iの値としたテーブル値twotable[index2+1]およびテーブル値twotable[index2+2]をテーブル値V21およびテーブル値V22として、小数のべき乗テーブルから取得する。
そして、補間処理部141は、下位値Xh2と、テーブル値V20乃至テーブル値V22とを用いて補間処理を行い、入力値Xの基数のべき乗の値の補間値(2^Xamari)を求める。
例えば、補間処理部141は、補間処理として線形補間を行う場合、式(40)乃至式(42)を計算することにより、補間値H=(2^Xamari)を求める。なお、この場合、式(40)乃至式(42)における下位値Xh1、テーブル値V10、およびテーブル値V11は、下位値Xh2、テーブル値V20、およびテーブル値V21とされる。
また、例えば、補間処理部141は、補間処理として2次の多項式補間を行う場合、式(43)乃至式(46)を計算することにより、補間値H=(2^Xamari)を求める。なお、この場合、式(43)乃至式(46)における下位値Xh1、テーブル値V10、テーブル値V11、およびテーブル値V12は、下位値Xh2、テーブル値V20、テーブル値V21、およびテーブル値V22、とされる。
なお、補間処理部141は、補間処理を行わない場合には、テーブル値V20を、入力値Xの基数のべき乗の値の補間値(2^Xamari)とする。
ステップS177において、べき乗整数変換部263は、補間処理部141からの補間値(1+X1/223)Yおよび補間値(2^Xamari)と、整数/小数分離部102からの整数Xintとを用いて、式(53)を計算し、演算値(P+α)の整数部分を求める。そして、べき乗整数変換部263は、求められた整数部分を出力値として出力し、べき乗演算処理は終了する。
以上のようにして、演算処理装置251は、補間処理を行って得られた補間値を用いて、演算値(P+α)の整数部分を求める。このように、補間処理を行って、入力値Xの仮数部分のべき乗の値の補間値と、入力値Xの基数のべき乗の補間値とを求めることにより、仮数のべき乗テーブルおよび小数のべき乗テーブルのテーブルサイズを増やさずに演算値(P+α)の整数部分を求める演算の精度を向上させることができる。
具体的には、本出願人は、上述した式(54)を計算して求まる絶対誤差平均Uにより、演算処理装置251の整数部分の演算精度の評価を行った。N=8のとき、つまりSIZE=256のとき、仮数のべき乗テーブルの値(テーブル値)、および小数のべき乗テーブルの値(テーブル値)に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、図20に示す評価結果が得られた。
図20は、補間処理を加えた場合と、加えない場合との各組み合わせについての絶対誤差平均Uの値が示されている。すなわち、文字「小数:補間なし」は、小数のべき乗テーブルの値を補間処理せずに演算値(P+α)の整数部分の算出に用いたことを示しており、文字「小数:線形補間」および「小数:2次補間」は、小数のべき乗テーブルの値に線形補間および2次の多項式補間を行って演算値(P+α)の整数部分の算出に用いたことを示している。
同様に、文字「仮数:補間なし」は、仮数のべき乗テーブルの値を補間処理せずに演算値(P+α)の整数部分の算出に用いたことを示しており、文字「仮数:線形補間」および「仮数:2次補間」は、仮数のべき乗テーブルの値に線形補間および2次の多項式補間を行って演算値(P+α)の整数部分の算出に用いたことを示している。
図20では、仮数のべき乗テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、整数部分の演算精度が改善されることが分かる。例えば、仮数のべき乗テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとU=1.71×10-2となり、仮数のべき乗テーブルの値および小数のべき乗テーブルの値の両方に2次の多項式補間を施すとU=2.44×10-4となっている。
このように、両方のテーブル値に2次の多項式補間を施したときの絶対誤差平均の値は、従来の量子化装置51において、N=16のとき、つまりSIZE=65536としたときのテーブルを用いた整数部分の演算精度と同等以上の精度である。
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。テーブルサイズが変更される場合、そのサイズに合わせて補間処理部141により行われる補間処理時のビット位置、つまり下位値Xh1または下位値Xh2の大きさも変更される。
また、仮数のべき乗テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。さらに、補間処理として、線形補間および2次の多項式補間に限らず、3次以上の多項式補間やスプライン補間が施されるようにしてもよい。
さらに、以上においては、浮動小数点数としての入力値Xの基数が「2」である場合について説明したが、この基数は、2に限らず任意の値とすることができる。
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図21は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)501,ROM(Read Only Memory)502,RAM(Random Access Memory)503は、バス504により相互に接続されている。
バス504には、さらに、入出力インターフェース505が接続されている。入出力インターフェース505には、キーボード、マウス、マイクロホンなどよりなる入力部506、ディスプレイ、スピーカなどよりなる出力部507、ハードディスクや不揮発性のメモリなどよりなる記録部508、ネットワークインターフェースなどよりなる通信部509、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア511を駆動するドライブ510が接続されている。
以上のように構成されるコンピュータでは、CPU501が、例えば、記録部508に記録されているプログラムを、入出力インターフェース505及びバス504を介して、RAM503にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU501)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア511に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア511をドライブ510に装着することにより、入出力インターフェース505を介して、記録部508にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部509で受信し、記録部508にインストールすることができる。その他、プログラムは、ROM502や記録部508に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
91 演算処理装置, 101 仮数/指数分離部, 102 整数/小数分離部, 103 仮数のべき乗テーブル保持部, 104 小数のべき乗テーブル保持部, 105 べき乗演算部, 106 整数変換部, 131 演算処理装置, 141 補間処理部, 171 演算処理装置, 181 仮数のべき乗テーブル保持部, 182 小数のべき乗テーブル保持部, 183 べき乗整数変換部, 211 演算処理装置, 221 べき乗整数変換部, 251 演算処理装置, 261 仮数のべき乗テーブル保持部, 262 小数のべき乗テーブル保持部, 263 べき乗整数変換部
Claims (11)
- 定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う演算処理装置であって、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、
前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値を記録する第1の記録手段と、
前記小数Xamariに対して定まる、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値を記録する第2の記録手段と、
前記仮数X1を用いて前記第1の記録手段から取得した前記仮数の前記べき乗値、前記小数Xamariを用いて前記第2の記録手段から取得した前記底の前記べき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算するべき乗演算手段と
を備える演算処理装置。 - 前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記仮数の前記べき乗値を求める補間手段をさらに備え、
前記べき乗演算手段は、前記底の前記べき乗値、および前記整数Xint、および前記補間手段により求められた前記仮数の前記べき乗値から、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算する
請求項1に記載の演算処理装置。 - 前記小数Xamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記底の前記べき乗値を求める補間手段をさらに備え、
前記べき乗演算手段は、前記仮数の前記べき乗値、および前記整数Xint、および前記補間手段により求められた前記底の前記べき乗値から、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算する
請求項1に記載の演算処理装置。 - 定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う演算処理装置であり、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、
前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値を記録する第1の記録手段と、
前記小数Xamariに対して定まる、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値を記録する第2の記録手段と、
前記仮数X1を用いて前記第1の記録手段から取得した前記仮数の前記べき乗値、前記小数Xamariを用いて前記第2の記録手段から取得した前記底の前記べき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算するべき乗演算手段と
を備える演算処理装置の演算処理方法であって、
前記仮数/指数分離手段が前記入力値Xを前記仮数X1と前記指数X2とに分離し、
前記整数/小数分離手段が前記指数X2と前記定数Yとの前記積を、前記整数Xintと前記小数Xamariとに分離し、
前記べき乗演算手段が前記定数Yをべき指数とした、前記入力値Xのべき乗を演算する
ステップを含む演算処理方法。 - 定数Yをべき指数とした、所定の入力値Xのべき乗の演算を行う演算処理装置に、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離し、
前記仮数X1を用いて取得した、前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値、前記小数Xamariを用いて取得した、前記小数Xamariに対して定まる、前記入力値Xを浮動小数点数で表現したときの底の前記小数Xamariをべき指数とするべき乗値、および前記整数Xintから、前記定数Yをべき指数とした、前記入力値Xのべき乗を演算する
ステップを含む処理を実行させるプログラム。 - 定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める演算処理装置であって、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、
前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記入力値Xのべき乗値の前記整数を求めるべき乗整数変換手段と
を備える演算処理装置。 - 前記仮数X1に対して定まる、前記入力値Xの前記仮数の前記べき乗値を記録する第1の記録手段と、
前記小数Xamariに対して定まる、前記底の前記べき乗値を記録する第2の記録手段と
をさらに備え、
前記べき乗整数変換手段は、前記仮数X1を用いて前記第1の記録手段から取得された前記仮数の前記べき乗値、および前記小数Xamariを用いて前記第2の記録手段から取得された前記底の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求める
請求項6に記載の演算処理装置。 - 前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記仮数の前記べき乗値を求める補間手段をさらに備え、
前記べき乗整数変換手段は、前記補間手段により求められた前記仮数の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求める
請求項7に記載の演算処理装置。 - 前記小数Xamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記底の前記べき乗値を求める補間手段をさらに備え、
前記べき乗整数変換手段は、前記補間手段により求められた前記底の前記べき乗値を用いて、前記入力値Xのべき乗値の前記整数を求める
請求項7に記載の演算処理装置。 - 定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める演算処理装置であり、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離する整数/小数分離手段と、
前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記入力値Xのべき乗値の前記整数を求めるべき乗整数変換手段と
を備える演算処理装置の演算処理方法であって、
前記仮数/指数分離手段が前記入力値Xを前記仮数X1と前記指数X2とに分離し、
前記整数/小数分離手段が前記指数X2と前記定数Yとの前記積を前記整数Xintと前記小数Xamariとに分離し、
前記べき乗整数変換手段が前記入力値Xのべき乗値の前記整数を求める
ステップを含む演算処理方法。 - 定数Yをべき指数とした、所定の入力値Xのべき乗値の整数を求める演算処理装置に、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、
前記指数X2と前記定数Yとの積を、前記積の整数部分である整数Xintと、前記積の小数部分である小数Xamariとに分離し、
前記仮数X1に対して定まる、前記定数Yをべき指数とする前記入力値Xの前記仮数のべき乗値と、前記小数Xamariをべき指数とする、前記入力値Xを浮動小数点数で表現したときの底のべき乗値との積を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Xintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記入力値Xのべき乗値の前記整数を求める
ステップを含む処理を実行させるプログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008194689A JP2010032762A (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008194689A JP2010032762A (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010032762A true JP2010032762A (ja) | 2010-02-12 |
Family
ID=41737309
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008194689A Withdrawn JP2010032762A (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2010032762A (ja) |
-
2008
- 2008-07-29 JP JP2008194689A patent/JP2010032762A/ja not_active Withdrawn
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4529098B2 (ja) | 演算処理装置および方法、並びにプログラム | |
| TWI397903B (zh) | 編碼音訊之節約音量測量技術 | |
| EP2159790B1 (en) | Audio encoding method, audio decoding method, audio encoding device, audio decoding device, program, and audio encoding/decoding system | |
| EP2750134B1 (en) | Encoding device and method, decoding device and method, and program | |
| US20160088297A1 (en) | Method and apparatus for pyramid vector quantization indexing and de-indexing of audio/video sample vectors | |
| EP1801691B1 (en) | Information encoding method, decoding method, common multiplier estimation method, device using these methods, program, and recording medium | |
| CN101685436B (zh) | 音频信号处理装置与方法 | |
| RU2006130966A (ru) | Устройство и способ определения величины шага квантователя | |
| CN101667170A (zh) | 计算、量化、音频编码的装置和方法及程序 | |
| US7426462B2 (en) | Fast codebook selection method in audio encoding | |
| WO2005027096A1 (en) | Method and apparatus for encoding audio | |
| CN110491399B (zh) | 编码方法、编码装置以及记录介质 | |
| JP4702645B2 (ja) | 演算装置および方法、量子化装置および方法、並びにプログラム | |
| KR100771401B1 (ko) | 프로그래머블 프로세서에서 mpeg-2 또는 mpeg-4aac 오디오 복호 알고리즘을 처리하기 위한 연산 회로및 연산 방법 | |
| KR100921795B1 (ko) | 값의 제곱에 선형적으로 의존하는 계산 결과의 표현을생성하는 방법 | |
| JP2010032762A (ja) | 演算処理装置および方法、並びにプログラム | |
| JP5336942B2 (ja) | 符号化方法、復号方法、符号化器、復号器、プログラム | |
| WO2022201632A1 (ja) | 符号化装置、復号装置、符号化方法、及び、復号方法 | |
| JP3194930B2 (ja) | 音声符号化装置 | |
| JP4438655B2 (ja) | 符号化装置、復号装置、符号化方法及び復号方法 | |
| US20090326932A1 (en) | Reducing Computational Complexity in Determining the Distance from Each of a Set of Input Points to Each of a Set of Fixed Points | |
| JP2002344316A (ja) | 非線形量子化装置および非線形量子化方法、並びに非線形量子化プログラム | |
| JP2018019138A (ja) | 情報処理装置、情報処理システム及び情報処理プログラム | |
| JP2008090178A (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: 20111004 |