JP2010033318A - 演算処理装置および方法、並びにプログラム - Google Patents
演算処理装置および方法、並びにプログラム Download PDFInfo
- Publication number
- JP2010033318A JP2010033318A JP2008194690A JP2008194690A JP2010033318A JP 2010033318 A JP2010033318 A JP 2010033318A JP 2008194690 A JP2008194690 A JP 2008194690A JP 2008194690 A JP2008194690 A JP 2008194690A JP 2010033318 A JP2010033318 A JP 2010033318A
- Authority
- JP
- Japan
- Prior art keywords
- value
- power
- integer
- mantissa
- logarithmic
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
【課題】より簡単かつ精度よくべき乗の演算を行う。
【解決手段】仮数/指数分離部101は、入力値X=(1+X1/223)×(2^X2)を仮数X1と指数X2とに分離する。補間処理部104は、仮数X1を用い、仮数の対数テーブル保持部102を参照して、補間処理によりべき乗値(log2(1+X1/223))を求める。対数演算部105は指数X2と、補間処理部104からのべき乗値から対数Z=log2XY=Y(X2+log2(1+X1/223))を求め、整数/小数分離部106は、対数Zを整数Zintと小数Zamariに分離する。補間処理部104は、小数Zamariを用い、小数のべき乗テーブル保持部103を参照して、補間処理によりべき乗値(2^Zamari)を求め、べき乗演算部107は、XY=2^Z=(2^Zamari)×(2^Zint)を求めて入力値XのY乗を得る。本発明は、量子化装置に適用することができる。
【選択図】図5
【解決手段】仮数/指数分離部101は、入力値X=(1+X1/223)×(2^X2)を仮数X1と指数X2とに分離する。補間処理部104は、仮数X1を用い、仮数の対数テーブル保持部102を参照して、補間処理によりべき乗値(log2(1+X1/223))を求める。対数演算部105は指数X2と、補間処理部104からのべき乗値から対数Z=log2XY=Y(X2+log2(1+X1/223))を求め、整数/小数分離部106は、対数Zを整数Zintと小数Zamariに分離する。補間処理部104は、小数Zamariを用い、小数のべき乗テーブル保持部103を参照して、補間処理によりべき乗値(2^Zamari)を求め、べき乗演算部107は、XY=2^Z=(2^Zamari)×(2^Zint)を求めて入力値XのY乗を得る。本発明は、量子化装置に適用することができる。
【選択図】図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から量子化値RZが求められる。
なお、式(1)において、(int)(A)は、浮動小数点数Aの小数部分を切り捨てて整数部分を得る演算を示し、以下の説明において同様であるものとする。
AAC規格の符号化においては、量子化値RZは14ビットと規定されているため、量子化前の値AY=AX/2q/4は、逆算すると、0≦AY<8191.5943(4/3)の範囲の値とされる。したがって、量子化値RZは、0≦RZ≦8191の範囲の整数となり、量子化値RZがこの範囲内の値となるように、量子化ステップパラメータqが定められる。
また、オーディオ信号の量子化時において、量子化部27は、全ての入力値AXに対する量子化値RZを逆量子化し、量子化誤差が所定の範囲内に収まっているか否かを確認する。例えば、次式(2)の演算により逆量子化が行われ、逆量子化値Wが得られる。
さらに、量子化誤差は、逆量子化値Wと入力値AXとの差分を求めることで得られ、この差分が所定の範囲内の値となっているか否かの判定が行われる。
ところで、従来、上述した式(1)における4分の3乗や、式(2)における3分の4乗などのべき乗の演算結果を効率よく得る方法が提案されている(例えば、特許文献1参照)。特許文献1には、浮動小数点数としての入力値Xを指数部と仮数部とに分離し、1度、2を底(基数)として、入力値XのY乗である演算値Pの対数Zを求めてから、対数Zの値を2のべき乗により、求めようとする演算値Pに戻すことで、入力値Xのべき乗の演算結果を得ることが開示されている。
具体的には、特許文献1では、以下に説明する手順でべき乗の演算が行われる。なお、特許文献1では、底がネイピア数である場合と、べき指数が2の倍数である場合には、特別な処理が行われるが、以下では、それらの場合を除く、一般的な処理について説明する。
まず、入力値XのY乗の演算結果として得られる演算値をPとすると、次式(3)の関係が成立する。
この入力値Xを浮動小数点数の仮数部の仮数X1と、指数部の指数X2とに分離して、入力値XのY乗を演算することを考える。
ここで、浮動小数点数について説明する。例えば、IEEE(Institute for Electrical and Electronics Engineering)754に基づく単精度浮動小数点数を示す浮動小数点型のデータは、図2に示すように、32ビットのビット列で構成される。
すなわち、浮動小数点数のデータの最下位ビットである0ビット目から22ビット目までの23ビットの部分は、浮動小数点数の仮数を表す仮数部である仮数X1とされ、23ビット目から30ビット目までの8ビットの部分は、浮動小数点数の指数を表す指数部である指数X2とされ、最上位の31ビット目は符号ビットSとされる。
符号ビットSは、仮数部が正である場合には「0」とされ、仮数部が負の場合には「1」とされる。また、指数部のビット構成は「指数+バイアス」となる。したがって、指数部の指数X2は、実際の指数値にバイアスが加算された値である。IEEE754の規格では、単精度のバイアスとして127が用いられているため、指数値が「0」であるときは、指数X2の値は「127」(=0+127)となり、指数部は127のビット構成(0x7f)となる(「0x」は「7f」が16進数であることを示す)。
なお、指数部が0と255の場合は、特別な意味があるが、その説明は省略する。
このように浮動小数点型のデータにより表される入力値Xを数値表現形式で表すと、入力値Xは次式(4)に示すように表される。
なお、式(4)において、「.X1」は、仮数X1の上位ビットの前に小数点が位置するものとして仮数部を小数点表現していることを示す。また、式(4)における「B」はバイアス成分を示しており、「S」は符号ビットを示している。
特許文献1では、以上のような浮動小数点数である入力値Xが仮数X1と指数X2とに分離されてべき乗の演算が行われる。
すなわち、入力値Xの仮数部の仮数をX1とし、指数部の指数をX2とすると、入力値Xは、次式(5)で表される。
したがって、上述した式(3)の両辺に対して底2の対数をとると、式(6)が成立する。
ここで、対数Zの整数部分を整数Zintとし、対数Zの小数部分を小数Zamariとすると、演算値Pは、次式(7)により表される。
この式(7)における整数Zintおよび小数Zamariは、上述した式(6)から求まるので、式(6)および式(7)から、入力値XをY乗して得られる演算値Pが求まる。
以上のようにしてべき乗の演算を行い、オーディオ信号を量子化する量子化装置は、図3に示す構成とされる。
量子化装置51は、図1の量子化部27に対応し、量子化装置51には、式(1)における量子化前の値AYが入力値Xとして供給されるとともに、べき指数Y=3/4が供給される。
仮数/指数分離部61は、供給された入力値Xを仮数X1と指数X2とに分離し、対数演算部62供給する。対数演算部62には、べき指数Yが供給され、対数演算部62は、仮数/指数分離部61からの仮数X1および指数X2と、供給されたべき指数Yとを用いて、式(6)の演算を行い、対数Zを求める。その際、対数演算部62は、仮数X1により求まるインデックスindex1を用いて、仮数の対数テーブル保持部63から入力値Xの仮数部分の対数値「log2(1+X1/223)」を取得して式(6)に代入する。ここで、インデックスindex1は、仮数X1の値に対する、入力値Xの仮数部分の対数値を特定するために用いられる値である。
仮数の対数テーブル保持部63は、各仮数X1の値に対する、入力値Xの仮数部分の対数値を含む仮数の対数テーブルを保持している。また、整数/小数分離部64は、対数演算部62からの対数Zを整数Zintおよび小数Zamariに分離する。
べき乗演算部65は、整数/小数分離部64からの整数Zintおよび小数Zamariを用いて、上述した式(7)を演算することで、浮動小数点型のデータである演算値Pを得る。その際、べき乗演算部65は、小数Zamariにより求まるインデックスindex2を用いて、小数のべき乗テーブル保持部66から、小数Zamariをべき指数とする底2のべき乗値2^Zamariを取得して式(7)に代入する。ここで、インデックスindex2は、小数Zamariの値に対する、底を2としたべき乗値を特定するために用いられる値である。
なお、べき乗値2^Zamariにおける「^」はべき乗を表しており、以下の説明において同様であるとする。つまり、「2^Zamari」は、2のZamari乗を示している。
小数のべき乗テーブル保持部66は、各小数Zamariの値に対する、底を2とするべき乗の値を含む小数のべき乗テーブルを保持している。整数変換部67は、べき乗演算部65により求められた演算値Pに所定の定数αが加算されて得られる数の整数部分を抽出し、抽出した整数部分を、入力値Xの量子化値RZとして出力する。この場合、定数αは、式(1)の「-0.0946+0.5」とされる。
次に、図4のフローチャートを参照して、量子化装置51による量子化処理について説明する。
ステップS11において、仮数の対数テーブル保持部63および小数のべき乗テーブル保持部66は、仮数の対数テーブルおよび小数のべき乗テーブルを生成する。
すなわち、仮数の対数テーブル保持部63は、仮数の対数テーブルのテーブルサイズを2N=SIZEとすると、次式(8)に示される、入力値Xの仮数部分の対数値logtable[i]からなる仮数の対数テーブルを生成する。
ここで、テーブルサイズSIZEは、Nビットのデータで表すことのできる数の個数であり、このテーブルサイズSIZEの個数だけ対数値logtable[i]が用意されることになる。また、対数値logtable[i]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
また、小数のべき乗テーブル保持部66は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(9)に示される、小数Zamariをべき指数とし、底を2とするべき乗値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、べき乗値twotable[i]の変数iは、小数Zamariから求まるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
ステップS12において、仮数/指数分離部61は、供給された入力値Xの仮数X1および指数X2を求める。
ステップS13において、対数演算部62は、仮数/指数分離部61からの仮数X1および指数X2を用いて、式(6)を計算し、対数Zを求める。
すなわち、対数演算部62は、仮数X1を用いて次式(10)を計算することにより、仮数X1の22ビット目から上位Nビットの値をインデックスindex1として求め、さらに、そのインデックスindex1を用いて、次式(11)により入力値Xの仮数部分の対数値logtable[index1]を求める。
なお、式(10)において「>>」は右シフトを示している。仮数X1は23ビットの値であるので、仮数X1を(23−N)ビットだけ右シフトすれば、仮数X1の上位Nビットの値を取り出すことができる。
対数演算部62は、仮数X1から抽出した上位Nビットの値をインデックスindex1とし、そのインデックスindex1を変数iの値とした対数値logtable[index1]を、仮数の対数テーブル保持部63から取得する。そして、この取得された対数値logtable[index1]が、入力値Xの仮数部分の対数値(log2(1+X1/223))とされる。
さらに、対数演算部62は、仮数/指数分離部61からの指数X2、供給されたべき指数Y、および求めた対数値を式(6)に代入し、対数Zを求める。
ステップS14において、整数/小数分離部64は、対数演算部62からの対数Zを、整数Zintおよび小数Zamariに分離する。具体的には、整数/小数分離部64は、次式(12)および式(13)を計算することで、整数Zintおよび小数Zamariを求める。
すなわち、式(12)では、対数Zが0以上である場合には、対数Zの整数部分が抽出されて整数Zintとされ、対数Zが0未満である場合には、対数Zの整数部分が抽出され、その整数部分からさらに1が減算された値が整数Zintとされる。
また、式(13)では、対数Zから、その対数Zの整数部分が減算されて得られる値(差分)に、さらに223が乗算された値の整数部分が小数Zamariとされる。つまり、対数Zと対数Zの整数部分との差分を求めることで、対数Zの小数部分の値が求まる。そして、その小数部分の値に223を乗算して、その結果得られる値の整数部分を抽出することで、対数Zの小数部分が、小数点が23ビット目に位置する固定小数点数に変換される。
ステップS15において、べき乗演算部65は、整数/小数分離部64からの整数Zintおよび小数Zamariを用いて、演算値Pを求める。
すなわち、べき乗演算部65は、次式(14)および式(15)を計算することで、インデックスindex2を求め、そのインデックスindex2を用いて式(16)より、底2のべき乗値(2^Zamari)を求める。
なお、式(14)において「>>」は右シフトを示しており、式(15)において「&」は論理積演算を示している。
すなわち、べき乗演算部65は、小数Zamariを(23−N)ビットだけ右シフトすることにより、小数Zamariの(23−N)ビット目から上位ビットの値を取り出してindex2’とする。ここで、小数Zamariは式(13)の計算により、小数点位置が23ビット目にある固定小数点数とされているので、小数Zamariを(23−N)ビットだけ右シフトすると、小数Zamariの小数部分の(23−N)ビット目から上位ビットの値が抽出される。
また、べき乗演算部65は、このようにして得られたindex2’と、(SIZE−1)との論理積演算をすることでNビットのインデックスindex2を求め、そのインデックスindex2を変数iの値としたべき乗値twotable[index2]を、小数のべき乗テーブル保持部66の小数のべき乗テーブルから取得する。そして、この取得されたべき乗値twotable[index2]が、底2のべき乗値(2^Zamari)とされる。
さらに、べき乗演算部65は、整数/小数分離部64からの整数Zintを用いて式(17)を計算し、整数Zintをべき指数とする底2のべき乗値(2^Zint)を求める。
なお、式(17)において、「<<」は左シフトを示している。すなわち、べき乗演算部65は、求めようとするべき乗値(2^Zint)を、IEEE754に基づく浮動小数点型のフォーマットのデータとするために、整数Zintにバイアス成分「127」を加算し、23ビットだけ左シフトする。左シフト演算が行われるのは、浮動小数点数の指数部が、浮動小数点型のデータにおける30ビット目から23ビット目までの部分となるからである。
このようにして、べき乗値(2^Zamari)およびべき乗値(2^Zint)が得られると、べき乗演算部65は、これらのべき乗値から式(18)を計算して演算値Pを求める。
ステップS16において、整数変換部67は、べき乗演算部65により求められた演算値Pを用いて、入力値Xの量子化値RZを求めて出力し、量子化処理は終了する。
すなわち、整数変換部67は演算値Pと、予め定められた定数αとから次式(19)を計算し、量子化値RZを求める。
以上のようにして、量子化装置51は、入力値Xのべき乗を計算し、量子化値RZを求める。
しかしながら、上述した技術では、少ないメモリ量で、べき乗の演算を簡単に精度よく行なうことは困難であった。
例えば、具体的に、量子化装置51により算出されたべき乗の演算値Pと、数学ライブラリを用いて算出したべき乗値QとからなるL個のデータのセットを用いて、次式(20)を計算し、相対誤差平均Tを求めて演算精度を評価することを考える。
なお、式(20)において、Piは、量子化装置51により算出された演算値Pのi番目のサンプルを示しており、Qiは、数学ライブラリにより求められた、Piに対応する数を示している。
本出願人が、L=8192として式(20)を計算し、量子化装置51による演算値Pの演算精度の評価を行ったところ、テーブルサイズ2NにおけるNが8であるとき、すなわちSIZE=256のとき、相対誤差平均T=5.45×10-3となり、それほど高い精度は得られなかった。また、テーブルサイズ2NにおけるNが16であるとき、すなわちSIZE=65536のとき、相対誤差平均T=5.10×10-6となり、N=8の場合よりも高い精度が得られた。
しかしながら、べき乗の演算の精度を上げようとすると、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズを増やす必要があり、それらのテーブルを記録しておくメモリのメモリ容量が逼迫してしまう。逆に、それらのテーブルのテーブルサイズを小さくすると、べき乗の演算精度が低下してしまう。
さらに、例えば式(1)に示したように、オーディオ信号の量子化を行う場合などには、べき乗演算により演算値Pを求め、さらに定数αを加算してから整数化を行わなければならず、簡単にべき乗の整数を求めることができなかった。
本発明は、このような状況に鑑みてなされたものであり、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができるようにするものである。また、本発明は、より簡単にべき乗の整数を求めることができるようにするものである。
本発明の第1の側面の演算処理装置は、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であって、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を記録する第1の記録手段と、前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、前記変数Yおよび前記指数X2と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段とを備える。
演算処理装置には、前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を記録する第2の記録手段とをさらに設け、前記べき乗演算手段には、前記小数Zamariを用いて前記第2の記録手段から取得した前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pを求めさせることができる。
前記補間手段には、前記小数Zamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行わせ、最終的な前記定数Mの前記べき乗値を求めさせ、前記べき乗演算手段には、前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pを求めさせることができる。
本発明の第1の側面の演算処理方法またはプログラムは、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置の演算処理方法またはプログラムであって、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を複数用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、前記変数Yおよび前記指数X2と、前記補間処理により求められた前記仮数の前記対数値とを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるステップを含む。
本発明の第1の側面においては、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置において、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xが分離され、前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値が複数用いられて補間処理が行われ、最終的な前記仮数の前記対数値が求められ、前記変数Yおよび前記指数X2と、前記補間処理により求められた前記仮数の前記対数値とが用いられて、前記定数Mを底とする前記演算値Pの対数値Zが求められ、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pが求められる。
本発明の第2の側面の演算処理装置は、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であって、前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を記録する第1の記録手段と、前記小数Zamariを用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求める補間手段と、前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとを用いて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段とを備える。
演算処理装置には、浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段をさらに設け、前記対数演算手段には、前記仮数X1、前記指数X2、および前記変数Yを用いて、前記演算値Pの前記対数値Zを求めさせることができる。
演算処理装置には、前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を記録する第2の記録手段をさらに設け、前記対数演算手段には、前記仮数X1を用いて前記第2の記録手段から取得した前記仮数の前記対数値と、前記変数Yおよび前記指数X2とを用いて、前記演算値Pの前記対数値Zを求めさせることができる。
本発明の第2の側面の演算処理方法またはプログラムは、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置の演算処理方法またはプログラムであって、前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離し、前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を複数用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求め、前記補間処理により求められた前記定数Mの前記べき乗値と、前記整数Zintとを用いて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるステップを含む。
本発明の第2の側面においては、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置において、前記入力値Xおよび前記変数Yが用いられて、前記定数Mを底とする前記演算値Pの対数値Zが求められ、前記演算値Pの前記対数値Zが、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離され、前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値が複数用いられて補間処理が行われ、最終的な前記定数Mの前記べき乗値が求められ、前記補間処理により求められた前記定数Mの前記べき乗値と、前記整数Zintとが用いられて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pが求められる。
本発明の第3の側面の演算処理装置は、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置であって、前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Pの前記整数を求めるべき乗整数変換手段とを備える。
演算処理装置には、前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mの前記べき乗値を記録する記録手段をさらに設け、前記べき乗整数変換手段には、前記小数Zamariを用いて前記記録手段から取得した前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pの前記整数を求めさせることができる。
演算処理装置には、前記小数Zamariを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求める補間手段をさらに設け、前記べき乗整数変換手段には、前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pの前記整数を求めさせることができる。
本発明の第3の側面の演算処理方法またはプログラムは、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置の演算処理方法またはプログラムであって、前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離し、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Pの前記整数を求めるステップを含む。
本発明の第3の側面においては、変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置において、前記入力値Xおよび前記変数Yが用いられて、前記定数Mを底とする前記演算値Pの対数値Zが求められ、前記演算値Pの前記対数値Zが、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離され、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算が行われて、前記演算値Pの前記整数が求められる。
本発明の第1の側面によれば、べき乗の演算を行うことができる。特に、本発明の第1の側面によれば、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができる。
また、本発明の第2の側面によれば、べき乗の演算を行うことができる。特に、本発明の第2の側面によれば、少ないメモリ量で、より簡単かつ精度よくべき乗の演算を行うことができる。
さらに、本発明の第3の側面によれば、べき乗の整数を求めることができる。特に、本発明の第3の側面によれば、より簡単にべき乗の整数を求めることができる。
以下、図面を参照して、本発明を適用した実施の形態について説明する。
[第1の実施の形態]
まず、本発明を適用した演算処理装置により行われる処理の概要を説明する。
まず、本発明を適用した演算処理装置により行われる処理の概要を説明する。
本発明を適用した演算処理装置は、供給された入力値Xを、例えばIEEE754に基づく浮動小数点数の仮数X1と指数X2とに分離して、入力値XのY乗を求める演算を行う。すなわち、演算処理装置は、基本的には、上述した式(6)および式(7)を計算して、入力値XをY乗して得られる演算値Pを求める。
ここで、仮数X1は、浮動小数点型のデータにおける、入力値Xの仮数(仮数部分)を表す仮数部であり、指数X2は、浮動小数点型のデータにおける、入力値Xの指数を表す指数部である。また、入力値Xの仮数(仮数部分)とは、上述した式(5)に示したように、入力値Xを浮動小数点数で表現したときの仮数部分(1+X1/223)である。
演算処理装置は、演算値Pを求める際に、仮数X1の値に対する、入力値Xの仮数部分の対数値を示すテーブル値を含む仮数の対数テーブルを利用して、補間処理により入力値Xの仮数部分の対数値(log2(1+X1/223))を得る。また、演算処理装置は、式(6)の対数Zの整数部分および小数部分を、それぞれ整数Zintおよび小数Zamariとして、小数Zamariの値に対する、底を2とするべき乗値を示すテーブル値を含む小数のべき乗テーブルを利用し、補間処理によりべき乗値2^Zamariを得る。
図5は、本発明を適用した演算処理装置の一実施の形態の構成例を示す図である。
演算処理装置91は、仮数/指数分離部101、仮数の対数テーブル保持部102、小数のべき乗テーブル保持部103、補間処理部104、対数演算部105、整数/小数分離部106、べき乗演算部107、および整数変換部108から構成される。この演算処理装置91では、仮数/指数分離部101に入力値Xが供給され、対数演算部105にべき指数Yが供給される。
仮数/指数分離部101は、供給された入力値Xを、例えばIEEE754に基づく浮動小数点数の仮数X1と指数X2とに分離して、仮数X1を補間処理部104に供給するとともに、指数X2を対数演算部105に供給する。
仮数の対数テーブル保持部102は、仮数の対数テーブルを保持している。小数のべき乗テーブル保持部103は、小数のべき乗テーブルを保持している。補間処理部104は、仮数の対数テーブル保持部102の仮数の対数テーブルから、仮数/指数分離部101からの仮数X1により特定されるテーブル値を取得して補間処理を行い、その結果得られた入力値Xの仮数部分の対数値を対数演算部105に供給する。
また、補間処理部104は、小数のべき乗テーブル保持部103の小数のべき乗テーブルから、整数/小数分離部106からの小数Zamariにより特定されるテーブル値を取得して補間処理を行い、その結果得られたべき乗値をべき乗演算部107に供給する。
対数演算部105は、仮数/指数分離部101からの指数X2、供給されたべき指数Y、および補間処理部104からの対数値に基づいて、2を底とする演算値Pの対数Zを求め、整数/小数分離部106に供給する。整数/小数分離部106は、対数演算部105からの対数Zを整数Zintと小数Zamariとに分離し、整数Zintをべき乗演算部107に供給するとともに、小数Zamariを補間処理部104に供給する。
べき乗演算部107は、整数/小数分離部106からの整数Zintと、補間処理部104からのべき乗値とを用いて演算値Pを求め、整数変換部108に供給する。整数変換部108は、べき乗演算部107からの演算値Pに所定の定数αが加算されて得られる数の整数部分を抽出し、抽出した整数部分を出力する。
したがって、例えば、入力値Xが式(1)における(AX/2q/4)であり、べき指数Yが3/4であり、定数αが「-0.0946+0.5」である場合には、演算処理装置91は、図1の量子化部27に対応する装置となる。すなわち、そのような場合、演算処理装置91は、入力されたオーディオ信号としての入力値Xを非線形量子化する量子化装置となる。
なお、入力値X=0.0である場合は、浮動小数点数として特殊な場合であるので、演算値P=0.0Y=0として別途求まるものとする。
次に、図6のフローチャートを参照して、演算処理装置91によるべき乗演算処理について説明する。
ステップS41において、仮数の対数テーブル保持部102は、仮数の対数テーブルを生成する。例えば、補間処理部104により補間処理として2次の多項式補間が行われる場合、仮数の対数テーブル保持部102は、仮数の対数テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、仮数の対数テーブル保持部102は、次式(21)に示されるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。
ここで、テーブル値logtable[i]の変数iは、仮数X1から求まり、テーブル値logtable[i]を特定するために用いられるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE+1)とされる。また、テーブルサイズ(SIZE+2)の個数だけテーブル値logtable[i]が用意されることになる。
例えば、インデックスindex1を仮数X1の上位何ビットかの値とすれば、式(21)における「log2(1+i/SIZE)」は、仮数X1の値に対する、2を底とする入力値Xの仮数部分の対数値(log2(1+X1/223))の近似値となる。
仮数の対数テーブル保持部102は、(SIZE+2)個の各変数の値iのそれぞれに対する、テーブル値logtable[i]のそれぞれを求めると、それらの値iとテーブル値logtable[i]とを対応付けて仮数の対数テーブルを生成し、保持する。
なお、補間処理として、補間処理部104により線形補間が行われる場合には、仮数の対数テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(21)のテーブル値logtable[i]からなる仮数の対数テーブルが生成される。
ステップS42において、小数のべき乗テーブル保持部103は、小数のべき乗テーブルを生成する。例えば、補間処理部104により補間処理として2次の多項式補間が行われる場合、小数のべき乗テーブル保持部103は、小数のべき乗テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、小数のべき乗テーブル保持部103は、次式(22)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、テーブル値twotable[i]の変数iは、小数Zamariから求まり、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE+1)とされる。また、テーブルサイズ(SIZE+2)の個数だけテーブル値twotable[i]が用意されることになる。
インデックスindex2を、小数Zamariの上位何ビットかの値とすれば、式(22)における2(i/SIZE)は、「2」を底(基数)とし、小数Zamariをべき指数とするべき乗の値2^Zamariiの近似値となる。
小数のべき乗テーブル保持部103は、(SIZE+2)個の各変数の値iのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値iとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、補間処理として、補間処理部104により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(22)のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
また、仮数の対数テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Xのべき乗演算前に1度行っておけばよい。つまり、1度これらのテーブルを生成しておけば、その後、入力値Xのべき乗演算を行うときは、既に生成されて保持されている仮数のべき乗テーブルおよび小数のべき乗テーブルを用いればよい。
ステップS43において、仮数/指数分離部101は、供給された入力値Xの仮数X1および指数X2を求め、求めた仮数X1を補間処理部104に供給し、求めた指数X2を対数演算部105に供給する。
例えば、IEEE754に基づく浮動小数点数の仮数部および指数部、つまり、上述した式(5)における仮数X1および指数X2を示す整数型のデータが、入力値Xの仮数X1および指数X2のデータとされる。換言すれば、図2に示した浮動小数点型のデータの0ビット目から22ビット目までの部分が仮数X1とされ、30ビット目から23ビット目までの部分からバイアス値を引き算した値が指数X2とされる。
ステップS44において、補間処理部104は、仮数/指数分離部101からの仮数X1を用いて補間処理を行って、式(6)に示した、入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))を求め、対数演算部105に供給する。
すなわち、補間処理部104は、式(23)を計算することにより、仮数X1の22ビット目から上位Nビットをインデックスindex1として求める。
なお、式(23)において「>>」は右シフトを示している。例えば、図2に示したように、仮数X1は23ビットの値であるので、仮数X1を(23−N)ビットだけ右シフトすれば、仮数X1の上位Nビットの値を取り出すことができる。
また、補間処理部104は、次式(24)を計算することにより、仮数X1の(22−N)ビット目から0ビット目までの部分の値である下位値Xh1を求める。
なお、式(24)において、「&」は論理積演算を示しており、以下の説明において同じであるとする。式(24)では、2進数のデータである仮数X1と(223-N−1)との論理積演算を行うことにより、仮数X1の(22−N)ビット目から0ビット目までの部分が抽出される。すなわち、(223-N−1)は、下位(23−N)ビットの値だけが「1」となり、他のビットの値は「0」となる値であるので、論理積演算により、仮数X1の下位(23−N)ビットの値だけが抽出される。
例えば、図7に示すように、演算処理装置91では、浮動小数点数のデータの22ビット目から0ビット目までの仮数部(仮数X1)のうち、22ビット目から上位Nビットの部分を用いてインデックスindex1が生成される。そして、生成されたインデックスindex1により特定されるテーブル値が、仮数X1に対する、入力値Xの仮数部分の対数値を示す値として仮数の対数テーブルから取得される。
このテーブル値は、仮数X1の上位Nビットの部分を用いて得られた対数値の近似値であるため、この近似値には誤差が含まれる。そこで、補間処理部104は、仮数X1の22ビット目から上位Nビットの部分を用いてテーブル値を得て、さらに残りの(23−N)ビットの部分、つまり仮数X1の(22−N)ビット目から0ビット目までの部分を用いて補間処理を行って、最終的な対数値を求める。これにより、仮数の対数テーブルのテーブルサイズを大きくすることなく、簡単にべき乗演算の精度を向上させることができるようになる。
なお、図7の例においては、浮動小数点数のデータのうち、30ビット目から23ビット目までの8ビットの部分からバイアス値を引き算した値が、指数X2の整数型のデータとして抽出される。
図6のフローチャートの説明に戻り、インデックスindex1および下位値Xh1が求められると、補間処理部104は、さらに、インデックスindex1により特定される仮数の対数テーブルのテーブル値と、下位値Xh1とから補間処理を行う。
例えば、補間処理として線形補間を行う場合、補間処理部104は、次式(25)および式(26)を計算して、入力値Xの仮数部分の対数値のテーブル値V10およびテーブル値V11を求める。
すなわち、補間処理部104は、インデックスindex1を変数iの値としたテーブル値logtable[index1]をテーブル値V10として、仮数の対数テーブル保持部102の仮数の対数テーブルから取得する。同様に、補間処理部104は、インデックスindex1+1を変数iの値としたテーブル値logtable[index1+1]をテーブル値V11として、仮数の対数テーブルから取得する。これにより、仮数の対数テーブルから、インデックスindex1の近傍の2つのテーブル値V10およびテーブル値V11が得られたことになる。
そして、補間処理部104は、下位値Xh1と、テーブル値V10およびテーブル値V11とを用いて式(27)を計算することにより線形補間を行い、2を底とする入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))を求める。
なお、式(27)における「a」および変数「xin」は、それぞれ式(28)および式(29)により表される。
すなわち、補間処理として線形補間が行われる場合、図8に示すように、テーブル値V10を原点とみなして、インデックスに対する対数値の傾きaが求められ、インデックス(index1)の値がxinであるときの対数値が補間された対数値として求められる。なお、図8において、縦軸は対数値を示しており、横軸はインデックス(インデックスindex1)の値を示している。
また、例えば、補間処理部104は、補間処理として2次の多項式補間を行う場合、上述した式(25)および式(26)と、次式(30)とを計算することにより、入力値Xの仮数部分の対数値のテーブル値V10乃至テーブル値V12を求める。
すなわち、補間処理部104は、テーブル値V10およびテーブル値V11とともに、インデックスindex1+2を変数iの値としたテーブル値logtable[index1+2]をテーブル値V12として、仮数の対数テーブル保持部102の仮数の対数テーブルから取得する。
そして、補間処理部104は、下位値Xh1と、テーブル値V10乃至テーブル値V12とを用いて式(31)を計算することにより2次の多項式補間を行い、2を底とする入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))を求める。
なお、式(31)における「a」、「b」、および「xin」は、それぞれ式(32)乃至式(34)により表される。
すなわち、補間処理として2次の多項式補間が行われる場合、図9に示すように、テーブル値V10を原点とみなして、下位値Xh1から求まるインデックスの値xinの2乗の値に乗算される係数aと、値xinに乗算される係数bとが求められ、インデックス(index1)の値がxinであるときの対数値が補間された対数値として求められる。なお、図9において、縦軸は対数値を示しており、横軸はインデックスの値を示している。
なお、補間処理部104は、補間処理を行わない場合には、式(25)により得られるテーブル値V10を、入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))とする。
このようにして求められた対数値の補間値(log2(1+X1/223))は、入力値Xの仮数部分の最終的な対数値(log2(1+X1/223))とされて、補間処理部104から対数演算部105に供給される。
ステップS45において、対数演算部105は、仮数/指数分離部101からの指数X2、補間処理部104からの対数値(log2(1+X1/223))、および供給されたべき指数Yを用いて上述した式(6)を計算し、対数Zを求める。これにより、2を底とする演算値Pの対数Zが得られる。対数演算部105は、計算により得られた対数Zを整数/小数分離部106に供給する。なお、対数Zは、浮動小数点型の2進数のデータとされる。
ステップS46において、整数/小数分離部106は、対数演算部105からの対数Zの整数Zintおよび小数Zamariを求め、整数Zintをべき乗演算部107に供給するとともに、小数Zamariを補間処理部104に供給する。
具体的には、整数/小数分離部106は、対数Zを用いて次式(35)により整数Zintを求める。
すなわち、対数Zが0以上である場合には、その対数Zの整数部分が抽出されて整数Zintとされ、対数Zが0未満である場合には、その対数Zの整数部分が抽出され、その整数部分からさらに1が減算された値が整数Zintとされる。
また、整数/小数分離部106は、対数Zを用いて次式(36)により小数Zamariを求める。
式(36)では、対数Zから、その対数Zの整数部分が減算されて得られる値(差分)に、さらに223が乗算された値の整数部分が小数Zamariとされる。つまり、対数Zと対数Zの整数部分との差分を求めることで、対数Zの小数部分の値が求まる。そして、その小数部分の値に223を乗算して、その結果得られる値の整数部分を抽出することで、対数Zの小数部分が、小数点が23ビット目に位置する固定小数点数、つまり固定小数点型のデータに変換される。
ステップS47において、補間処理部104は、整数/小数分離部106からの小数Zamariを用いて補間処理を行い、小数Zamariをべき指数とする底2のべき乗値の補間値を求める。
すなわち、補間処理部104は、次式(37)および式(38)を計算することにより、固定小数点化された小数Zamariの22ビット目から上位Nビットの値をindex2として取り出す。
なお、式(37)において「>>」は右シフトを示しており、式(38)において「&」は論理積演算を示している。
つまり、補間処理部104は、小数Zamariを(23−N)ビットだけ右シフトすることにより、小数Zamariの(23−N)ビット目から上位ビットの値を取り出してindex2’とする。ここで、小数Zamariは式(36)の計算により、小数点位置が23ビット目にある固定小数点数とされているので、小数Zamariを(23−N)ビットだけ右シフトすると、小数Zamariの小数部分の(23−N)ビット目から上位ビットの値が抽出される。また、補間処理部104は、このようにして得られたindex2’と、(SIZE−1)との論理積演算をすることでNビットのインデックスindex2を求める。
さらに、補間処理部104は、次式(39)を計算することにより、小数Zamariの(22−N)ビット目から0ビット目までの部分の値である下位値Xh2を求める。
式(39)では、式(24)における場合と同様に、2進数のデータである小数Zamariと(223-N−1)との論理積演算を行うことにより、小数Zamariの(22−N)ビット目から0ビット目までの部分が抽出される。
このようにして、インデックスindex2および下位値Xh2が求められると、補間処理部104は、さらに、インデックスindex2により特定される小数のべき乗テーブルのテーブル値と、下位値Xh2とから補間処理を行う。
例えば、補間処理として線形補間を行う場合、補間処理部104は、次式(40)および式(41)を計算して、小数Zamariをべき指数とする底2のべき乗値のテーブル値V20およびテーブル値V21を求める。
すなわち、補間処理部104は、インデックスindex2およびインデックスindex2+1を変数iの値としたテーブル値twotable[index2]およびテーブル値twotable[index2+1]をテーブル値V20およびテーブル値V21として、小数のべき乗テーブル保持部103の小数のべき乗テーブルから取得する。これにより、小数のべき乗テーブルから、インデックスindex2の近傍の2つのテーブル値V20およびテーブル値V21が得られたことになる。
なお、上述した式(38)の論理積演算と、式(35)の対数Zが負である場合における、対数Zの整数からの1の減算とを行うことは、次の演算を行うことと等価である。すなわち、式(38)および式(35)の演算は、対数Z=(整数Zint+小数Zamari)における小数Zamariが負であるときに、対数Zの整数Zintから1を減算し、対数Zの小数Zamariに1を加算することと等価である。
このような演算を行うと、インデックスindex2を用いて、小数のべき乗テーブルからインデックスindex2により特定されるテーブル値(べき乗値)を取得する際に必要となる条件分岐の数を減らすことができ、より迅速にテーブル値を得ることができるようになる。
なお、2のべき乗演算を、べき指数の小数と整数とに分けて、テーブルを利用して行う場合に、べき指数が負であるときに小数に1を加算し、整数から1を減算することで、テーブル引きの条件分岐数を削減する技術は、特開2004−172700に記載されている。
以上のようにして、下位値Xh2と、テーブル値V20およびテーブル値V21とが求まると、補間処理部104は、下位値Xh2と、テーブル値V20およびテーブル値V21とを用いて式(42)を計算することにより線形補間を行い、小数Zamariをべき指数とする底2のべき乗値の補間値(2^Zamari)を求める。
なお、式(42)における「a」および変数「xin」は、それぞれ式(43)および式(44)により表される。
すなわち、補間処理として線形補間が行われる場合、図8に示した場合と同様に、テーブル値V20を原点とみなして、インデックスに対するべき乗値の傾きaが求められ、インデックス(index2)の値がxinであるときのべき乗値が補間されたべき乗値として求められる。
また、例えば、補間処理部104は、補間処理として2次の多項式補間を行う場合、上述した式(40)および式(41)と、次式(45)とを計算することにより、小数Zamariをべき指数とする底2のべき乗値のテーブル値V20乃至テーブル値V22を求める。
すなわち、補間処理部104は、テーブル値V20およびテーブル値V21とともに、インデックスindex2+2を変数iの値としたテーブル値twotable[index2+2]をテーブル値V22として、小数のべき乗テーブル保持部103の小数のべき乗テーブルから取得する。
そして、補間処理部104は、下位値Xh2と、テーブル値V20乃至テーブル値V22とを用いて式(46)を計算することにより2次の多項式補間を行い、小数Zamariをべき指数とする底2のべき乗値の補間値(2^Zamari)を求める。
なお、式(46)における「a」、「b」、および「xin」は、それぞれ式(47)乃至式(49)により表される。
すなわち、補間処理として2次の多項式補間が行われる場合、図9に示した場合と同様に、テーブル値V20を原点とみなして、下位値Xh2から求まるインデックスの値xinの2乗の値に乗算される係数aと、値xinに乗算される係数bとが求められ、インデックス(index2)の値がxinであるときのべき乗値が補間されたべき乗値として求められる。
なお、補間処理部104は、補間処理を行わない場合には、式(40)により得られるテーブル値V20を、小数Zamariをべき指数とする底2のべき乗値の補間値(2^Zamari)とする。
このようにして求められたべき乗値の補間値(2^Zamari)は、小数Zamariをべき指数とする底2の最終的なべき乗値として、補間処理部104からべき乗演算部107に供給される。
ステップS48において、べき乗演算部107は、補間処理部104からのべき乗値(2^Zamari)と、整数/小数分離部106からの整数Zintとを用いて演算値Pを求める。
すなわち、べき乗演算部107は、整数Zintを用いて次式(50)を計算し、整数Zintをべき指数とする底2のべき乗値(2^Zint)を求める。
なお、式(50)において、「<<」は左シフトを示している。すなわち、べき乗演算部107は、求めようとするべき乗値(2^Zint)を、IEEE754に基づく浮動小数点型のフォーマットのデータとするために、整数Zintにバイアス成分「127」を加算し、23ビットだけ左シフトする。
左シフト演算が行われるのは、浮動小数点数の指数部が、浮動小数点型のデータにおける30ビット目から23ビット目までの部分となるからである。これにより、指数部が「Zint+127」である浮動小数点型のデータが得られる。
このようにして、べき乗値(2^Zamari)およびべき乗値(2^Zint)が得られると、べき乗演算部107は、これらのべき乗値を式(51)に代入して演算値Pを求め、得られた演算値Pを整数変換部108に供給する。ここで、求められる演算値Pは、浮動小数点型のデータとされる。
ステップS49において、整数変換部108は、べき乗演算部107からの演算値Pを整数化して出力し、べき乗演算処理は終了する。
すなわち、整数変換部108は、次式(52)を計算することにより、演算値Pに定数αが加算されて得られる数の整数部分を求め、求められた値を、整数化された演算値Pである出力値として出力する。
以上のようにして、演算処理装置91は、仮数の対数テーブルおよび小数のべき乗テーブルのテーブル値を用いて補間処理を行い、補間処理により得られた対数値およびべき乗値を用いて演算値Pを求める。
このように、補間処理を行って演算値Pを求めることで、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズを増やさずに、簡単にべき乗演算の精度を向上させることができる。したがって、べき乗の演算に必要なテーブルを記録するメモリのメモリ容量を少なくすることができ、かつより簡単に精度よくべき乗の演算を行うことができる。
具体的には、上述した式(20)を計算して求まる相対誤差平均Tにより、本出願人が演算処理装置91のべき乗の演算精度の評価を行ったところ、図10に示す評価結果が得られた。
図10には、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズにおけるNを8とし、すなわちSIZE=256とし、L=8192個のデータを用いたときの相対誤差平均Tが示されている。
すなわち、文字「べき乗:補間なし」は、小数のべき乗テーブルの値を補間処理せずに演算値Pの算出に用いたことを示している。文字「べき乗:線形補間」および「べき乗:2次補間」は、小数のべき乗テーブルの値に線形補間および2次の多項式補間を行って得られた値を、演算値Pの算出に用いたことを示している。
同様に、文字「対数:補間なし」は、仮数の対数テーブルの値を補間処理せずに演算値Pの算出に用いたことを示しており、文字「対数:線形補間」および「対数:2次補間」は、仮数の対数テーブルの値に線形補間および2次の多項式補間を行って得られた値を、演算値Pの算出に用いたことを示している。
図10では、仮数の対数テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、べき乗(より詳細にはべき乗の整数)の演算精度が改善されることが分かる。例えば、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとT=1.71×10-6となり、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に2次の多項式補間を施すとT=1.99×10-7となっている。
このように、両方のテーブル値に、線形補間または2次の多項式補間を施したときの相対誤差平均は、従来の量子化装置51において、N=16のとき、つまりテーブルサイズSIZE=65536としたときの相対誤差平均T=5.10×10-6と比べて小さくなっており、演算精度が改善されていることが分かる。すなわち、より小さいテーブルサイズで、より高い演算精度が得られる。
また、N=1,・・・,8である場合、つまり仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズのSIZE=2,・・・,256である場合、仮数の対数テーブルの値、および小数のべき乗テーブルの値の両方の値に、補間処理を施さないとき、線形補間を施したとき、および2次の多項式補間を施したときのそれぞれの相対誤差平均Tとして、図11に示す結果が得られた。
なお、図中、「テーブルサイズ」の欄は、テーブルサイズのSIZEの数(個数)を示しており、文字「補間なし」、「線形補間」、および「2次補間」のそれぞれは、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、補間処理を施さない場合、線形補間を施す場合、および2次の多項式補間を施す場合のそれぞれを示している。
図11では、テーブルサイズが「8」で線形補間を行う場合と、テーブルサイズが「4」で2次の多項式補間を行う場合とで、「補間なし」のテーブルサイズが「256」のときの精度と同等の精度が実現されていることが分かる。
すなわち、テーブルサイズが「256」で補間処理を行わない場合、相対誤差平均T=5.44×10-3である。また、テーブルサイズが「8」で線形補間を行う場合、相対誤差平均T=1.74×10-3であり、テーブルサイズが「4」で2次の多項式補間を行う場合、相対誤差平均T=1.70×10-3である。このように、演算処理装置91では、補間処理を行うことで、より少ないテーブルサイズ(テーブル数)で、より高い精度のべき乗の演算を行うことができる。
なお、以上においては、仮数の対数テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。テーブルサイズが変更される場合、そのサイズに合わせて補間処理部104により行われる補間処理時のビット位置、つまり下位値Xh1または下位値Xh2の大きさも変更される。
また、仮数の対数テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。さらに、補間処理として、線形補間や2次の多項式補間に限らず、3次以上の多項式補間やスプライン補間が施されるようにしてもよい。
また、以上においては、入力値Xが2進数で表現されているので、底2の対数と、底2のべき乗をペアとして演算値Pを求めたが、入力値XがM進数で表現される場合には、底Mの対数(対数Z)と、底Mのべき乗をペアとしても同様の演算で演算値Pを求めることができる。すなわち、そのような場合、対数Z=logMPとされ、演算値P=(M^Zint)×(M^Zamari)とされる。
[第2の実施の形態]
図12は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図12において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
図12は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図12において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置131は、対数演算処理部141、べき乗演算処理部142、および整数変換部108から構成される。演算処理装置131では、対数演算処理部141に入力値Xおよびべき指数Yが供給される。
対数演算処理部141は、供給された入力値Xおよびべき指数Yを用いて対数Zを求め、べき乗演算処理部142に供給する。べき乗演算処理部142は、対数演算処理部141からの対数Zから演算値Pを求め、整数変換部108に供給する。
次に、図13のフローチャートを参照して、演算処理装置131によるべき乗演算処理について説明する。
ステップS71において、対数演算処理部141は、対数演算処理を行って、対数Zを求め、べき乗演算処理部142に供給する。なお、対数演算処理の詳細は後述するが、この対数演算処理において、上述した式(6)の演算が行われて対数Zが算出される。
ステップS72において、べき乗演算処理部142は、演算値算出処理を行って演算値Pを求め、整数変換部108に供給する。なお、演算値算出処理の詳細は後述するが、この演算値算出処理において、上述した式(7)の演算が行われて演算値Pが算出される。
その後、ステップS73の処理が行われてべき乗演算処理は終了するが、ステップS73の処理は、図6のステップS49の処理と同様であるので、その説明は省略する。
ところで、対数演算処理を行う対数演算処理部141の実現方法として、いくつかの方法が考えられる。
例えば、対数演算処理部141では、式(6)の演算が行われて対数Zが求められるが、対数Zにおける、入力値Xの仮数部分(1+X1/223)の取り得る値の範囲は、1.0≦(1+X1/223)<2.0であり、式(6)における対数の演算の底も「2」と定められている。したがって、式(6)における対数値(log2(1+X1/223))の演算を行うための処理量はそれほど多くない。
そこで、対数演算処理部141を、底2の対数の演算を行う演算装置から構成すれば、高速で対数Zを算出する演算処理を行うことのできる対数演算処理部141を実現することができる。この場合、演算装置として、対数値(log2(1+X1/223))を求める専用の演算装置を用意すれば、汎用の演算装置を用いる場合よりも、対数演算処理部141の構成を簡単な構成とすることができる。
そのような場合、対数演算処理部141は、図14に示すように構成される。なお、図14において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
図14の対数演算処理部141は、仮数/指数分離部101および対数演算部171から構成される。また、対数演算処理部141では、仮数/指数分離部101に入力値Xが供給され、対数演算部171にべき指数Yが供給される。
対数演算部171は、対数の演算を行う演算装置などから構成され、供給されたべき指数Yと、仮数/指数分離部101から供給された仮数X1および指数X2とを用いて、演算装置により対数Zを求め、図12のべき乗演算処理部142に供給する。
次に、図15のフローチャートを参照して、図13のステップS71の処理に対応する処理である対数演算処理について説明する。なお、ステップS91の処理は、図6のステップS43の処理と同様であるので、その説明は省略する。
ステップS92において、対数演算部171は、供給されたべき指数Yと、仮数/指数分離部101からの仮数X1および指数X2とから、演算装置を用いて式(6)を計算し、対数Zを求める。
すなわち、対数演算部171は、内蔵している演算装置を用いて、仮数/指数分離部101からの仮数X1から、2を底とする入力値Xの仮数部分の対数値(log2(1+X1/223))を求める。このとき、仮数X1は、23ビット目に小数点位置がある整数型のデータとされているので、浮動小数点型のデータに変換されて対数値の演算が行われる。
さらに、対数演算部171は、求めた対数値、供給されたべき指数Y、および仮数/指数分離部101からの指数X2を式(6)に代入して対数Zの値を求め、対数Zをべき乗演算処理部142に供給する。べき乗演算処理部142に対数Zが供給されると、対数演算処理は終了し、処理は図13のステップS72に進む。
このようにして対数演算処理部141は、演算装置を利用して対数Zを求める。これにより、仮数の対数テーブルが不要となり、対数演算処理部141の小型化を図ることができる。
また、図14では、対数演算処理部141が演算装置を利用して演算を行う例について説明したが、仮数の対数テーブルが利用されて対数Zが求められるようにしてもよい。そのような場合、対数演算処理部141は、例えば図16に示すように構成される。なお、図16において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
図16の対数演算処理部141は、仮数/指数分離部101、仮数の対数テーブル保持部102、および対数演算部201から構成される。また、対数演算処理部141では、仮数/指数分離部101に入力値Xが供給され、対数演算部201にべき指数Yが供給される。
対数演算部201は、供給されたべき指数Yと、仮数/指数分離部101からの仮数X1および指数X2とを用いて、仮数の対数テーブル保持部102の仮数の対数テーブルを参照しながら対数Zを求め、求めた対数Zを図12のべき乗演算処理部142に供給する。
次に、図17のフローチャートを参照して、図13のステップS71の処理に対応する処理である対数演算処理について説明する。
なお、ステップS121およびステップS122の処理は、図6のステップS41およびステップS43の処理と同様であるので、その説明は省略する。
但し、ステップS121において、仮数の対数テーブル保持部102は、仮数の対数テーブルのテーブルサイズを2N=SIZEとして、上述した式(21)に示されるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。したがって、変数i=0,・・・,(SIZE−1)とされる。
仮数の対数テーブルが生成され、入力値Xの仮数X1および指数X2が求められると、ステップS123において、対数演算部201は、仮数/指数分離部101からの仮数X1を用いて、仮数の対数テーブル保持部102の仮数の対数テーブルを利用し、入力値Xの仮数部分の対数値(log2(1+X1/223))を求める。
すなわち、対数演算部201は、仮数X1を用いて式(23)を計算して、仮数X1の22ビット目から上位Nビットの値をインデックスindex1として求め、そのインデックスindex1を用いて式(53)により、入力値Xの仮数部分の対数値を求める。
具体的には、対数演算部201は、仮数X1から抽出した上位Nビットの値をインデックスindex1とし、インデックスindex1を変数iの値としたテーブル値logtable[index1]を、仮数の対数テーブル保持部102の仮数の対数テーブルから取得する。そして、この取得されたテーブル値logtable[index1]が、入力値Xの仮数部分の対数値(log2(1+X1/223))とされる。
ステップS124において、対数演算部201は、仮数/指数分離部101からの指数X2、供給されたべき指数Y、および求めた対数値(log2(1+X1/223))を、式(6)に代入して対数Zを求め、対数Zをべき乗演算処理部142に供給する。対数Zが求められると、対数演算処理は終了し、処理は図13のステップS72に進む。
このようにして、対数演算処理部141は、仮数の対数テーブルを利用して対数Zを求める。
なお、仮数の対数テーブルのテーブルサイズを減らすために、仮数の対数テーブルから得られたテーブル値に対して補間処理が行われるようにしてもよい。そのような場合、対数演算処理部141は、例えば、図18に示すように構成される。なお、図18において、図5における場合と対応する部分には同一の符号を付してあり、その説明は、適宜省略する。
図18の対数演算処理部141は、仮数/指数分離部101、仮数の対数テーブル保持部102、補間処理部104、および対数演算部231から構成される。また、対数演算処理部141では、仮数/指数分離部101に入力値Xが供給され、対数演算部231にべき指数Yが供給される。
仮数/指数分離部101は、供給された入力値Xの仮数X1および指数X2を求め、仮数X1を補間処理部104に供給するとともに、指数X2を対数演算部231に供給する。補間処理部104は、仮数/指数分離部101からの仮数X1を用いて、仮数の対数テーブル保持部102の仮数の対数テーブルのテーブル値に補間処理を施して、入力値Xの仮数部分の対数値を求め、対数演算部231に供給する。
対数演算部231は、仮数/指数分離部101からの指数X2、供給されたべき指数Y、および補間処理部104からの対数値を用いて対数Zを求め、図12のべき乗演算処理部142に供給する。
次に、図19のフローチャートを参照して、図13のステップS71の処理に対応する処理である対数演算処理について説明する。
なお、ステップS151乃至ステップS153の処理のそれぞれは、図6のステップS41、ステップS43、およびステップS44の処理のそれぞれと同様であるため、その説明は省略する。
すなわち、仮数の対数テーブル保持部102により、式(21)に示した仮数の対数テーブルが生成され、仮数/指数分離部101により入力値Xの仮数X1および指数X2が求められて、仮数X1が補間処理部104に供給されるとともに、指数X2が対数演算部231に供給される。
そして、補間処理部104により、仮数X1から式(23)および式(24)のインデックスindex1および下位値Xh1が求められ、インデックスindex1が用いられて仮数の対数テーブルからテーブル値が取得される。さらに、補間処理部104により、下位値Xh1と、テーブル値とから線形補間、2次の多項式補間等の補間処理が行われて、入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))が求められる。このようにして求められた補間値は、入力値Xの仮数部分の最終的な対数値として、補間処理部104から対数演算部231に供給される。
なお、生成される仮数の対数テーブルのテーブルサイズは、補間処理部104により行われる補間処理に応じて定められる。例えば、補間処理として、2次の多項式補間が行われる場合には、テーブルサイズは、2N+2=SIZE+2とされる。
ステップS154において、対数演算部231は、仮数/指数分離部101からの指数X2、供給されたべき指数Y、および補間処理部104からの対数値(log2(1+X1/223))を用いて式(6)を計算し、対数Zを求める。そして、対数演算部231が、求めた対数Zをべき乗演算処理部142に供給すると、対数演算処理は終了し、処理は図13のステップS72に進む。
このようにして、対数演算処理部141は、仮数の対数テーブルから取得したテーブル値を用いて補間処理を行い、補間処理により得られた対数値から、対数Zを求める。
また、図12の演算処理装置131では、対数演算処理部141と同様に、べき乗演算処理部142についても、いくつかの実現方法が考えられる。
例えば、べき乗演算処理部142では、式(7)の演算が行われて演算値Pが求められるが、式(7)のべき乗値(2^Zamari)における小数Zamariの取り得る値の範囲は、0≦Zamari<1.0である。したがって、べき乗値(2^Zamari)の演算を行うための処理量はそれほど多くない。
そこで、べき乗演算処理部142を、2のべき乗の演算を行う演算装置から構成すれば、高速で演算値Pを算出する演算処理を行うことのできるべき乗演算処理部142を実現することができる。この場合、演算装置として、べき乗値(2^Zamari)を求める専用の演算装置を用意すれば、汎用の演算装置を用いる場合よりも、べき乗演算処理部142の構成を簡単な構成とすることができる。
そのような場合、べき乗演算処理部142は、図20に示すように構成される。
図20に示すべき乗演算処理部142は、整数/小数分離部261およびべき乗演算部262から構成される。また、べき乗演算処理部142では、対数演算処理部141からの対数Zは、整数/小数分離部261に供給される。
整数/小数分離部261は、対数演算処理部141から供給された対数Zの整数Zintおよび小数Zamariを求めてべき乗演算部262に供給する。べき乗演算部262は、整数/小数分離部261からの整数Zintおよび小数Zamariを用い、演算装置を利用して演算値Pを求め、図12の整数変換部108に供給する。
次に、図21のフローチャートを参照して、図13のステップS72の処理に対応する処理である演算値算出処理について説明する。
ステップS181において、整数/小数分離部261は、対数演算処理部141から供給された対数Zから、次式(54)および式(55)を計算して、整数Zintおよび小数Zamariを求める。
すなわち、整数/小数分離部261は、対数Zの整数部分を抽出して整数Zintとするとともに、対数Zから、対数Zの整数部分を減算して得られる値を小数Zamariとする。このようにして求められた整数Zintおよび小数Zamariは、整数/小数分離部261からべき乗演算部262に供給される。
ステップS182において、べき乗演算部262は、内蔵する演算装置を用いて、整数/小数分離部261から供給された小数Zamariから、小数Zamariをべき指数とする底「2」のべき乗値(2^Zamari)を求める。
ステップS183において、べき乗演算部262は、整数/小数分離部261からの整数Zint、および求めたべき乗値(2^Zamari)から演算値Pを求めて整数変換部108に供給する。
すなわち、べき乗演算部262は、整数/小数分離部261からの整数Zintを、上述した式(50)に代入することで、整数Zintをべき指数とする底2のべき乗値(2^Zint)を求める。さらに、べき乗演算部262は、求めたべき乗値(2^Zint)およびべき乗値(2^Zamari)を式(51)に代入して演算値Pを求める。ここで、演算値Pは、浮動小数点型のデータとされる。演算値Pが求められ、整数変換部108に供給されると、演算値算出処理は終了し、処理は図13のステップS73に進む。
このようにして、べき乗演算処理部142は、演算装置を利用して演算値Pを求める。これにより、小数のべき乗テーブルが不要となり、べき乗演算処理部142の小型化を図ることができる。
また、図20では、べき乗演算処理部142が演算装置を利用して演算を行う例について説明したが、小数のべき乗テーブルが利用されて演算値Pが求められるようにしてもよい。そのような場合、べき乗演算処理部142は、例えば図22に示すように構成される。なお、図22において、図5における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
図22のべき乗演算処理部142は、整数/小数分離部106、小数のべき乗テーブル保持部103、およびべき乗演算部301から構成される。また、べき乗演算処理部142では、対数演算処理部141からの対数Zは、整数/小数分離部106に供給される。
整数/小数分離部106は、対数演算処理部141から供給された対数Zの整数Zintおよび小数Zamariを求めてべき乗演算部301に供給する。べき乗演算部301は、小数のべき乗テーブル保持部103の小数のべき乗テーブルを参照しながら、整数/小数分離部106からの整数Zintおよび小数Zamariを用いて、演算値Pを求め、図12の整数変換部108に供給する。
次に、図23のフローチャートを参照して、図13のステップS72の処理に対応する処理である演算値算出処理について説明する。
なお、ステップS211およびステップS212の処理は、図6のステップS42およびステップS46の処理と同様であるので、その説明は省略する。
但し、ステップS211において、小数のべき乗テーブル保持部103は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとして、上述した式(22)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。したがって、変数i=0,・・・,(SIZE−1)とされる。さらに、小数のべき乗テーブルが生成され、上述した式(35)および式(36)により整数Zintおよび小数Zamariが求められると、処理はステップS212からステップS213に進む。
ステップS213において、べき乗演算部301は、整数/小数分離部106からの小数Zamariを用いて、小数のべき乗テーブル保持部103の小数のべき乗テーブルを利用し、小数Zamariをべき指数とする底2のべき乗値(2^Zamari)を求める。
すなわち、べき乗演算部301は、小数Zamariを用いて式(37)および式(38)を計算し、小数Zamariの22ビット目から上位Nビットの値をインデックスindex2として求める。さらに、べき乗演算部301は、そのインデックスindex2を用いて次式(56)により、べき乗値(2^Zamari)を求める。
具体的には、べき乗演算部301は、小数Zamariから抽出した上位Nビットの値をインデックスindex2とし、インデックスindex2を変数iの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部103の小数のべき乗テーブルから取得する。そして、この取得されたテーブル値twotable[index2]が、べき乗値(2^Zamari)とされる。
ステップS214において、べき乗演算部301は、整数/小数分離部106からの整数Zint、および求めたべき乗値(2^Zamari)から演算値Pを求める。
すなわち、べき乗演算部301は、整数/小数分離部106からの整数Zintから、上述した式(50)を計算することにより、べき乗値(2^Zint)を求める。さらに、べき乗演算部301は、求めたべき乗値(2^Zamari)およびべき乗値(2^Zint)を式(51)に代入して、演算値Pを求め、整数変換部108に供給する。演算値Pが求められると、演算値算出処理は終了し、処理は図13のステップS73に進む。
このようにして、べき乗演算処理部142は、小数のべき乗テーブルを利用して演算値Pを求める。
なお、小数のべき乗テーブルのテーブルサイズを減らすために、小数のべき乗テーブルから得られたテーブル値に対して補間処理が行われるようにしてもよい。そのような場合、べき乗演算処理部142は、例えば、図24に示すように構成される。なお、図24において、図5における場合と対応する部分には同一の符号を付してあり、その説明は、適宜省略する。
図24のべき乗演算処理部142は、小数のべき乗テーブル保持部103、補間処理部104、整数/小数分離部106、およびべき乗演算部107から構成される。また、べき乗演算処理部142では、対数演算処理部141からの対数Zは、整数/小数分離部106に供給される。
整数/小数分離部106は、対数演算処理部141から供給された対数Zの整数Zintおよび小数Zamariを求め、小数Zamariを補間処理部104に供給するとともに、整数Zintをべき乗演算部107に供給する。べき乗演算部107は、整数/小数分離部106からの整数Zintと、補間処理部104からのべき乗値(2^Zamari)とから演算値Pを求め、図12の整数変換部108に供給する。
次に、図25のフローチャートを参照して、図13のステップS72の処理に対応する処理である演算値算出処理について説明する。
なお、ステップS241乃至ステップS243の処理のそれぞれは、図6のステップS42、ステップS46、およびステップS47の処理のそれぞれと同様であるため、その説明は省略する。
すなわち、小数のべき乗テーブル保持部103により、例えば式(22)に示した小数のべき乗テーブルが生成され、整数/小数分離部106により、対数演算処理部141からの対数Zから、式(35)および式(36)が計算されて整数Zintおよび小数Zamariが求められる。そして、整数Zintは整数/小数分離部106からべき乗演算部107に供給され、小数Zamariは、整数/小数分離部106から補間処理部104に供給される。
さらに、補間処理部104により、小数Zamariから式(37)乃至式(39)が計算されて、インデックスindex2および下位値Xh2が求められ、インデックスindex2が用いられて小数のべき乗テーブルからテーブル値が取得される。その後、補間処理部104により、下位値Xh2と、テーブル値とから線形補間、2次の多項式補間等の補間処理が行われて、小数Zamariをべき指数とする2のべき乗値の補間値(2^Zamari)が求められる。求められた補間値は、最終的なべき乗値(2^Zamari)とされて補間処理部104からべき乗演算部107に供給される。
ステップS244において、べき乗演算部107は、整数/小数分離部106からの整数Zint、および補間処理部104からのべき乗値(2^Zamari)から演算値Pを求める。
すなわち、べき乗演算部107は、整数/小数分離部106からの整数Zintから、上述した式(50)を計算することにより、べき乗値(2^Zint)を求める。さらに、べき乗演算部107は、補間処理部104からのべき乗値(2^Zamari)およびべき乗値(2^Zint)を式(51)に代入して、演算値Pを求め、整数変換部108に供給する。演算値Pが求められると、演算値算出処理は終了し、処理は図13のステップS73に進む。
このようにして、べき乗演算処理部142は、小数のべき乗テーブルから取得したテーブル値を用いて補間処理を行い、補間処理により得られたべき乗値から演算値Pを求める。
[第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とされる場合、演算処理装置は、図26に示すように構成される。なお、図26において、図5における場合と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置331は、仮数/指数分離部101、仮数の対数テーブル保持部341、小数のべき乗テーブル保持部342、対数演算部343、整数/小数分離部344、およびべき乗整数変換部345から構成される。
演算処理装置331では、仮数/指数分離部101に、入力値X=X’+α1/Yが供給され、対数演算部343にべき指数Yが供給される。すなわち、演算処理装置331は、変数X’に定数α1/Yを加算して入力値Xとし、その入力値Xを仮数/指数分離部101に供給する。
仮数の対数テーブル保持部341および小数のべき乗テーブル保持部342は、仮数の対数テーブルおよび小数のべき乗テーブルを保持しており、インデックスindex1およびインデックスindex2により特定されるテーブル値を、対数演算部343およびべき乗整数変換部345に供給する。
対数演算部343は、仮数/指数分離部101から供給された、入力値Xの仮数X1および指数X2を用いて式(6)により、対数Zを求め、整数/小数分離部344に供給する。その際、対数演算部343は、仮数の対数テーブル保持部341から、仮数X1から得られるインデックスindex1により特定されるテーブル値を、入力値Xの仮数部分の対数値(log2(1+X1/223))として取得する。
整数/小数分離部344は、対数演算部343からの対数Zを、整数Zintおよび小数Zamariに分離し、べき乗整数変換部345に供給する。べき乗整数変換部345は、小数のべき乗テーブル保持部342の小数のべき乗テーブルを参照し、整数/小数分離部344からの整数Zintおよび小数Zamariを用いて演算値(P+α)の整数部分を求め、出力する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値、つまり演算値(P+α)=XYであり、整数化の対象となる値である。
次に、図27のフローチャートを参照して、演算処理装置331によるべき乗演算処理について説明する。
ステップS271において、仮数の対数テーブル保持部341は、仮数の対数テーブルを生成する。すなわち、仮数の対数テーブル保持部341は、仮数の対数テーブルのテーブルサイズを2N=SIZEとすると、次式(57)に示される、仮数X1の値に対する、2を底とする入力値Xの仮数部分の対数値であるテーブル値logtable[i]からなる仮数の対数テーブルを生成する。
ここで、テーブル値logtable[i]の変数iは、仮数X1から求まるインデックスindex1の値を示しており、変数i=0,・・・,(SIZE−1)とされる。仮数の対数テーブル保持部341は、(SIZE)個の各変数の値iのそれぞれに対する、テーブル値logtable[i]のそれぞれを求めると、それらの値iとテーブル値logtable[i]とを対応付けて仮数の対数テーブルを生成し、保持する。
ステップS272において、小数のべき乗テーブル保持部342は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部342は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、次式(58)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、テーブル値twotable[i]の変数iは、小数Zamariから求まり、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE−1)とされる。
インデックスindex2を、小数Zamariの上位何ビットかの値とすれば、式(58)における2(i/SIZE)は、小数Zamariの値をべき指数とし、底を2とするべき乗値2^Zamariの近似値となる。さらに、式(58)では、近似値2(i/SIZE)に223が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が23ビット目にある固定小数点数(固定小数点型の2進数のデータ)とされる。
小数のべき乗テーブル保持部342は、(SIZE)個の各変数の値iのそれぞれに対する、テーブル値twotable[i]のそれぞれを求めると、それらの値iとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、仮数の対数テーブルおよび小数のべき乗テーブルを生成する処理は、入力値Xのべき乗演算前に1度行っておけばよい。つまり、1度これらのテーブルを生成しておけば、その後、入力値Xのべき乗演算を行うときは、既に生成されて保持されている仮数の対数テーブルおよび小数のべき乗テーブルを用いればよい。
ステップS273において、仮数/指数分離部101は、供給された入力値Xの仮数X1および指数X2を求めて対数演算部343に供給する。
ステップS274において、対数演算部343は、仮数/指数分離部101からの仮数X1および指数X2を用いて式(6)により、2を底とする演算値(P+α)の対数Zを求め、整数/小数分離部344に供給する。なお、この場合、式(6)における演算値Pが、演算値(P+α)とされる。
例えば、対数演算部343は、仮数X1を用いて式(23)を計算して、仮数X1の22ビット目から上位Nビットの値をインデックスindex1として求め、そのインデックスindex1を用いて式(53)により、入力値Xの仮数部分の対数値を求める。
具体的には、対数演算部343は、仮数X1から抽出した上位Nビットの値をインデックスindex1とし、インデックスindex1を変数iの値としたテーブル値logtable[index1]を、仮数の対数テーブル保持部341の仮数の対数テーブルから取得する。そして、この取得されたテーブル値logtable[index1]が、入力値Xの仮数部分の対数値(log2(1+X1/223))とされる。
さらに、対数演算部343は、供給されたべき指数Y、仮数/指数分離部101からの指数X2、および取得した対数値(log2(1+X1/223))から、対数Z=Y(X2+log2(1+X1/223))を計算し、対数Zを得る。
ステップS275において、整数/小数分離部344は、対数演算部343から供給された対数Zの整数Zintおよび小数Zamariを求めてべき乗整数変換部345に供給する。
例えば、整数/小数分離部344は、対数Zを用いて次式(59)を計算することにより、対数Zの整数Zintを求める。
すなわち、対数Zが0以上である場合には、その対数Zの整数部分が抽出されて整数Zintとされ、対数Zが0未満である場合には、負の値「−2」が整数Zintとされる。
また、整数/小数分離部344は、対数Zを用いて次式(60)により小数Zamariを求める。
式(60)では、対数Zから、その対数Zの整数部分が減算されて得られる値(差分)に、さらに223が乗算された値の整数部分が小数Zamariとされる。つまり、対数Zと対数Zの整数部分との差分を求めることで、対数Zの小数部分の値が求まる。そして、その小数部分の値に223を乗算して、その結果得られる値の整数部分を抽出することで、対数Zの小数部分が、小数点が23ビット目に位置する固定小数点数(固定小数点型の2進数のデータ)に変換される。
ステップS276において、べき乗整数変換部345は、整数/小数分離部344からの整数Zintおよび小数Zamariを用いて、演算値(P+α)の整数部分を求めて出力する。
すなわち、べき乗整数変換部345は、小数Zamariを用いて式(37)および式(38)を計算し、小数Zamariの22ビット目から上位Nビットの値をインデックスindex2として求める。さらに、べき乗整数変換部345は、そのインデックスindex2を用いて式(56)により、べき乗値(2^Zamari)を求める。
具体的には、べき乗整数変換部345は、小数Zamariから抽出した上位Nビットの値をインデックスindex2とし、インデックスindex2を変数iの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部342の小数のべき乗テーブルから取得する。そして、この取得されたテーブル値twotable[index2]が、べき乗値(2^Zamari)とされる。
そして、べき乗整数変換部345は、求めたべき乗値(2^Zamari)と、整数/小数分離部344からの整数Zintとから、次式(61)を計算して、演算値(P+α)の整数部分を求める。
ここで、式(61)において、「>>」は右シフトを示している。べき乗整数変換部345は、べき乗値(2^Zamari)を(23−Zint)ビットだけ右シフトさせて、演算値(P+α)の整数部分の値(int)(P+α)を得る。
なお、(23−Zint)ビットの右シフトを行うのは、次のような理由からである。すなわち、テーブル引きにより求められたべき乗値(2^Zamari)は、小数点位置が23ビット目の位置にある固定小数点型のデータである。また、演算値(P+α)を、底(基数)を用いずに(通常の小数で)表現するには、べき乗値(2^Zamari)の値の小数点位置を、Zintだけ下位ビット側に移動(左シフト演算)させればよい。
したがって、べき乗値(2^Zamari)の値を(23−Zint)ビットだけ右シフトすれば、演算値(P+α)の整数部分の値が得られる。
また、対数Zが負である場合、演算値(P+α)は0≦P+α<1となるので、演算値(P+α)の整数部をとると0となる。
このように、演算値(P+α)の整数部分を求めるために右シフト演算が行われ、またべき乗値(2^Zamari)の最大値が2となることを考慮すると、整数Zintは、−2よりも大きい値とされる必要がある。そのため、上述した式(59)の整数Zintを求める計算では、対数Zが0未満(負)である場合には、整数Zint=−2とされる。
このようにして、演算値(P+α)の整数部分が求められると、べき乗整数変換部345は、演算値(P+α)の整数部分、つまり整数化された演算値(P+α)を出力し、べき乗演算処理は終了する。
以上のようにして、演算処理装置331は、値X’に定数α1/Yが加算された値を新たな入力値Xとし、演算値(P+α)の整数部を求める。
このように、値X’にα1/Yが加算された値を新たな入力値Xとして、演算値(P+α)の整数部分を求めることにより、より簡単かつ迅速に演算値(P+α)の整数部分の値を求めることができる。すなわち、一旦、演算値Pを求めてから、さらに演算値(P+α)の整数部分を求める必要がなく、べき乗値(2^Zamari)および整数Zintから、直接、演算値(P+α)の整数部分を求めることができる。これにより、図5の整数変換部108に相当する処理ブロックが不要となり、演算処理装置331の小型化も図ることができる。
なお、以上においては、仮数のべき乗テーブルと小数のべき乗テーブルのテーブルサイズが同じである例について説明したが、それらのテーブルサイズは、べき乗演算の必要な精度に応じて異なる大きさとされてもよい。また、入力値XをM進数で表現し、底Mの対数(対数Z)と、底Mのべき乗とから演算値(P+α)の整数部分を求めるようにしてもよい。
[第4の実施の形態]
ところで、上述した第3の実施の形態の演算処理装置331では、仮数の対数テーブルや小数のべき乗テーブルの値の補間処理が行われないため、べき乗の演算精度、つまり演算値の整数部分の演算精度を向上させるには、それらのテーブルのサイズを大きくする必要がある。
ところで、上述した第3の実施の形態の演算処理装置331では、仮数の対数テーブルや小数のべき乗テーブルの値の補間処理が行われないため、べき乗の演算精度、つまり演算値の整数部分の演算精度を向上させるには、それらのテーブルのサイズを大きくする必要がある。
具体的に、演算処理装置331により、仮数の対数テーブルおよび小数のべき乗テーブルが用いられて算出された演算値(P+α)の整数部分Rと、数学ライブラリを用いた計算により得られた演算値(P+α)の整数部分QとからなるL個のデータのセットを用いて、次式(62)を計算し、絶対誤差平均Uを求めて整数部分Rの算出精度を評価することを考える。
なお、式(62)において、Riは、演算処理装置331により算出された整数部分RのL個の整数部分(サンプル)のうちのi番目のサンプルを示しており、Qiは、数学ライブラリにより求められた、Riに対応する整数部分の値を示している。
例えば、L=8192として整数部分Rの算出精度の評価を行ったところ、テーブルサイズにおけるNが8であるとき、すなわちSIZE=256のとき、絶対誤差平均U=1.78×101となり、それほど高い精度は得られなかった。また、テーブルサイズにおけるNが16であるとき、すなわちSIZE=65536のとき、絶対誤差平均U=1.56×10-2となり、N=8の場合よりも高い精度が得られた。
このような絶対誤差平均Uによる評価の結果からも分かるように、演算処理装置331においては、演算値(P+α)の整数部分の演算精度を向上させるには、仮数の対数テーブルや小数のべき乗テーブルのサイズを大きくする必要がある。
そこで、入力値X=X’+α1/Yとし、仮数の対数テーブルおよび小数のべき乗テーブルの値の補間処理を行うようにすることで、より簡単に演算値を整数化するとともに、整数化の演算精度を向上させる。
そのような場合、演算処理装置は、例えば図28に示すように構成される。なお、図28において、図5、または図26における場合と対応する部分には、同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置371は、仮数/指数分離部101、仮数の対数テーブル保持部102、補間処理部104、対数演算部105、小数のべき乗テーブル保持部342、整数/小数分離部381、およびべき乗整数変換部382から構成される。
演算処理装置371では、入力値X=X’+α1/Yが仮数/指数分離部101に供給され、べき指数Yが対数演算部105に供給される。
整数/小数分離部381は、対数演算部105から供給された対数Zの整数Zintおよび小数Zamariを求めて、整数Zintをべき乗整数変換部382に供給するとともに、小数Zamariを補間処理部104に供給する。
べき乗整数変換部382は、補間処理部104から供給された、小数Zamariをべき指数とする2のべき乗値と、整数/小数分離部381からの整数Zintとを用いて、演算値(P+α)の整数部分を求め、出力する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値、つまり演算値(P+α)=XYである。
次に、図29のフローチャートを参照して、演算処理装置371によるべき乗演算処理について説明する。
なお、ステップS301の処理は、図6のステップS41の処理と同様であるため、その説明は省略する。すなわち、例えば、仮数の対数テーブル保持部102により、式(21)に示したテーブル値logtable[i]からなる仮数の対数テーブルが生成される。
ステップS302において、小数のべき乗テーブル保持部342は、小数のべき乗テーブルを生成する。例えば、補間処理部104により補間処理として2次の多項式補間が行われる場合、小数のべき乗テーブル保持部342は、小数のべき乗テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、小数のべき乗テーブル保持部342は、上述した式(58)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。この場合、変数i=0,・・・,(SIZE+1)とされる。
小数のべき乗テーブル保持部342は、(SIZE+2)個の各変数の値iのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値iとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、補間処理として、補間処理部104により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(58)のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
その後、ステップS303およびステップS304の処理が行われるが、それらの処理は、図6のステップS43およびステップS44の処理と同様であるので、その説明は省略する。
すなわち、仮数/指数分離部101により求められた入力値Xの仮数X1が補間処理部104に供給され、指数X2が対数演算部105に供給される。そして、補間処理部104により、仮数X1から式(23)および式(24)のインデックスindex1および下位値Xh1が求められ、インデックスindex1が用いられて仮数の対数テーブル保持部102の仮数の対数テーブルからテーブル値が取得される。
さらに、補間処理部104により、下位値Xh1と、テーブル値とから線形補間、2次の多項式補間等の補間処理が行われて、入力値Xの仮数部分の対数値の補間値(log2(1+X1/223))が求められる。このようにして求められた補間値は、最終的な入力値Xの仮数部分の対数値として、補間処理部104から対数演算部105に供給される。
ステップS305において、対数演算部105は、仮数/指数分離部101からの指数X2、供給されたべき指数Y、および補間処理部104からの対数値を用いて式(6)の演算を行い、2を底とする演算値(P+α)の対数Zを求め、整数/小数分離部381に供給する。なお、この場合、式(6)における演算値Pが、演算値(P+α)とされる。
ステップS306において、整数/小数分離部381は、対数演算部105からの対数Zを用いて、式(59)および式(60)から対数Zの整数Zintおよび小数Zamariを求める。整数/小数分離部381は、求めた整数Zintをべき乗整数変換部382に供給するとともに、小数Zamariを補間処理部104に供給する。
小数Zamariが補間処理部104に供給されると、ステップS307の処理が行われて、補間処理により、小数Zamariをべき指数とする2のべき乗値の補間値が求められるが、ステップS307の処理は、図6のステップS47の処理と同様であるため、その説明は省略する。
すなわち、補間処理部104により、小数Zamariから式(37)乃至式(39)が計算されて、インデックスindex2および下位値Xh2が求められる。そして、補間処理部104により、インデックスindex2が用いられて、小数のべき乗テーブル保持部342の小数のべき乗テーブルからテーブル値が取得される。その後、補間処理部104により、下位値Xh2と、テーブル値とから線形補間、2次の多項式補間等の補間処理が行われて、小数Zamariをべき指数とする2のべき乗値の補間値(2^Zamari)が求められる。求められた補間値は、最終的なべき乗値(2^Zamari)として、補間処理部104からべき乗整数変換部382に供給される。
ステップS308において、べき乗整数変換部382は、整数/小数分離部381からの整数Zintと、補間処理部104からのべき乗値(2^Zamari)とから、式(61)を計算して、演算値(P+α)の整数部分を求める。
このようにして、演算値(P+α)の整数部分が求められると、べき乗整数変換部382は、演算値(P+α)の整数部分、つまり整数化された演算値(P+α)を出力し、べき乗演算処理は終了する。
以上のように、仮数の対数テーブルの値と、小数のべき乗テーブルの値とに補間処理を施すことで、それらのテーブルのテーブルサイズを増やさずに、簡単に演算値(P+α)の整数部分を求める演算の精度を向上させることができる。
具体的には、上述した式(62)を計算して求まる絶対誤差平均Uにより、本出願人が演算処理装置371によって算出された演算値(P+α)の整数部分Rの算出精度の評価を行ったところ、図30に示す評価結果が得られた。
図30には、仮数の対数テーブルの値、および小数のべき乗テーブルの値に、それぞれ補間処理を加えた場合と、加えない場合との組み合わせについて、仮数の対数テーブルおよび小数のべき乗テーブルのテーブルサイズにおけるNを8とし、すなわちSIZE=256としたときの絶対誤差平均Uが示されている。
文字「べき乗:補間なし」は、小数のべき乗テーブルの値を補間処理せずに整数部分Rの算出に用いたことを示している。文字「べき乗:線形補間」および「べき乗:2次補間」は、小数のべき乗テーブルの値に線形補間および2次の多項式補間を行って得られた値を、整数部分Rの算出に用いたことを示している。
同様に、文字「対数:補間なし」は、仮数の対数テーブルの値を補間処理せずに整数部分Rの算出に用いたことを示している。文字「対数:線形補間」および「対数:2次補間」は、仮数の対数テーブルの値に線形補間および2次の多項式補間を行って得られた値を、整数部分Rの算出に用いたことを示している。
図30では、仮数の対数テーブルの値、または小数のべき乗テーブルの値の少なくとも何れか一方に補間処理を施すことで、べき乗(より詳細にはべき乗の整数部分)の演算精度が改善されることが分かる。例えば、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に線形補間を施すとU=8.06×10-3となり、仮数の対数テーブルの値および小数のべき乗テーブルの値の両方に2次の多項式補間を施すとU=2.44×10-3となっている。
このように、両方のテーブル値に、線形補間または2次の多項式補間を施したときの絶対誤差平均は、従来の量子化装置51において、N=16のとき、つまりテーブルサイズSIZE=65536としたときの絶対誤差平均と比べて小さくなることが確認されており、演算精度が改善されていることが分かる。すなわち、より小さいテーブルサイズで、より高い演算精度が得られる。
なお、演算処理装置371では、仮数の対数テーブルの値と、小数のべき乗テーブルの値との両方に補間処理を施すと説明したが、補間処理の処理量と必要となる演算精度に応じて、どちらか一方の値に補間処理が施されるようにしてもよいし、それぞれ異なる補間処理が施されるようにしてもよい。
[第5の実施の形態]
図31は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図31において、図12と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
図31は、本発明を適用した演算処理装置の他の実施の形態の構成例を示すブロック図である。なお、図31において、図12と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
演算処理装置411は、対数演算処理部141、整数/小数分離部421、およびべき乗整数変換部422から構成される。演算処理装置411では、入力値X=X’+α1/Yおよびべき指数Yが、対数演算処理部141に供給される。
対数演算処理部141は、図12の対数演算処理部141と同様であり、例えば、図14、図16、または図18に示した構成とされる。対数演算処理部141は、入力値Xから求めた対数Zを整数/小数分離部421に供給する。
整数/小数分離部421は、対数演算処理部141からの対数Zの整数Zintおよび小数Zamariを求めて、べき乗整数変換部422に供給する。べき乗整数変換部422は、整数/小数分離部421からの整数Zintおよび小数Zamariを用いて、シフト演算により演算値(P+α)の整数部分を求めて出力する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値、つまり演算値(P+α)=XYである。
次に、図32のフローチャートを参照して、演算処理装置411によるべき乗演算処理について説明する。なお、ステップS331の処理は、図13のステップS71の処理と同様であるので、その説明は省略する。
ステップS332において、整数/小数分離部421は、対数演算処理部141からの対数Zを用いて、式(59)および式(60)から対数Zの整数Zintおよび小数Zamariを求める。式(60)の計算では、小数Zamariが、23ビット目に小数点が位置するように固定小数点化される。整数/小数分離部421は、求めた整数Zintおよび小数Zamariを、べき乗整数変換部422に供給する。
ステップS333において、べき乗整数変換部422は、整数/小数分離部421からの整数Zintおよび小数Zamariを用いて演算値(P+α)の整数部分を求める。
例えば、べき乗整数変換部422は、整数/小数分離部421から供給された小数Zamariを用いて、べき乗整数変換部422に内蔵されている演算装置により、小数Zamariをべき指数とするべき乗値(2^Zamari)を求める。
ここで、小数Zamariの取り得る値の範囲は、0≦Zamari<1.0であり、べき乗値の底は、予め2と定められている。したがって、底2のべき乗演算を高速で行う専用の演算装置を利用してべき乗値(2^Zamari)を求めれば、汎用の演算装置を用いる場合よりも、べき乗整数変換部422の構成を簡単にすることができ、小型化を図ることができる。
べき乗整数変換部422は、べき乗値(2^Zamari)を求めると、そのべき乗値と、整数/小数分離部421からの整数Zintとから、次式(63)を計算して、演算値(P+α)の整数部分を求める。
ここで、式(63)において、「>>」は右シフトを示している。べき乗整数変換部422は、べき乗値(2^Zamari)に223を乗算して得られる値の整数部分を求めることで、べき乗値(2^Zamari)を、小数点位置が23ビット目にある固定小数点に変換する。そして、べき乗整数変換部422は、固定小数点化されたべき乗値(int)((2^Zamari)×223)を、(23−Zint)ビットだけ右シフトさせて、演算値(P+α)の整数部分の値(int)(P+α)を得る。
なお、(23−Zint)ビットの右シフトを行うのは、上述した式(61)における場合と同様に、べき乗値(int)((2^Zamari)×223)は、小数点位置が23ビット目の位置にある固定小数点型のデータであり、べき乗値(int)((2^Zamari)×223)の小数点位置を、(23−Zint)ビットだけ下位ビット側に移動させると、演算値(P+α)の整数部分が抽出されるからである。
べき乗整数変換部422は、このようにして、演算値(P+α)の整数部分を求めると、求めた整数部分を出力し、べき乗演算処理は終了する。
なお、演算処理装置411においては、演算の対象となる数値が2進数で表現されるため、2を底とする対数と、2を底とするべき乗とを求めることで、演算値(P+α)の整数部分を求めたが、入力値XがM進数で表現される場合には、底Mの対数(対数Z)と、底Mのべき乗をペアとしても同様の演算で演算値(P+α)の整数部分を求めることができる。
また、演算処理装置411では、べき乗整数変換部422が、演算装置を利用して2を底とするべき乗の演算を行うと説明したが、小数のべき乗テーブルが利用されてべき乗値が求められるようにしてもよい。
そのような場合、演算処理装置は、例えば、図33に示すように構成される。なお、図33において、図31または図26と対応する部分には、同一の符号を付してあり、その説明は、適宜、省略する。
演算処理装置451は、小数のべき乗テーブル保持部342、対数演算処理部141、整数/小数分離部421、およびべき乗整数変換部345から構成される。演算処理装置451では、入力値X=X’+α1/Yおよびべき指数Yが、対数演算処理部141に供給される。
べき乗整数変換部345は、小数のべき乗テーブル保持部342の小数のべき乗テーブルを参照しながら、整数/小数分離部421からの整数Zintおよび小数Zamariを用いて、シフト演算により演算値(P+α)の整数部分を求めて出力する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値、つまり演算値(P+α)=XYである。
次に、図34のフローチャートを参照して、演算処理装置451によるべき乗演算処理について説明する。
ステップS361において、小数のべき乗テーブル保持部342は、小数のべき乗テーブルを生成する。すなわち、小数のべき乗テーブル保持部342は、小数のべき乗テーブルのテーブルサイズを2N=SIZEとすると、上述した式(58)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、変数iは、小数Zamariから求まるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE−1)とされる。また、式(58)では、近似値2(i/SIZE)に223が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が23ビット目にある固定小数点数とされる。
小数のべき乗テーブルが生成されると、その後、ステップS362およびステップS363の処理が行われるが、これらの処理は、図32のステップS331およびステップS332の処理と同様であるので、その説明は、省略する。
すなわち、対数演算処理部141により、入力値X=X’+α1/Yと、べき指数Yとから対数Zが求められて整数/小数分離部421に供給される。また、整数/小数分離部421により、式(59)および式(60)から対数Zの整数Zintおよび小数Zamariが求められてべき乗整数変換部345に供給される。
ステップS364において、べき乗整数変換部345は、整数/小数分離部421からの整数Zintおよび小数Zamariを用いて、演算値(P+α)の整数部分を求めて出力し、べき乗演算処理は終了する。ここで、演算値(P+α)は、演算値P=X’Yに定数αが加算された値、つまり演算値(P+α)=XYである。
すなわち、べき乗整数変換部345は、小数Zamariを用いて式(37)および式(38)を計算し、小数Zamariの22ビット目から上位Nビットの値をインデックスindex2として求める。さらに、べき乗整数変換部345は、そのインデックスindex2を用いて次式(56)により、べき乗値(2^Zamari)を求める。
具体的には、べき乗整数変換部345は、インデックスindex2を変数iの値としたテーブル値twotable[index2]を、小数のべき乗テーブル保持部342の小数のべき乗テーブルから取得して、べき乗値(2^Zamari)とする。
さらに、べき乗整数変換部345は、求めたべき乗値(2^Zamari)と、整数/小数分離部421からの整数Zintとから、式(61)を計算して、演算値(P+α)の整数部分を求める。
このように、演算処理装置451では、小数のべき乗テーブルを利用して、べき乗値(2^Zamari)を求めるので、図31のべき乗整数変換部422の場合のような演算装置を必要とせずに、べき乗値を得ることができる。
なお、演算処理装置451の場合においても、入力値XがM進数とされ、底Mの対数および底Mのべき乗が用いられて、演算値(P+α)の整数部分が求められるようにしてもよい。
また、演算処理装置451では、小数のべき乗テーブルを利用して2を底とするべき乗の演算を行うと説明したが、小数のべき乗テーブルのテーブル値に、さらに補間処理が施されてべき乗値が求められるようにしてもよい。
そのような場合、演算処理装置は、例えば図35に示すように構成される。なお、図35において、図31または図28における場合と対応する部分には、同一の符号を付してあり、その説明は、適宜、省略する。
演算処理装置481は、小数のべき乗テーブル保持部491、対数演算処理部141、整数/小数分離部421、補間処理部104、およびべき乗整数変換部382から構成される。また、演算処理装置481では、入力値X=X’+α1/Yおよびべき指数Yが、対数演算処理部141に供給される。
小数のべき乗テーブル保持部491は、小数のべき乗テーブルを保持しており、対数Zの小数Zamariから求まるインデックスindex2により特定されるテーブル値を、補間処理部104に供給する。小数のべき乗テーブル保持部491により保持されている小数のべき乗テーブルにおいては、テーブル値が固定小数点化された値となっている。
補間処理部104は、整数/小数分離部421から供給された小数Zamariから求まるインデックスindex2を用いて、インデックスindex2の近傍のテーブル値を、小数のべき乗テーブル保持部491から取得する。また、補間処理部104は、取得したテーブル値を用いて補間処理を行って2を底とし、小数Zamariをべき指数とするべき乗値を求めてべき乗整数変換部382に供給する。
べき乗整数変換部382は、補間処理部104からのべき乗値と、整数/小数分離部421からの整数Zintとから、演算値(P+α)の整数部分を求めて出力する。
次に、図36のフローチャートを参照して、演算処理装置481によるべき乗演算処理について説明する。
ステップS391において、小数のべき乗テーブル保持部491は、小数のべき乗テーブルを生成する。例えば、補間処理部104により補間処理として2次の多項式補間が行われる場合、小数のべき乗テーブル保持部491は、小数のべき乗テーブルのテーブルサイズを2N+2=SIZE+2とする。そして、小数のべき乗テーブル保持部491は、次式(64)に示されるテーブル値twotable[i]からなる小数のべき乗テーブルを生成する。
ここで、テーブル値twotable[i]の変数iは、小数Zamariから求まる、テーブル値twotable[i]を特定するために用いられるインデックスindex2の値を示しており、変数i=0,・・・,(SIZE+1)とされる。また、テーブルサイズ(SIZE+2)の個数だけテーブル値twotable[i]が用意されることになる。
インデックスindex2を、小数Zamariの上位何ビットかの値とすれば、式(64)における2(i/SIZE)は、小数Zamariの値をべき指数とし、2を底とするべき乗値2^Zamariの近似値となる。さらに、式(64)では、近似値2(i/SIZE)に223が乗算されて整数化され、近似値が固定小数点化されている。つまり、テーブル値twotable[i]は、小数点位置が23ビット目にある固定小数点数(固定小数点型の2進数のデータ)とされる。
小数のべき乗テーブル保持部491は、(SIZE+2)個の各変数の値iのそれぞれに対するテーブル値twotable[i]のそれぞれを求めると、それらの値iとテーブル値twotable[i]とを対応付けて小数のべき乗テーブルを生成し、保持する。
なお、補間処理として、補間処理部104により線形補間が行われる場合には、小数のべき乗テーブルのテーブルサイズは2N+1=SIZE+1とされ、式(64)のテーブル値twotable[i]からなる小数のべき乗テーブルが生成される。
また、小数のべき乗テーブルを生成する処理は、演算値(P+α)の整数部分を求める演算の前に1度行っておけばよい。つまり、1度、小数のべき乗テーブルを生成しておけば、その後、整数部分を求める演算を行うときは、既に生成されて保持されている小数のべき乗テーブルを用いればよい。
小数のべき乗テーブルが求められると、その後、ステップS392およびステップS393の処理が行われるが、これらの処理は、図32のステップS331およびステップS332の処理と同様であるので、その説明は、省略する。
すなわち、対数演算処理部141により、入力値X=X’+α1/Yと、べき指数Yとから対数Zが求められて整数/小数分離部421に供給される。また、整数/小数分離部421により、式(59)および式(60)から対数Zの整数Zintおよび小数Zamariが求められる。そして、整数Zintが整数/小数分離部421から、べき乗整数変換部382に供給され、小数Zamariが整数/小数分離部421から、補間処理部104に供給される。
ステップS394において、補間処理部104は、整数/小数分離部421からの小数Zamariを用いて補間処理を行い、小数Zamariをべき指数とする底2のべき乗値の補間値を求める。
すなわち、補間処理部104は、式(37)および式(38)を計算することにより、インデックスindex2を求める。また、補間処理部104は、式(39)を計算することにより、小数Zamariの(22−N)ビット目から0ビット目までの部分の値である下位値Xh2を求める。
このようにして、インデックスindex2および下位値Xh2が求められると、補間処理部104は、さらに、インデックスindex2により特定される、小数のべき乗テーブル保持部491の小数のべき乗テーブルのテーブル値と、下位値Xh2とから補間処理を行う。
例えば、補間処理として線形補間を行う場合、補間処理部104は、式(40)および式(41)を計算してテーブル値V20およびテーブル値V21を求める。つまり、補間処理部104は、小数のべき乗テーブル保持部491からテーブル値V20およびテーブル値V21を取得する。さらに、補間処理部104は、これらの取得したテーブル値と、下位値Xh2とから、式(42)乃至式(44)を計算して線形補間を行い、べき乗値の補間値(2^Zamari)を求める。
また、例えば、補間処理として2次の多項式補間を行う場合、補間処理部104は、式(40)および式(41)と、式(45)とを計算することにより、テーブル値V20乃至テーブル値V22を求める。さらに、補間処理部104は、これらの求められたテーブル値と、下位値Xh2とから、式(46)乃至式(49)を計算することにより2次の多項式補間を行い、べき乗値の補間値(2^Zamari)を求める。
なお、補間処理部104は、補間処理を行わない場合には、式(40)により得られるテーブル値V20を、べき乗値の補間値(2^Zamari)とする。
このようにして求められたべき乗値の補間値(2^Zamari)は、最終的なべき乗値(2^Zamari)とされて、補間処理部104からべき乗整数変換部382に供給される。
ステップS395において、べき乗整数変換部382は、補間処理部104からのべき乗値と、整数/小数分離部421からの整数Zintとから、演算値(P+α)の整数部分を求めて出力し、べき乗演算処理は終了する。
すなわち、べき乗整数変換部382は、補間処理部104からのべき乗値(2^Zamari)と、整数/小数分離部421からの整数Zintとから、式(61)を計算して、演算値(P+α)の整数部分を求める。
なお、演算処理装置481の場合においても、入力値XがM進数とされ、底Mの対数および底Mのべき乗が用いられて、演算値(P+α)の整数部分が求められるようにしてもよい。また、補間処理部104による補間処理は、線形補間や2次の多項式補間に限らず、3次以上の多項式補間やスプライン補間とされてもよい。
以上のように、図31の演算処理装置411、図33の演算処理装置451、および図35の演算処理装置481によれば、入力値X=X’+α1/Yとして演算値(P+α)の整数部分を求めるようにしたので、より簡単かつ迅速に演算値(P+α)の整数部分の値を求めることができる。
すなわち、一旦、演算値Pを求めてから、さらに演算値(P+α)の整数部分を求める必要がなく、べき乗値(2^Zamari)および整数Zintから、直接、演算値(P+α)の整数部分を求めることができる。これにより、図5の整数変換部108に相当する処理ブロックが不要となり、演算処理装置の小型化も図ることができる。
また、演算処理装置411、演算処理装置451、および演算処理装置481のそれぞれにおける対数演算処理部141を、必要な演算精度と処理量とを考慮して、図14、図16、または図18の何れかの構成とすることができる。これにより、演算処理装置が、求められる演算精度に対して必要な、最小限の構成要素からなるように構成することができる。
さらに、図5の仮数の対数テーブル保持部102のテーブル値と、図33の小数のべき乗テーブル保持部342のテーブル値、または図35の小数のべき乗テーブル保持部491のテーブル値とに、それぞれ補間処理を加えた場合と、加えない場合との組み合わせに対して、図30に示した絶対誤差平均Uが得られる。したがって、補間処理により、演算値(P+α)の整数部分を求める演算の精度を向上させることができることが分かる。
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図37は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)601,ROM(Read Only Memory)602,RAM(Random Access Memory)603は、バス604により相互に接続されている。
バス604には、さらに、入出力インターフェース605が接続されている。入出力インターフェース605には、キーボード、マウス、マイクロホンなどよりなる入力部606、ディスプレイ、スピーカなどよりなる出力部607、ハードディスクや不揮発性のメモリなどよりなる記録部608、ネットワークインターフェースなどよりなる通信部609、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア611を駆動するドライブ610が接続されている。
以上のように構成されるコンピュータでは、CPU601が、例えば、記録部608に記録されているプログラムを、入出力インターフェース605及びバス604を介して、RAM603にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU601)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア611に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア611をドライブ610に装着することにより、入出力インターフェース605を介して、記録部608にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部609で受信し、記録部608にインストールすることができる。その他、プログラムは、ROM602や記録部608に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
91 演算処理装置, 101 仮数/指数分離部, 102 仮数の対数テーブル保持部, 103 小数のべき乗テーブル保持部, 104 補間処理部, 105 対数演算部, 106 整数/小数分離部, 107 べき乗演算部, 108 整数変換部, 131 演算処理装置, 141 対数演算処理部, 142 べき乗演算処理部, 171 対数演算部, 201 対数演算部, 231 対数演算部, 261 整数/小数分離部, 262 べき乗演算部, 301 べき乗演算部, 331 演算処理装置, 341 仮数の対数テーブル保持部, 342 小数のべき乗テーブル保持部, 343 対数演算部, 344 整数/小数分離部, 345 べき乗整数変換部, 371 演算処理装置, 381 整数/小数分離部, 382 べき乗整数変換部, 411 演算処理装置, 421 整数/小数分離部, 422 べき乗整数変換部, 451 演算処理装置, 481 演算処理装置, 491 小数のべき乗テーブル保持部
Claims (15)
- 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であって、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を記録する第1の記録手段と、
前記仮数X1を用いて前記第1の記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、
前記変数Yおよび前記指数X2と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段と
を備える演算処理装置。 - 前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、
前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を記録する第2の記録手段と
をさらに備え、
前記べき乗演算手段は、前記小数Zamariを用いて前記第2の記録手段から取得した前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pを求める
請求項1に記載の演算処理装置。 - 前記補間手段は、前記小数Zamariを用いて前記第2の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求め、
前記べき乗演算手段は、前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pを求める
請求項2に記載の演算処理装置。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であり、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段と、
前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を記録する記録手段と、
前記仮数X1を用いて前記記録手段から取得した、複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求める補間手段と、
前記変数Yおよび前記指数X2と、前記補間手段により求められた前記仮数の前記対数値とを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段と
を備える演算処理装置の演算処理方法であって、
前記仮数/指数分離手段が前記入力値Xを前記仮数X1と前記指数X2とに分離し、
前記補間手段が前記複数の前記対数値を用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、
前記対数演算手段が前記対数値Zを求め、
前記べき乗演算手段が、前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求める
ステップを含む演算処理方法。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置に、
浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離し、
前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を複数用いて補間処理を行い、最終的な前記仮数の前記対数値を求め、
前記変数Yおよび前記指数X2と、前記補間処理により求められた前記仮数の前記対数値とを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、
前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求める
ステップを含む処理を実行させるプログラム。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であって、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、
前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を記録する第1の記録手段と、
前記小数Zamariを用いて前記第1の記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求める補間手段と、
前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとを用いて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段と
を備える演算処理装置。 - 浮動小数点型のデータにおける、前記入力値Xを浮動小数点数で表現したときの仮数を表す仮数部である仮数X1と、前記入力値Xを浮動小数点数で表現したときの指数を表す指数部である指数X2とに、前記入力値Xを分離する仮数/指数分離手段をさらに備え、
前記対数演算手段は、前記仮数X1、前記指数X2、および前記変数Yを用いて、前記演算値Pの前記対数値Zを求める
請求項6に記載の演算処理装置。 - 前記仮数X1に対して定まる、前記定数Mを底とする前記入力値Xの前記仮数の対数値を記録する第2の記録手段をさらに備え、
前記対数演算手段は、前記仮数X1を用いて前記第2の記録手段から取得した前記仮数の前記対数値と、前記変数Yおよび前記指数X2とを用いて、前記演算値Pの前記対数値Zを求める
請求項7に記載の演算処理装置。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置であり、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、
前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を記録する記録手段と、
前記小数Zamariを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求める補間手段と、
前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとを用いて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求めるべき乗演算手段と
を備える演算処理装置の演算処理方法であって、
前記対数演算手段が前記入力値Xおよび前記変数Yを用いて前記対数値Zを求め、
前記整数/小数分離手段が、前記対数値Zを前記整数Zintと前記小数Zamariとに分離し、
前記補間手段が、前記複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求め、
前記べき乗演算手段が前記定数Mの前記べき乗値と前記整数Zintとを用いて、前記対数値Zをべき指数とする前記定数Mのべき乗を求めることにより、前記演算値Pを求める
ステップを含む演算処理方法。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pを求める演算処理装置に、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離し、
前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mのべき乗値を複数用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求め、
前記補間処理により求められた前記定数Mの前記べき乗値と、前記整数Zintとを用いて、前記演算値Pの前記対数値Zをべき指数とする、前記定数Mのべき乗を求めることにより、前記演算値Pを求める
ステップを含む処理を実行させるプログラム。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置であって、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、
前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Pの前記整数を求めるべき乗整数変換手段と
を備える演算処理装置。 - 前記小数Zamariに対して定まる、前記小数Zamariをべき指数とする、前記定数Mの前記べき乗値を記録する記録手段をさらに備え、
前記べき乗整数変換手段は、前記小数Zamariを用いて前記記録手段から取得した前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pの前記整数を求める
請求項11に記載の演算処理装置。 - 前記小数Zamariを用いて前記記録手段から取得した、複数の前記べき乗値を用いて補間処理を行い、最終的な前記定数Mの前記べき乗値を求める補間手段をさらに備え、
前記べき乗整数変換手段は、前記補間手段により求められた前記定数Mの前記べき乗値と、前記整数Zintとから前記演算値Pの前記整数を求める
請求項12に記載の演算処理装置。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置であり、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求める対数演算手段と、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離する整数/小数分離手段と、
前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Pの前記整数を求めるべき乗整数変換手段と
を備える演算処理装置の演算処理方法であって、
前記対数演算手段が、前記入力値Xおよび前記変数Yを用いて前記対数値Zを求め、
前記整数/小数分離手段が、前記対数値Zを前記整数Zintと前記小数Zamariとに分離し、
前記べき乗整数変換手段が前記右シフト演算を行って前記演算値Pの前記整数を求める
ステップを含む演算処理方法。 - 変数Yをべき指数とし、所定の定数をMとして、M進数で表現される入力値Xをべき乗して得られる演算値Pの整数を求める演算処理装置に、
前記入力値Xおよび前記変数Yを用いて、前記定数Mを底とする前記演算値Pの対数値Zを求め、
前記演算値Pの前記対数値Zを、前記対数値Zの整数部分である整数Zintと、前記対数値Zの小数部分である小数Zamariとに分離し、
前記小数Zamariをべき指数とする、前記定数Mのべき乗値を示す固定小数点化されたデータに対して、前記固定小数点化されたデータの最下位ビットから小数点位置までのビット数から、前記整数Zintを減算して得られる数を示すビット数分だけ右シフト演算を行って、前記演算値Pの前記整数を求める
ステップを含む処理を実行させるプログラム。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008194690A JP4529098B2 (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
| US12/510,674 US8631061B2 (en) | 2008-07-29 | 2009-07-28 | Apparatus, method, and program for arithmetic processing |
| CN2009101590274A CN101639768B (zh) | 2008-07-29 | 2009-07-29 | 用于算术处理的装置、方法和程序 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008194690A JP4529098B2 (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2010033318A true JP2010033318A (ja) | 2010-02-12 |
| JP4529098B2 JP4529098B2 (ja) | 2010-08-25 |
Family
ID=41609420
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008194690A Expired - Fee Related JP4529098B2 (ja) | 2008-07-29 | 2008-07-29 | 演算処理装置および方法、並びにプログラム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US8631061B2 (ja) |
| JP (1) | JP4529098B2 (ja) |
| CN (1) | CN101639768B (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20180090205A (ko) * | 2017-02-02 | 2018-08-10 | 비반테 코포레이션 | 수학적 함수들을 연산하기 위한 시스템 및 방법들 |
| JP2020522032A (ja) * | 2018-02-13 | 2020-07-27 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. | 計算装置と計算方法 |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103155598A (zh) * | 2010-10-14 | 2013-06-12 | 峰力公司 | 调整听力设备的方法及根据所述方法可操作的听力设备 |
| CN102436365B (zh) * | 2010-12-20 | 2014-04-09 | 中国电子科技集团公司第四十一研究所 | 一种频谱分析仪中线性频谱数据转换为对数数据的方法及装置 |
| KR102079188B1 (ko) * | 2012-05-09 | 2020-02-19 | 가부시키가이샤 한도오따이 에네루기 켄큐쇼 | 발광 장치 및 전자 기기 |
| US10303439B2 (en) * | 2016-04-26 | 2019-05-28 | International Business Machines Corporation | Logarithm and power (exponentiation) computations using modern computer architectures |
| KR102716396B1 (ko) * | 2016-09-06 | 2024-10-11 | 삼성디스플레이 주식회사 | 표시 장치 및 그 제조 방법 |
| CN109521994B (zh) * | 2017-09-19 | 2020-11-10 | 华为技术有限公司 | 乘法硬件电路、片上系统及电子设备 |
| EP3543873B1 (en) * | 2017-09-29 | 2022-04-20 | Sony Group Corporation | Information processing device and information processing method |
| KR102855357B1 (ko) * | 2019-07-04 | 2025-09-04 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 뉴럴 네트워크의 파라미터 양자화 방법 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09292977A (ja) * | 1996-04-26 | 1997-11-11 | Hitachi Ltd | 対数関数の近似値生成回路 |
| US6182100B1 (en) * | 1998-06-30 | 2001-01-30 | International Business Machines Corporation | Method and system for performing a logarithmic estimation within a data processing system |
| JP2004005662A (ja) * | 2002-05-17 | 2004-01-08 | Texas Instruments Inc | 対数、逆対数、逆数の近似値を求めるための回路、システム、および方法 |
| JP2005018759A (ja) * | 2003-06-26 | 2005-01-20 | Internatl Business Mach Corp <Ibm> | 2の浮動小数点数乗の概算を実施するための方法および装置 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SE9002558D0 (sv) * | 1990-08-02 | 1990-08-02 | Carlstedt Elektronik Ab | Processor |
| JP4274633B2 (ja) | 1999-06-23 | 2009-06-10 | 株式会社ルネサステクノロジ | 累乗演算装置 |
| US20070038693A1 (en) * | 2005-08-10 | 2007-02-15 | Christian Jacobi | Method and Processor for Performing a Floating-Point Instruction Within a Processor |
| US8629927B2 (en) * | 2008-04-09 | 2014-01-14 | Gentex Corporation | Imaging device |
-
2008
- 2008-07-29 JP JP2008194690A patent/JP4529098B2/ja not_active Expired - Fee Related
-
2009
- 2009-07-28 US US12/510,674 patent/US8631061B2/en not_active Expired - Fee Related
- 2009-07-29 CN CN2009101590274A patent/CN101639768B/zh not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09292977A (ja) * | 1996-04-26 | 1997-11-11 | Hitachi Ltd | 対数関数の近似値生成回路 |
| US6182100B1 (en) * | 1998-06-30 | 2001-01-30 | International Business Machines Corporation | Method and system for performing a logarithmic estimation within a data processing system |
| JP2004005662A (ja) * | 2002-05-17 | 2004-01-08 | Texas Instruments Inc | 対数、逆対数、逆数の近似値を求めるための回路、システム、および方法 |
| JP2005018759A (ja) * | 2003-06-26 | 2005-01-20 | Internatl Business Mach Corp <Ibm> | 2の浮動小数点数乗の概算を実施するための方法および装置 |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20180090205A (ko) * | 2017-02-02 | 2018-08-10 | 비반테 코포레이션 | 수학적 함수들을 연산하기 위한 시스템 및 방법들 |
| JP2018129040A (ja) * | 2017-02-02 | 2018-08-16 | ビバンテ コーポレーション | 数学的関数を計算するためのシステムおよび方法 |
| JP7228956B2 (ja) | 2017-02-02 | 2023-02-27 | ビバンテ コーポレーション | 数学的関数を計算するためのシステムおよび方法 |
| KR102559930B1 (ko) * | 2017-02-02 | 2023-07-25 | 비반테 코포레이션 | 수학적 함수들을 연산하기 위한 시스템 및 방법들 |
| JP2020522032A (ja) * | 2018-02-13 | 2020-07-27 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. | 計算装置と計算方法 |
| JP2020126594A (ja) * | 2018-02-13 | 2020-08-20 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. | 計算装置と計算方法 |
| JP2020126595A (ja) * | 2018-02-13 | 2020-08-20 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. | 計算装置と計算方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN101639768B (zh) | 2012-07-04 |
| US8631061B2 (en) | 2014-01-14 |
| US20100030833A1 (en) | 2010-02-04 |
| JP4529098B2 (ja) | 2010-08-25 |
| CN101639768A (zh) | 2010-02-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4529098B2 (ja) | 演算処理装置および方法、並びにプログラム | |
| JP5006426B2 (ja) | レベル・モードとラン・レングス/レベル・モードの間での符号化を適応させるエントロピー符号化 | |
| EP4156184A1 (en) | Encoding device and method, decoding device and method, and program | |
| US20140108021A1 (en) | Method and apparatus for encoding audio data | |
| TWI450267B (zh) | 編碼時域音訊訊號之方法及電子裝置以及產生頻帶之頻率係數的比例因子之方法 | |
| KR101363206B1 (ko) | 인터채널과 시간적 중복감소를 이용한 오디오 신호 인코딩 | |
| CN101685436B (zh) | 音频信号处理装置与方法 | |
| US20150317985A1 (en) | Signal Adaptive FIR/IIR Predictors for Minimizing Entropy | |
| US7426462B2 (en) | Fast codebook selection method in audio encoding | |
| JP2010060989A (ja) | 演算装置および方法、量子化装置および方法、オーディオ符号化装置および方法、並びにプログラム | |
| JP4702645B2 (ja) | 演算装置および方法、量子化装置および方法、並びにプログラム | |
| JP4134262B2 (ja) | 信号処理方法、信号処理装置及びプログラム | |
| JP2010032762A (ja) | 演算処理装置および方法、並びにプログラム | |
| JP4555271B2 (ja) | 位置インタポレータの符号化/複合化方法、及び装置 | |
| JP2005197989A (ja) | べき乗演算回路、量子化回路および方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100513 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100526 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |
