(57)【要約】【課題】剰余演算処理装置及び剰余演算処理方法に関し、乗算法による剰余算出を行い、範囲の限定された入力値に対して、剰余算出の処理量を削減する。【解決手段】範囲が制限された整数を被除数とし、固定値の整数を除数とした場合、被除数（１０３）に、固定小数点表示の除数の逆数（１００）を乗算（１０４）し、該逆数の乗算結果から小数部を抽出（１０６）し、該小数部の抽出結果に除数（１０７）を乗算（１０８）し、該乗算結果（１０９）から整数部を剰余算出結果として取り出す（１１０）。但し、非表示桁の切捨てにより生じる誤差を保証するため、除数の逆数（１００）の有効表示桁の最下位桁に１を加算（１０２）して前述の演算処理を行う。また、固定小数点表示の小数部の桁数を、精度保証される最少の桁数とし、小数部抽出（１０６）の際に、精度保証される最少のビット数のマスク処理により小数部を抽出する。【選択図】      図１
2006023974.tif 000002
【特許請求の範囲】
【請求項１】
範囲が制限された整数を被除数とし、固定値の整数を除数とした場合の剰余を算出する剰余演算処理装置において、
被除数に、固定小数点表示の除数の逆数を乗算する逆数乗算手段と、該逆数乗算手段による固定小数点表示の乗算結果の小数部を抽出する小数部抽出手段と、該小数部抽出手段による固定小数点表示の抽出結果に前記除数を乗算する除数乗算手段と、該除数乗算手段による固定小数点表示の乗算結果から整数部を剰余算出結果として取り出す整数部抽出手段と、を備えたことを特徴とする剰余演算処理装置。
【請求項２】
前記逆数乗算手段は、前記固定小数点表示の除数の逆数の有効表示桁の最下位桁に１を加算した値を前記被除数に乗じることを特徴とする請求項１に記載の剰余演算処理装置。
【請求項３】
前記小数部抽出手段は、前記逆数乗算手段の乗算結果の小数部を、所定ビット数の論理符号との論理積演算により抽出する手段を備え、
前記整数部抽出手段は、前記除数乗算手段による固定小数点表示の乗算結果の格納位置を、該固定小数点表示の小数桁数分シフトさせ、整数部のみを格納部に残して取り出すことを特徴とする請求項１に記載の剰余演算処理装置。
【請求項４】
範囲が制限された整数を被除数とし、固定値の整数を除数とした場合の剰余を算出する剰余演算処理方法であって、
被除数に、固定小数点表示の除数の逆数を乗算し、該逆数乗算による固定小数点表示の乗算結果の小数部を抽出し、該小数部抽出による固定小数点表示の抽出結果に前記除数を乗算し、該除数乗算による固定小数点表示の乗算結果から整数部を剰余算出結果として取り出す剰余演算処理方法において、
前記除数の逆数の固定小数点表示として最適な小数点位置を決定するために、小数点表示桁数を順次増大させながら小数点表示桁数を設定するステップと、前記剰余演算処理による剰余算出結果の良否を判定し、該剰余算出結果が良となる最小桁数を、前記固定小数点表示の小数点表示桁数と決定するステップとを有することを特徴とする剰余演算処理方法。
【請求項５】
範囲が制限された整数を被除数とし、固定値の整数を除数とした場合の剰余を算出する剰余演算処理方法であって、
被除数に、固定小数点表示の除数の逆数を乗算し、該逆数乗算による固定小数点表示の乗算結果の小数部を抽出し、該小数部抽出による固定小数点表示の抽出結果に前記除数を乗算し、該除数乗算による固定小数点表示の乗算結果から整数部を剰余算出結果として取り出す剰余演算処理方法において、
前記逆数乗算による固定小数点表示の乗算結果の小数部を抽出する際に、抽出する小数部の桁数を決定するために、抽出する小数部の桁数を順次増大させながら小数点抽出桁数を設定するステップと、前記剰余演算処理による剰余算出結果の良否を判定し、該剰余算出結果が良となる最小桁数を、前記抽出する小数部の桁数と決定するステップとを有することを特徴とする剰余演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、剰余演算処理装置及び剰余演算処理方法に関し、特に、ＤＳＰ（Digital Signal Processor）等のプロセッサにより、より高速に剰余演算の処理を行うための剰余演算処理装置及び剰余演算処理方法に関する。
【背景技術】
【０００２】
Ｗ−ＣＤＭＡ（Wideband Code Division Multiple Access）のベースバンド信号処理部のＤＳＰ等のプロセッサにおいて、装置内の基準タイマとなる無線フレーム又はタイムスロット等のカウント値を算出するために剰余演算を行う。従来、ＤＳＰ等のプロセッサ又はシミュレータにおける剰余演算は、プロセッサ又はシミュレータ専用のライブラリを使用して演算を行っている。
【０００３】
ライブラリを使用した剰余演算は、減算法とＡＮＤ法とを並列して使用している。被除数Ｘ，除数Ｙとしたとき、減算法による剰余演算は、以下のように被除数Ｘから除数Ｙを減算する処理を繰り返し行う。
Ｘ−Ｙ＝Ｘ１
Ｘ１−Ｙ＝Ｘ２
Ｘ２−Ｙ＝Ｘ３
・・・
Ｘｎ−Ｙ＝Ｘｎ＋１
【０００４】
ここで繰り返し減算を行ったときの演算結果Ｘｎ＋１が、
Ｘｎ＋１＜Ｙ
となったとき、Ｘｎ＋１を剰余として出力する。即ち、除数Ｙによる減算を繰り返し行い、その減算結果が除数Ｙより小さくなったとき、減算結果を剰余として出力する。
【０００５】
ＡＮＤ法は除数Ｙが２の乗数の場合のみ使用される手法で、被除数Ｘを（除数Ｙ−１）でマスクして剰余を算出する手法である。例えば、１０を被除数、２の二乗である４を除数とした場合のＡＮＤ法による剰余は以下のように算出される。
１０％４＝１０＆（４−１）＝２
【０００６】
ここで「１０％４」は、１０を被除数、４を除数としたときの剰余を表し、「１０＆（４−１）＝２」は「１０（２進数表示で１０１０）」と「（４−１）（２進数表示で００１１）とを、各桁のビット同士で論理積（ＡＮＤ）演算処理（即ちマスク処理）を行い、その結果、「２（２進数表示で００１０）」が得られることを表している。
【０００７】
また、剰余演算は、被除数ｘ（整数）の除数ａ（整数）による商をｂ（整数）、剰余をｃ（整数）としたとき、剰余ｃは、被除数ｘに除数ａの逆数を乗算したときの小数部｛ｃ・（１／ａ）｝を取り出して、それに除数ａを乗算して得られる整数部として算出することができる。この剰余算出手法を乗算法と称する。
【０００８】
乗算法は以下の数式の変形によっても説明される。被除数ｘ（整数）の除数ａ（整数）による商をｂ（整数）、剰余をｃ（整数）としたとき、以下の式が成立する。
ｘ＝ａ・ｂ＋ｃ
上式の右辺をａでくくると、
ｘ＝ａ・｛ｂ＋ｃ・（１／ａ）｝
となり、さらに変形すると、
ｘ／ａ＝ｂ＋ｃ・（１／ａ）
となる。
【０００９】
ここで、
ａ＞ｃ
であるから、
ｃ・（１／ａ）＜１
である。つまり｛ｃ・（１／ａ）｝は、被除数ｘに除数ａの逆数を乗算したときの演算結果の小数部となる。
【００１０】
本発明に関連する先行技術文献として、乗算法による剰余演算を行う演算処理装置に関して下記の特許文献１に記載されている。
【特許文献１】特開８−２０２５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来の剰余算出法は、全ての入力値（除数及び被除数）の範囲に亘って、剰余値として精度の高い出力値が得られる演算法であり、減算法では、除数＞被除数となるまで、除数による被除数からの減算を繰り返すことから、被除数と除数の差が大きいほど、減算と判定の処理のループ回数が増大する。このため処理量が非常に大きくなるという問題がある。
【００１２】
また、従来、乗算法が採用されなかったのは、除数の逆数が小数となることで、その後の演算が浮動小数点演算となり、小数部と整数部の分離を行う処理量が多大なものとなるという問題があったためである。本発明は、乗算法を用い、範囲の限定された入力値に対して、剰余算出の処理量を削減することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の剰余演算処理装置は、（１）範囲が制限された整数を被除数とし、固定値の整数を除数とした場合の剰余を算出する剰余演算処理装置において、被除数に、固定小数点表示の除数の逆数を乗算する逆数乗算手段と、該逆数乗算手段による固定小数点表示の乗算結果の小数部を抽出する小数部抽出手段と、該小数部抽出手段による固定小数点表示の抽出結果に前記除数を乗算する除数乗算手段と、該除数乗算手段による固定小数点表示の乗算結果から整数部を剰余算出結果として取り出す整数部抽出手段と、を備えたものである。
【００１４】
また、（２）前記逆数乗算手段は、前記固定小数点表示の除数の逆数の有効表示桁の最下位桁に１を加算した値を前記被除数に乗じることを特徴とするものである。
また、（３）前記小数部抽出手段は、前記逆数乗算手段の乗算結果の小数部を、所定ビット数の論理符号との論理積演算により抽出する手段を備え、前記整数部抽出手段は、前記除数乗算手段による固定小数点表示の乗算結果の格納位置を、該固定小数点表示の小数桁数分シフトさせ、整数部のみを格納部に残して取り出すことを特徴とするものである。
【００１５】
また、本発明の剰余演算処理方法は、（４）範囲が制限された整数を被除数とし、固定値の整数を除数とした場合の剰余を算出する剰余演算処理方法であって、被除数に、固定小数点表示の除数の逆数を乗算し、該逆数乗算による固定小数点表示の乗算結果の小数部を抽出し、該小数部抽出による固定小数点表示の抽出結果に前記除数を乗算し、該除数乗算による固定小数点表示の乗算結果から整数部を剰余算出結果として取り出す剰余演算処理方法において、前記除数の逆数の固定小数点表示として最適な小数点位置を決定するために、小数点表示桁数を順次増大させながら小数点表示桁数を設定するステップと、前記剰余演算処理による剰余算出結果の良否を判定し、該剰余算出結果が良となる最小桁数を、前記固定小数点表示の小数点表示桁数と決定するステップとを有するものである。
【００１６】
また、（５）前記逆数乗算による固定小数点表示の乗算結果の小数部を抽出する際に、抽出する小数部の桁数を決定するために、抽出する小数部の桁数を順次増大させながら小数点抽出桁数を設定するステップと、前記剰余演算処理による剰余算出結果の良否を判定し、該剰余算出結果が良となる最小桁数を、前記抽出する小数部の桁数と決定するステップとを有するものである。
【発明の効果】
【００１７】
本発明によれば、乗算法で剰余を算出する際に、除数の逆数を固定小数点表示にすることにより、その後の演算処理を全て固定小数点表示で扱い、ＤＳＰ等のプロセッサにおいて処理量の負担が少ない命令（シフト演算、マスク）を使用することができ、処理量を削減することができる。また、従来の減算法のように、除数及び被除数の値に依存して処理量に差異が生じることもない。
【００１８】
また、本発明による乗算法は、固定小数点表示の除数の逆数の有効桁の最下位桁に１を加算することにより、その後の演算結果の有効桁数未満の小数部の切捨てに伴う剰余演算誤差を補正することができる。また、固定小数点表示の乗算結果の小数部を抽出する際に、所定ビット数の論理符号との論理積演算により、少ないビット幅で小数部を取り出すことにより、小数部と除数との乗算規模（乗算に使用するビット幅）を小さくすることができる。なお、取り出す小数部のビット幅は、事前に精度を保証し得る限界のビット幅を算出しておく。
【発明を実施するための最良の形態】
【００１９】
図１に本発明の固定小数点表示（Ｑフォーマット）による乗算法の剰余演算のフローを示す。入力（Ｉｎｐｕｔ）処理は、処理部１００における固定小数点表示（Ｑフォーマット）の除数Ｙの逆数（１／Ｙ）の入力処理、処理部１０３における被除数Ｘの入力処理、及び処理部１０７における除数Ｙの入力処理である。
【００２０】
除数Ｙ及び被除数Ｘは共に整数で、除数Ｙは固定値、被除数Ｘは制限された範囲内の任意の値とする。除数Ｙの逆数を表す際の固定小数点表示（Ｑフォーマット）の小数点位置は、事前にプログラムによって決定しておく。図１では固定小数点位置を「△」の記号で示している。
【００２１】
ここでは具体例として、Ｑ６フォーマット（小数点位置が第６桁目のビット位置（ｂｉｔ＃６）となる固定小数点表示）とした場合の剰余の算出について説明する。まず、被除数Ｘ及び除数Ｙとして、最終的な剰余演算結果の誤差を補正するために、有効表示桁の最下位ビットが‘１’で他のビットが‘０’の値、即ち‘１’を、固定小数点表示（Ｑフォーマット）の除数Ｙの逆数に加算する。
【００２２】
即ち図１に示すように、処理部１００において入力された除数の逆数（１／Ｙ）と、処理部１０１により格納された最下位ビットが‘１’で他のビットが‘０’の値とを、処理部１０２により加算する。図１に示す具体例ではＱ６フォーマットの固定小数点表示であるとすると、処理部１００において除数Ｙの逆数に２６を乗算して小数点の位置を６桁目に移動させた数値を入力し、該数値に処理部１０１の数値‘１’を加算する。式で示すと以下のとおりである。
｛（１／Ｙ）・２６｝＋１
【００２３】
次に、先の処理部１０２の加算結果（除数Ｙの逆数＋１）と、被除数Ｘとを乗算する。即ち図１において、処理部１０２の出力データと、処理部１０３により入力された被除数Ｘとを処理部１０４において乗算する。式で示すと以下のとおりである。
［｛（１／Ｙ）・２６｝＋１］・Ｘ
なお、（除数Ｙの逆数＋１）を固定小数点表示（Ｑフォーマット）としているため、処理部１０４での被除数Ｘとの乗算は整数乗算となる。
【００２４】
次に、整数乗算の結果から固定小数点表示（Ｑフォーマット）における小数部分を抜き出す。図１において、前述の処理部１０４での整数乗算結果は処理部１０５に格納され、処理部１０５において、斜線部を施した小数部を抜き出す。小数部を抜き出す処理において、小数点位置以下の全桁を抜き出す場合は、処理部１０５の出力データを、‘０…１１１１１１（２）’＝‘０…３ｆ（１６）’のビット列でマスクすることにより抽出されるが、実用上、精度に問題がなければ、小数点以下第１桁のみを抜き出すこととし、‘０…１０００００（２）’＝‘０…２０（１６）’のビット列でマスクする構成とすることもできる。式で示すと以下のとおりである。
［［｛（１／Ｙ）・２６｝＋１］・Ｘ]＆‘０…２０（１６）’
【００２５】
なお、‘０…１１１１１１（２）’等の（２）は２進数表示であることを意味し、‘０…３ｆ（１６）’等の（１６）は１６進数表示であることを意味している。また、図１においては、処理部１０５に格納された整数乗算結果に対してマスキングにより小数部を抜き出し、抜き出した小数部は図１に示す処理部１０６に格納される。
【００２６】
次に、抜き出された小数部に除数Ｙを乗算（整数乗算）する。図１では、処理部１０６の小数部と、処理部１０７に入力された除数Ｙとを処理部１０８に入力して乗算する。式で示すと以下のとおりである。
［［［｛（１／Ｙ）・２６｝＋１］・Ｘ］＆‘０…２０（１６）’］・Ｙ
【００２７】
前述の、図１の処理部１０５，１０６における小数部の抜き出しの演算において、抜き出すビット数を制限してマスキングを行うことにより、抜き出された小数部の有効ビット数が少なくなり、該小数部と除数Ｙとを乗算する処理部１０８の回路規模を小さくすることができる。
【００２８】
図４に処理部１０５，１０６での小数部を抜き出す演算の詳細を示す。同図において処理部４０１の格納データから小数部を取り出す際に、マスク処理に使用するビット列をテーブル４０４に示している。マスク処理に使用するビット列は、小数点以下の全桁を取り出すための‘１１１１…１１（２）’のみに固定されるものではなく、剰余結果の精度が保たれるのであれば、テーブル４０４に示す何れかの桁までの‘１’のビット列を用い、該ビット列を処理部４０２に設定し、該ビット列によりマスク処理を行い、必要な桁のみの小数部を処理部４０３に取り出す。なお、図４において、処理部４０１及び４０３は、それぞれ、図１の処理部１０５及び１０６に相当する。
【００２９】
最後に、固定小数点表示（Ｑフォーマット）の小数点位置分、演算結果をシフトさせて整数部を取り出し、この結果が求める剰余の値となる。図１では、処理部１０８の乗算結果が処理部１０９に格納され、処理部１０９に格納されたデータを６ビット（Ｑ６フォーマットの実施例であるため）右へシフトさせて整数部のみを処理部１１０に取り出す。図１に示す処理部１１０に取り出された演算結果が求める剰余である。式で示すと以下のとおりである。
［［［［｛（１／Ｙ）・２６｝＋１］・Ｘ］＆‘０…２０（１６）’］・Ｙ］＞＞６
ここで、「＞＞６」は、データを６ビット右へシフトさせることを表している。
【００３０】
次に、乗算法による剰余演算の誤差補正について説明する。乗算法による剰余演算の誤差は、固定小数点表示（Ｑフォーマット）の除数Ｙの逆数の格納において、表示可能（レジスタ等に格納可能）な小数部分より小さい桁の小数部分が切り捨てられることにより生じ、また、図１に示す処理部１０９のデータを右にシフトして整数部を取り出す際に、処理部１０９に格納されていたデータの小数部分が切り捨てられることにより誤差を生じる。
【００３１】
Ｑｎフォーマットの剰余演算（Ｘ％Ｙ）において、剰余の真値をＲｔｒｕ、乗算法によって算出される剰余の値をＲＣａｌとすると、ＲＣａｌは以下の式のとおりとなる。
ＲＣａｌ＝［［［［｛（１／Ｙ）・２ｎ｝＋１］・Ｘ］＆（２ｎ−１）］・Ｙ］＞＞ｎ
【００３２】
処理部１００に入力されたＱｎフォーマットの除数の逆数Ｐ０＝（１／Ｙ）・２ｎは、非表示部分が切り捨てられることから、除数Ｙの逆数の真値Ｐｔｒｕとの間に、Ｑｎフォーマットの表示部分の最下位桁以下に‘１’未満の誤差を生じる。この誤差をΔｐは、
０＜Δｐ＜１
であり、
Ｐｔｒｕ−１＜Ｐ０＜Ｐｔｒｕ
である（図２（ａ）参照）。
【００３３】
Ｑｎフォーマットの除数の逆数Ｐ０＝（１／Ｙ）・２ｎに、Ｑｎフォーマットの最下位桁を‘１’とした数値を加算した値Ｐ１＝（１／Ｙ）・２ｎ＋１は、除数Ｙの逆数の真値Ｐｔｒｕより大となり、かつ、除数Ｙの逆数の真値Ｐｔｒｕとの間の誤差は、Ｑｎフォーマットの表示部分の最下位桁の数値の‘１’未満の誤差となる。この誤差は（１−Δｐ）であり、
０＜１−Δｐ＜１
Ｐｔｒｕ＜Ｐ１＜Ｐｔｒｕ＋１
である（図２（ａ）参照）。
【００３４】
次に、被除数Ｘを前述の値Ｐ１に乗算する。その値をＰ２とすると、
Ｐ２＝［｛（１／Ｙ）・２ｎ｝＋１］・Ｘ
このときの誤差（１−Δｐ）・Ｘが以下の範囲となるよう、Ｘ及びｎの値を制限する。
０＜（１−Δｐ）・Ｘ＜２ｎ  （図２（ｂ）参照）
上式を満たすよう被除数Ｘを制限し、又は要求される被除数Ｘの大きさに合わせて固定小数点の小数部の桁数ｎを決定する。
【００３５】
次に上記Ｐ２の演算結果から小数部を取り出す。この小数部をＰ３とする。Ｐ３は以下の式のとおりである。
Ｐ３＝［［｛（１／Ｙ）・２ｎ｝＋１］・Ｘ］＆（２ｎ−１）  （図２（ｃ）参照）
このときの誤差も、
０＜（１−Δｐ）・Ｘ＜２ｎ
となる。
【００３６】
次に上記の演算結果Ｐ３に除数Ｙを乗算する。その乗算結果をＰ４とする。
Ｐ４＝［［［｛（１／Ｙ）・２ｎ｝＋１］・Ｘ］＆（２ｎ−１）］・Ｙ
このときの誤差（１−Δｐ）・Ｘ・Ｙが以下の範囲となるように制限する。
０＜（１−Δｐ）・Ｘ・Ｙ＜２ｎ
即ち、上式を満たすように除数Ｙを制限する（図２（ｄ）参照）。
【００３７】
最後に、上記演算結果Ｐ４をｎビット右にシフトして整数部を取り出し、該整数部を剰余ＲＣａｌとして出力する。ここで、上記演算結果Ｐ４をｎビット右にシフトすることは、該Ｐ４を２ｎで除してその小数部を切り捨てる処理と等価である。該Ｐ４を２ｎで除したときの演算結果をＰ５とすると、演算結果Ｐ５は、以下のとおりとなる。
Ｐ５＝［［［［｛（１／Ｙ）・２ｎ｝＋１］・Ｘ］＆（２ｎ−１）］・Ｙ］／２ｎ
【００３８】
このときの誤差は以下で表される。
０＜｛（１−Δｐ）・Ｘ・Ｙ｝／２ｎ＜１  （図２（ｅ）参照）
このように、上記演算結果Ｐ５の誤差は１未満で有ることから、その小数部を切り捨てて得られる剰余演算結果ＲＣａｌは、正確な剰余の値Ｒｔｒｕと等しくなる。
【００３９】
次にＱフォーマットの算出について説明する。前述の乗算法により剰余を算出するためには、まず、除数Ｙの逆数の固定小数点表示（Ｑフォーマット）における小数点位置を決定しなければならない。また、乗算法による剰余算出において、被除数Ｘと（除数Ｙの逆数＋１）とを乗算し、その乗算結果から小数部を抜き出す際のビットの制限（マスクの値）についても決定しなければならない。
【００４０】
固定小数点表示（Ｑフォーマット）とマスクの値を決定するプログラムについて、Ｑ６フォーマット（ＬＳＢをｂｉｔ＃０とするとｂｉｔ＃６が小数点位置）を初期値とするＱフォーマットとマスクの値の決定の処理について以下に説明する。また、図３にそのフローチャートを示す。
【００４１】
最初に、被除数Ｘの最小値（Ｍｉｎ）と最大値（Ｍａｘ）、除数Ｙ（固定値）、及びＱフォーマットの最小値（Ｍｉｎ；この例の場合６）を入力する（ステップ３００）。次に、入力されたＱフォーマットの最小値（Ｍｉｎ；６）をＱフォーマットの初期値に設定する（ステップ３０１）。以下の処理で、Ｑフォーマットの値を徐々に増大させながら演算を繰り返し、Ｑフォーマットとマスクの値を決定する。
【００４２】
次に、小数部取り出し桁を決定するマスクの値を設定する。初期値は、小数点以下の最上位桁（最も左のビット）のみを‘１’とした値、即ち‘１０００００（２）’とする（ステップ３０２）。先に設定したＱフォーマットの値（６）と、今設定した小数部取り出し用マスク値とを用い、ステップ３０３において、被除数Ｘの最小値（Ｍｉｎ）から最大値（Ｍａｘ）までの範囲で順々にインクリメントさせながら設定される被除数Ｘに対して、ステップ３００で設定された除数Ｙによる剰余を算出し、その算出結果と従来の演算法（例えば、引き算法）による剰余の結果とが一致するか否かをステップ３０４において判定する。
【００４３】
上記ステップ３０４の判定において、１つでも一致しない被除数Ｘが存在すれば、被除数Ｘの全範囲について演算を終えることなく、剰余の算出・判定の処理ステップを抜け出し、小数部取り出し用のマスクの値がオール‘１’か否かを判定し（ステップ３０５）、オール‘１’でなければステップ３０２に戻り、小数部取り出し用のマスクの値として下位１桁分‘１’のビットを増やして再度設定し、ステップ３０３からの剰余の算出・判定を再開する。
【００４４】
マスクの値としては、図４の４０４のテーブルに示すように、‘１’の値を有する桁数を順次増やしながら剰余を算出し、剰余の精度が保証される時点の値を使用することになる。ステップ３０２〜３０４の処理を繰り返し行い、マスクのビットに全て‘１’が立ち、マスク値が‘１１…１１１（２）’となり、そのような場合となっても従来の演算法による剰余と本乗算法による剰余とが一致しないとき、Ｑフォーマットが最大に達しているか否かを判定し（ステップ３０７）、Ｑフォーマットが未だ最大に達していなければ、ステップ３０１に戻ってＱフォーマットの小数点位置を１ビット左にずらして再度設定し、ステップ３０２でＱフォーマットに合わせてマスクの値も再度設定し、ステップ３０３及び３０４の剰余の算出・判定を繰り返す。
【００４５】
図５にＱフォーマットの設定の様態を示している。同図において下方のものほどＱフォーマットの値の大きい（小数点以下の表示部分の大きい）ものを示している。Ｑフォーマットの設定は図５に示すように小数点以下の表示部分を徐々に増やしながら、剰余の精度が保証されるか否かを確認し、精度が保証されることが確認された時点のＱフォーマットを採用することになる。
【００４６】
前述の実施例では、Ｑ６フォーマットから開始したので、このＱ６フォーマットで精度が保証されない場合には、図３のステップ３０１においてＱフォーマットとして１つ大きいＱ７フォーマットに設定し直し、ステップ３０２でマスクの値を‘１００００００（２）’と再設定して、再度剰余の演算・判定を開始する。
【００４７】
ステップ３０１〜ステップ３０４を繰り返し、何れの判定条件においても、従来の演算法の結果と本発明による乗算法の剰余の結果とが一致せず、Ｑフォーマットが最大値に達した場合は、“ＮＧ”と出力する（ステップ３０８）。また、ステップ３０４の判定において剰余結果が一致し、かつ、ステップ３０６において被除数Ｘの設定値が最大値（Ｍａｘ）に達したことを確認した場合は、ステップ３０４の剰余算出・判定の処理を終了し、剰余結果の一致が確認された時点でのＱフォーマット及びマスクの値を、使用するＱフォーマット及びマスクの決定値として出力する（ステップ３０９）。
【００４８】
なお、前述した数式における記号の意味内容の一覧を以下に記す。
ｘ＋ｙ：加算
ｘ−ｙ：減算
ｘ・ｙ：乗算
ｘ／ｙ：除算
ｘ％ｙ：剰余
ｘ＆ｙ：論理積
ｘ＞＞ｙ：シフト演算
ｘｙ：ｘのｙ乗
ｘｘｘｘｘｘ（２）：２進数表示
ｘｘｘｘｘｘ（１６）：１６進数表示
【図面の簡単な説明】
【００４９】
【図１】本発明の固定小数点表示による乗算法の剰余演算のフローを示す図である。
【図２】乗算法による剰余算出において生じる誤差を示す図である。
【図３】Ｑフォーマットとマスクの値を決定するフローを示す図である。
【図４】本発明における小数部を抜き出す演算処理の詳細を示す図である。
【図５】本発明におけるＱフォーマットの設定の態様を示す図である。
【符号の説明】
【００５０】
１００  固定小数点表示（Ｑフォーマット）の除数Ｙの逆数の入力値
１０１  固定小数点表示（Ｑフォーマット）の剰余演算の誤差補正の加算値‘１’
１０２  １００と１０１との加算
１０３  被除数Ｘの入力値
１０４  １０２と１０３との乗算
１０５  １０４の乗算結果
１０６  １０５から小数部を取り出した結果
１０７  除数Ｙの入力値
１０８  １０６と１０７との乗算
１０９  １０８の乗算結果
１１０  １０９の整数部分を取り出した結果
【図１】
2006023974.tif 000003
【図２】
2006023974.tif 000004
【図３】
2006023974.tif 000005
【図４】
2006023974.tif 000006
【図５】
2006023974.tif 000007