(57)【特許請求の範囲】
【請求項１】
除数と被除数を入力する入力手段と、
前記被除数以下で、前記被除数と同じ桁数または１つ桁数が小さくなるように、前記除数を整数倍して仮除数を求める仮除数算出手段と、
前記被除数から前記仮除数を、前記仮除数未満になるまで繰り返し１回以上減算する減算手段と、
前記減算手段の減算結果が規定範囲にあるか判定する判定手段と、
前記判定手段が前記規定範囲内にないと判断し、かつ、前記減算手段による減算結果が、前記除数より小さい場合は、前記減算結果を剰余として出力し、前記判定手段が前記規定範囲内にあると判定した場合は、剰余を０に丸めて出力する剰余出力手段と
を備えることを特徴とする剰余計算装置。
【請求項２】
前記判定手段は、前記規定範囲内にないと判断し、かつ、前記減算手段による減算結果が、前記除数より大きい場合には、前記減算結果を被除数とし、前記仮除数算出手段により仮除数を再度算出し、前記減算手段に戻ることを特徴とする請求項１に記載の剰余計算装置。
【請求項３】
前記仮除数算出手段は、除数に対して１０の（ｎ−１）（ｎは正整数）乗倍して桁数を増やした値を仮除数として求めることを特徴とする請求項１に記載の剰余計算装置。
【請求項４】
前記規定範囲は、前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の演算桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下であることを特徴とする請求項１乃至３のいずれかに記載の剰余計算装置。
【請求項５】
前記規定範囲は、前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の表示桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下であることを特徴とする請求項４に記載の剰余計算装置。
【請求項６】
前記規定範囲は、前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値が、仮除数に1未満の規定値を乗算した値以下であることを特徴とする請求項１乃至３のいずれかに記載の剰余計算装置。
【請求項７】
表示部と入力部とを備えるコンピュータに、該入力部により入力された除数と被除数とから剰余を算出し、算出した剰余を該表示部に表示させるための剰余計算方法であって、
前記コンピュータは、前記入力部により入力された前記除数と前記被除数とを記憶する記憶部を備え、
前記コンピュータは、
前記記憶部に記憶された被除数以下で、該被除数と同じ桁数または１つ桁数が小さくなるように、前記除数を整数倍して仮除数を求める仮除数算出ステップと、
前記仮除数算出ステップにより求められた仮除数を前記記憶部に記憶する仮除数記憶ステップと、
前記記憶部に記憶された被除数から、前記記憶部に記憶された仮除数を、該仮除数以下になるまで繰り返し１回以上減算する減算ステップと、
前記減算ステップの減算結果が規定範囲内にあるか判定する判定ステップと、
前記判定ステップにより、前記減算結果が前記規定範囲内にないと判定され、かつ、前記減算結果が、前記除数より小さい場合は、前記減算結果を剰余とし、前記減算結果が前記規定範囲内にあると判定された場合は、剰余を０とする剰余算出ステップと、
前記剰余算出ステップにより、算出された剰余を前記表示部に表示する表示ステップとを実行することを特徴とする剰余計算方法。
【請求項８】
表示部と入力部とを備えるコンピュータに、該入力部により入力された除数と被除数とから剰余を算出し、算出した剰余を該表示部に表示させるための剰余計算方法であって、
前記コンピュータは、前記入力部により入力された前記除数と前記被除数とを記憶する記憶部を備え、
前記コンピュータは、
前記記憶部に記憶された除数の仮数に基づき規定数を算出する規定数算出ステップと、
前記規定数算出ステップにより算出された規定数を記憶部に記憶する規定数記憶ステップと、
前記記憶部に記憶された被除数の仮数から、前記記憶部に記憶された除数の仮数を、前記被除数の仮数がマイナスになるまで繰り返し1回以上減算する減算ステップと、
前記減算ステップの減算結果が前記記憶部に記憶された規定数にマイナスの符号を付加した値未満であるか判定する判定ステップと、
前記判定ステップにより、前記減算結果が前記規定数にマイナスの符号を付加した値未満であると判定された場合、剰余を０とする剰余算出ステップと、
前記剰余算出ステップにより、算出された剰余を前記表示部に表示する表示ステップとを実行することを特徴とする剰余計算方法。
【請求項９】
前記減算ステップの減算結果が前記記憶部に記憶された規定数にマイナスの符号を付加した値以上の場合に、前記減算結果に前記除数の仮数を加算する加算ステップと、
前記加算ステップによる加算結果と前記規定数とを比較する比較ステップとをさらに備え、
前記剰余算出ステップは、
前記比較ステップで、前記加算結果が前記規定数より大きいと判断された場合に、剰余を０とすることを特徴とする請求項８に記載の剰余計算方法。
【請求項１０】
前記比較ステップで、前記加算結果が前記規定数以下の場合に、前記被除数の指数と除数の指数を比較する指数比較ステップをさらに備え、
前記剰余算出ステップは、
前記指数比較ステップで指数が等しいと判断された場合に、前記減算結果を剰余とすることを特徴とする請求項８に記載の剰余計算方法。
【請求項１１】
前記指数比較ステップで、指数が等しくないと判定した場合に、前記加算結果を１０倍し、被除数の指数をマイナス１するステップを備え、これを次の被除数として前記減算ステップに戻ることを特徴とする請求項１０に記載の剰余計算方法。
【請求項１２】
請求項７乃至１１のいずれか１項に記載の各ステップをコンピュータに実行させるための剰余計算プログラム。
【請求項１３】
請求項１２に記載の剰余計算プログラムを記録したコンピュータが読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、除算の結果として剰余を求める剰余計算装置および剰余計算方法に関し、特に剰余が０となるべき除算が計算機固有の問題のために、剰余が０とならない場合に、剰余を０に処理する剰余計算装置および剰余計算方法に関する。
【背景技術】
【０００２】
剰余を計算する装置は、下記特許文献により公知である。
特許文献１は、IEEE754-1985規格によって指定の丸め規格に基づいてＳＲＴ(Sweeney,Robertson and Tocher)除算及び平方根計算を実施する方法及装置を開示している。そして、丸めブロックを正の剰余に関する丸めブロックと負の剰余に関する丸めブロックで構成し、簡略化丸めテーブルを使用して丸め処理を行うものである。また剰余比較をクリティカル経路であるコア繰り返し回路の後で実施することにより、丸め処理によってもたらされる総遅延を、剰余比較によるわずかなゲート遅延を加えた程度まで削減し、それにより、高速演算処理を可能にするものである。更に同じ剰余形成回路を使用して、除算と平方根計算の両方を可能にするものである。
特許文献２は、除算の商と余りを同時表示する計算機を開示している。
特許文献３は、除算の商と余りを切り替えて表示することができる計算機を開示している。
【特許文献１】特開平７−１８２１４３号公報
【特許文献２】特開昭５３−５３２２５号公報
【特許文献３】特開昭６０−１２２４６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１は、計算過程の剰余に対して丸め機能をもつが、この丸めはIEEE754規格に基づく丸めであり、除数や被除数自身に丸め誤差を含む場合、剰余を０に丸めるものではない。特許文献２、３は、桁数の比較のみであり、剰余を０とする判断は行われていない。このようにこれら特許文献は、計算機固有の問題のために、剰余が０にならない場合の処理については言及していない。
【０００４】
本発明は、例えば70πmodπ（これは、７０π÷πの剰余計算である）の結果が、計算機固有の問題のために剰余が０とならない場合に、剰余を０に処理するものである。つまりデジタル計算機は円周率π、三角関数、平方根、立方根、対数のような無限小数や循環小数を被除数または除数とする除算の場合、これら無限小数や循環小数は計算機の有効演算処理桁数で切り捨てあるいは四捨五入のような処理をする。このため実際の計算では剰余が０となるべき計算が、デジタル計算機では剰余が０とならない場合がある。また計算途中の計算結果を浮動小数点等の数値でもつ計算機において、下記例1および例２で示すように剰余を求める計算では、実際の計算上は剰余が０であるのに結果は０とならないことがある。
以上のように、本発明は、実際の計算上は剰余が０であるのに、計算機固有の問題のために剰余が０とならない場合に、剰余を０に処理する剰余計算装置及び剰余計算方法である。勿論、逆に５÷３のように、実際の計算で剰余がある除算は、剰余を丸めることなく、剰余を出力するものである。
【０００５】
例１：  10mod(1÷6)・・・これは10÷（1÷6）を演算して剰余を求める計算である。
※計算機は（1÷6）を先に実行する。その結果は、1.66666・・・となり、循環小数であるので、計算機は有効演算処理桁数以下で、切り捨てまたは四捨五入の処理を行う。  そのため切り捨てするか、四捨五入剰余するかによって、剰余が異なってしまう。
例２：  (70×π)modπ・・・これは(70×π)÷πを演算して剰余を求める計算である。
※計算機は(70×π)を先に実行する。その場合、πは計算機の有効演算桁数以下で、切り捨てまたは四捨五入の処理を行う。そのため切り捨てまたは四捨五入の桁数によっては、本来剰余が０であるべきはずが、剰余計算で剰余が生じてしまう。
したがって、本発明は、実際の計算において、剰余が０となるべき計算の場合に、剰余を０に処理する剰余計算装置および剰余計算方法を提供するものである。また剰余を生じる除算の場合に正確に剰余を出力することができる剰余計算装置および剰余計算方法を提供するものである。
【課題を解決するための手段】
【０００６】
本発明の剰余計算装置は、除数と被除数を入力する入力手段と、前記被除数以下で、前記被除数と同じ桁数または１つ桁数が小さくなるように、前記除数を整数倍して仮除数を求める仮除数算出手段と、前記被除数から前記仮除数を、前記仮除数未満になるまで繰り返し１回以上減算する減算手段と、前記減算手段の減算結果が規定範囲にあるか判定する判定手段と、前記判定手段が前記規定範囲内にないと判断し、かつ、前記減算手段による減算結果が、前記除数より小さい場合は、前記減算結果を剰余として出力し、前記判定手段が前記規定範囲内にあると判定した場合は、剰余を０に丸めて出力する剰余出力手段とを備え、前記課題を解決する。
本発明は、前記判定手段が前記規定範囲内にないと判断し、かつ、前記減算手段による減算結果が、前記除数より大きい場合には、前記減算結果を被除数とし、前記仮除数算出手段により仮除数を再度算出し、前記減算手段に戻ることが望ましい。
また本発明は、前記仮除数算出手段が除数に対して１０の（ｎ−１）（ｎは正整数）乗倍して桁数を増やした値を仮除数として求めることが望ましい。
また本発明は、前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の演算桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下であることが好ましい。
また本発明は、前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の表示桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下であることが好ましい。
また本発明は、前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値が、仮除数に1未満の規定値を乗算した値以下であることが好ましい。
【０００７】
本発明は別の観点によれば、剰余計算方法であり、表示部と入力部とを備えるコンピュータに、該入力部により入力された除数と被除数とから剰余を算出し、算出した剰余を該表示部に表示させるための剰余計算方法であって、前記コンピュータは、前記入力部により入力された前記除数と前記被除数とを記憶する記憶部を備え、前記コンピュータは、前記記憶部に記憶された被除数以下で、該被除数と同じ桁数または１つ桁数が小さくなるように、前記除数を整数倍して仮除数を求める仮除数算出ステップと、前記仮除数算出ステップにより求められた仮除数を前記記憶部に記憶する仮除数記憶ステップと、前記記憶部に記憶された被除数から、前記記憶部に記憶された仮除数を、該仮除数以下になるまで繰り返し１回以上減算する減算ステップと、前記減算ステップの減算結果が規定範囲内にあるか判定する判定ステップと、前記判定ステップにより、前記減算結果が前記規定範囲内にないと判定され、かつ、前記減算結果が、前記除数より小さい場合は、前記減算結果を剰余とし、前記減算結果が前記規定範囲内にあると判定された場合は、剰余を０とする剰余算出ステップと、前記剰余算出ステップにより、算出された剰余を前記表示部に表示する表示ステップとを実行することを特徴とする。
【０００８】
更に本発明は、表示部と入力部とを備えるコンピュータに、該入力部により入力された除数と被除数とから剰余を算出し、算出した剰余を該表示部に表示させるための剰余計算方法であって、前記コンピュータは、前記入力部により入力された前記除数と前記被除数とを記憶する記憶部を備え、前記コンピュータは、前記記憶部に記憶された除数の仮数に基づき規定数を算出する規定数算出ステップと、前記規定数算出ステップにより算出された規定数を記憶部に記憶する規定数記憶ステップと、前記記憶部に記憶された被除数の仮数から、前記記憶部に記憶された除数の仮数を、前記被除数の仮数がマイナスになるまで繰り返し1回以上減算する減算ステップと、前記減算ステップの減算結果が前記記憶部に記憶された規定数にマイナスの符号を付加した値未満であるか判定する判定ステップと、
前記判定ステップにより、前記減算結果が前記規定数にマイナスの符号を付加した値未満であると判定された場合、剰余を０とする剰余算出ステップと、前記剰余算出ステップにより、算出された剰余を前記表示部に表示する表示ステップとを実行することを特徴とする剰余計算方法であり、これにより、前記課題を解決する。
そして、本発明は、前記減算ステップの減算結果が前記記憶部に記憶された規定数にマイナスの符号を付加した値以上の場合に、前記減算結果に前記除数の仮数を加算する加算ステップと、前記加算ステップによる加算結果と前記規定数とを比較する比較ステップとをさらに備え、前記剰余算出ステップは、前記比較ステップで、前記加算結果が前記規定数より大きいと判断された場合に、剰余を０とすることを特徴とする。
また本発明は、前記比較ステップで、前記加算結果が前記規定数以下の場合に、前記被除数の指数と除数の指数を比較する指数比較ステップをさらに備え、前記剰余算出ステップは、前記指数比較ステップで指数が等しいと判断された場合に、前記減算結果を剰余とすることを特徴とする。
また本発明は、前記指数比較ステップで、指数が等しくないと判定した場合に、前記加算結果を１０倍し、被除数の指数をマイナス１するステップを備え、これを次の被除数として前記減算ステップに戻ることが望ましい。
また本発明は、前記各ステップをコンピュータに実行させるための剰余計算プログラムである。
また本発明は、前記剰余計算プログラムを記録したコンピュータが読み取り可能な媒体である。
【発明の効果】
【０００９】
本発明の剰余計算装置は、除数を整数倍して、被除数と同じ桁数または１つ桁数が小さくなる仮除数を求め、被除数から仮除数を仮除数未満になるまで繰り返し１回以上減算し、減算結果が規定範囲にあるか判定し、規定範囲内にある場合に剰余を０に丸めるので、実際の計算において、剰余が０となるべき剰余計算の場合に、剰余を０にすることができる。また規定範囲内になく、かつ、減算結果が除数より小さい場合は、演算結果を剰余として出力するので、正確に剰余計算をすることができる。
また本発明は、規定範囲内にないと判断し、かつ、減算結果が除数より大きい場合には、減算結果を被除数とし、仮除数を再度算出し、前記減算手段に戻るので、商が２桁以上の除算を実施して剰余を求めることができる。
また本発明は、除数に対して１０の（ｎ−１）（ｎは正整数）乗倍して仮除数を求めるので、演算が容易である。
また本発明は、前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の演算桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下、または前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値の表示桁数の最上位桁から規定数桁までの数値が０で、前記規定数桁より一つ下の桁の数値が別に規定した値以下、または前記規定範囲が前記減算手段による減算結果の絶対値、または前記減算結果と仮除数との差の絶対値が、仮除数に1未満の規定値を乗算した値以下であるので、剰余を０に丸める範囲が明瞭であり、誤りのない剰余計算ができる。
【００１０】
本発明の剰余計算方法は、除数と被除数を入力させ、除数を整数倍して、被除数以下で同じ桁数または１つ桁数が小さくなる仮除数を求め、被除数から仮除数を仮除数以下になるまで繰り返し１回以上減算する減算し、その減算結果が前記規定範囲内にある場合は、剰余を０に丸めるので、実際の計算において剰余が０となるべき計算の場合に、剰余を０とする計算を実現するものである。また減算結果が規定範囲になく、かつ、除数より小さい場合は、前記減算結果を剰余として出力するので、剰余を求めることができる。
また本発明は、除数と被除数は、仮数と指数で構成された形式で表され、その形式で剰余計算を行うことができ、しかも実際の計算において剰余が０となるべき計算の場合に、剰余を０とすることができる。
そして、計算機固有の問題のために、剰余計算の結果が０に近い場合に、剰余を０に丸めることができる。また剰余計算の結果が除数または仮除数に近い場合に剰余を０に丸めることができる。
更に本発明は、除数と被除数とが仮数と指数で構成された形式を有する場合で、被除数の仮数から除数の仮数を減算した減算結果が規定範囲にないと判定したときに、減算結果を剰余として出力することが出来る。
【発明を実施するための最良の形態】
【００１１】
（本発明の基本的概念）
初めに、本発明の基本的概念を図１により説明する。
例えば、図１（ａ）に示すように、70πmodπを計算する場合、まず除数を整数倍して、除数が被除数以下で同じ桁数または１つ桁数が小さくなるように仮除数を求める。ここでは除数を１０のｎ乗倍（ｎは正の整数）した場合を説明する。従って、π×１０＝31.415926535898を得る。次に被除数である７０π（即ち、219.911485751280）から仮除数を減算する。減算は仮除数以下になるまで繰り返す。この減算は除算に相当する。この場合は、６回減算を繰り返すと、剰余は31.415926535892となる。この剰余と仮除数との差の値は、0.000000000006となる。この値が規定数ａ１、例えば、計算機の演算桁数の最下位桁以外が０であれば、剰余を０に丸める。
また、ａ÷ｂ（ａ、ｂは、任意数値）の計算において、その計算途中が図１（ｂ）に示すように、例えば、被除数が70であり、仮除数が（７／３）（＝23.333333333333）である剰余計算とすると、その除算結果は、剰余が0.000000000001となる。この値が規定数ａ２、例えば除数または仮除数の定数倍ｓ（０＜ｓ＜１）以上であれば、除数または仮除数に近いとして、剰余を０にする。なお、ｓは演算桁数の最下位桁以外が０とする。
【００１２】
図１（ａ）と図１（ｂ）に説明した関係を、図２（ａ）と図２（ｂ）に図解して示す。  図２の横軸は、左から右へ剰余が順次大きくなる数値を示している。
図２（ａ）の左側は、実際には除算において、割り切れて剰余が０であるはずが、計算機固有の問題のために、剰余が０である点を中心にして、剰余が０より小さい場合と、０より大きい場合が生じたことを示している。つまり、剰余が演算桁数（１４桁）の最下位桁が１で、それ以外が０となる範囲、すなわち−0.0000000000001〜0.0000000000001の範囲ｔ１を示している。
図２（ａ）の右側は、剰余計算の結果が仮除数または除数を中心にして、剰余が除数または仮除数より小さい場合と、大きい場合を示している。つまり、（仮除数（または除数）―0.0000000000001）〜（仮除数（または除数）＋0.0000000000001）の範囲t２を示している。
図２（ｂ）の左側は、剰余が０である点を中心にして、剰余が仮除数＊（―0.0000000000003）〜仮除数＊0.0000000000003の範囲ｔ３を示している。
また図２（ｂ）の右側は、剰余が仮除数または除数を中心にして、剰余が仮除数（または除数）―仮除数（または除数）＊0.0000000000003＝仮除数（または除数）＊0.99999999999970〜仮除数（または除数）＋仮除数（または除数）＊0.0000000000003＝仮除数（または除数）＊1.0000000000003の範囲ｔ４を示している。
なお、上記説明は、分かりやすいように、仮除数、除数、演算結果を、仮数部のみ示しているが、本発明はそれだけに制限されるものではない。また剰余を０に見なす規定範囲は、t１〜ｔ４における０、仮除数または除数近傍の大小の範囲のいずれかであればよい。
このように、計算機は剰余計算の結果として、範囲ｔ１あるいは範囲ｔ２、または範囲ｔ３あるいは範囲ｔ４になることがある。上記範囲ｔ１あるいは範囲ｔ２、または範囲ｔ３あるいは範囲ｔ４は、実際の計算では、剰余が０となる範囲であるので、剰余を０に丸める。上記範囲ｔ１あるいは範囲ｔ２、または範囲ｔ３あるいは範囲ｔ４の大きさは、それぞれ一致している必要はなく、また上記数値以外に設定することが可能である。しかし範囲ｔ１あるいは範囲ｔ２、または範囲ｔ３あるいは範囲ｔ４以外は、除算結果を剰余として出力する。
【００１３】
ここで、剰余計算の有効桁数について説明すると、計算機は通常、表示装置が有限の大きさであるため、表示桁数は有限であり、従って計算機の演算桁数は、表示桁数と同じか、若しくは表示桁数より１桁または数桁多い桁数、好ましくは２桁〜４桁多い桁数を有する。本発明において、剰余を丸める桁数は演算桁数としている。従って、表示桁数が１０桁であり、演算桁数が１０桁である場合、剰余を丸める桁数は、１０桁とする。また表示桁数が１０桁であり、演算桁数が１４桁である場合、剰余を丸める桁数は、１４桁とする。
【００１４】
（剰余計算装置）
本発明の剰余計算装置は、例えば図３に示すような関数電卓により実現される。図３に示す関数電卓は、上方に仮数部１０桁と指数部２桁の表示部１を備える。表示部１は指数表示だけでなく、通常の数字も表示可能である。表示部１の下方に０〜９および小数点、マイナス（−）の入力キーを備える数値入力部２を備える。表示部１と数値入力部２の間に、指数入力キー（Exp）、サイン入力キー（sin）、コサイン入力キー（cos）、タンゼントタンジェント入力キー（tan）、ルート入力キー（√）、剰余キー（mod）を備える。  この他にパイ入力キー（π）を備えてもよい。さらに数値入力部２の右側に、かっこキー（（）と（）（と））、乗算キー（×）、除算キー（÷）、加算キ−（＋）、減算キー（−）、イコールキー（＝）を備える。
本発明の剰余計算装置は、図３に示す関数電卓のように製品として提供する以外に、パソコンのようなコンピュータや各種制御機器の剰余計算装置として組み入れられてもよい。またコンピュータや各種制御機器のソフトウエアとして剰余計算プログラムを提供してもよく、更に剰余計算プログラムを記録したコンピュータが読み取り可能な媒体として提供してもよい。
【００１５】
本発明の剰余計算装置は、図４に示すようなブロック図により構成される。図４において、１１は液晶表示装置、１２はＶＲＡＭ、１３はＣＰＵ、１４は入力装置、１５はメモリを示す。
液晶表示装置１１は図３の表示部１に相当し、入力データ、演算結果、指示情報を表示するものであり、ＥＬやプラズマ表装置、ＣＲＴであってもよい。また各種制御機器の場合は、入力情報や演算情報を他の部分へ送信する通信部であってもよい。
ＶＲＡＭ１２はフラッシュメモリのような高速半導体処理装置よりなる。表示装置に表示する内容を保存し、本内容が表示装置１１に表示される。
ＣＰＵ１３はメモリ１５に格納されたプログラムを実行し、入力制御、出力制御、演算を実施する。本発明の剰余計算をするために、ＣＰＵ１３は、仮除数算出手段１３ａ、減算手段１３ｂ、判定手段１３ｃ、剰余出力手段１３ｄ、仮除数置換手段１３ｅを備える。
また入力装置１４は入力データ、指示情報を入力するものであり、図３の数値入力部２や各種キーを含み、キーボード、マウス、タッチスイッチ、ポインターであってもよい。また入力装置１４は入力データ、指示情報を入力するものであり、他の部分から情報を受ける通信部であってもよい。
メモリ１５は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５−１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５−２を備える。ＲＡＭ１５−１は本発明の剰余計算を実施するために、表示バッファ１６、フラッシュメモリ、ハードディスク、光ディスクのように書換え可能のメモリを含み、本発明の除算を実行するため表示バッファ１６、被演算数／結果バッファ１７、演算数バッファ１８、被除数バッファ１７、仮除数バッファ１８、丸め範囲（ｔ）保存バッファ１９を備えており、これらのバッファはそれぞれ仮数部と指数部を有する備える。仮数部は、表示バッファ１６が１０桁、被演算数／結果バッファ１７、演算数バッファ１８、仮除数バッファ１８、被除数バッファ１７１５、丸め範囲（ｔ）保存バッファがそれぞれ１４桁である。指数部はそれぞれ２桁である。またＲＯＭ１５−２は書き換え不可能なメモリ（ＲＯＭ）２０を備え、入力制御プログラム、出力制御プログラム、関数電卓用演算プログラムや、本発明のプログラムを格納する。
【００１６】
（第１のフローチャート）
本発明の第１のフローチャートを図５に示す。このフローチャートは、図３の関数電卓の実施例を示し、数値を仮数部と指数部にわけて計算する数値を指数で入力して指数で除算する場合で説明する。本計算機は数値を１０進数の仮数部及び１０進数の指数部に分けた指数方式で保持し、計算も指数方式で行う。指数方式では、仮数部の最上位桁数の値は常に１の位にあり、指数部の値を１０のべき乗のべき指数として使用した値と仮数部の値とを乗算した値が、本来の数値となる。そのため仮数部の値は常に−１０から１０となる。例えば仮数部の値が３．１４で指数部の値が３だとその数値は３．１４＊１０3＝３１４０となる。指数入力する場合は、上記基本的概念で説明した、除数が被除数以下で同じ桁数または１つ桁数が小さくなるように、除数を整数倍して仮除数を求める計算が行われていることになる。特に，指数の底が１０である場合は、１０のｎ（ｎは正または負の整数）乗倍していることになる。
初めのステップＳ１では、入力装置１４より、数値入力部２または指数入力キー(exp)を使用して被除数および除数を入力する。被除数が５．１Ｅ３である場合は、５．１［exp］３または５１００のように入力する。入力がａＥｂ ｍｏｄ ｃＥｄ５１００［ｍｏｄ］３．２であるとすると、被除数５．１Ｅ３は被除数バッファ１９の仮数部に５．１、指数部に３を保存する。また除数３．２Ｅ１は、仮除数バッファ２０の仮数部に３．２、指数部１を保存する。上記の５１００ｍｏｄ３．２の剰余計算の場合は、ステップＳ１のａＥｂ  ｍｏｄ  ｃＥｄにおけるａ〜ｄの値は、ａ＝５．１、ｂ＝３、ｃ＝３．２、ｄ＝１となる。
【００１７】
次に、ステップＳ２では剰余を求める計算が必要か否か判断するために、被除数が除数より大きいか判断する。即ち、ａＥｂ＜ｃＥｄであれば、剰余を求める計算は必要なく、直ちに剰余として、ａＥｂを出力する。しかし、ａＥｂ＜ｃＥｄでない場合は、ステップＳ３に進み、剰余を丸める際の規定値ｔを求めるため、ｔ＝ｃ＊0.9999999999970を計算する。この場合に除数の仮数に掛ける数値ｓは、１＜ｓ＜０であり、計算機の演算桁数の最下位桁を０とし、それ以外を９とする値、即ち、0.9999999999990である。この値ｔは、以下に説明するステップＳ６およびＳ８において、剰余を丸めるための比較用として使用するものである。次に、ステップＳ４では、減算手段１３ｂにより被除数の仮数と除数の仮数の減算を行う。つまり、ａ＝ａ−ｃを計算する。例えば、上記入力の場合は、５．１−３．２＝１．９を計算する。ここで仮数のみを減算しているのは、除数の桁数を、被除数の桁数に合わせた値を仮除数とするためで、実際の計算としてはａＥｂ−ｃＥｄとなり上記入力の場合５１００−３２００＝１９００を計算することになる。ここで行う減算は、除算に変えてもよい。この計算結果は、被除数バッファ１７被除算数／結果バッファ１７に格納する。
【００１８】
次にステップＳ５では、ステップＳ４の減算により被除数の仮数ａがマイナスになったか否か判断するステップである。仮数ａがプラスである場合は、ステップＳ４おいて、減算が可能であるので、ステップＳ４戻る。ステップＳ４とステップ５は、減算結果がマイナスになるまで１回以上繰り返される。上記入力の場合は、１．９−３．２＝−１．３のように、除数の仮数ａがマイナスになったら、ステップＳ６進む。このマイナスの仮数を仮剰余とする。ステップＳ４からステップＳ６の処理を行うのが、仮除数未満になるまで、被除数から仮除数を繰り返し減算する減算手段である。
【００１９】
ステップＳ６は、判定手段１３ｃにより上記仮剰余の値が規定値０に近いか否かを判定するステップであり、仮剰余の値が、ステップＳ３で予め決められた値ｔ（規定数）に負号をつけた値−ｔ未満であるかどうかを判定する。即ち、上記減算結果が演算桁数の最小桁数以外が０である場合は、剰余を０とする処理を行う。このステップＳ６では、仮数ａは剰余ではなく、剰余に対して仮剰余から仮除数を引いた値であるため、結果的に仮剰余の値が、除数または仮除数に近い値であるかどうか小さいかどうかの判断となる。従って、仮数ａがステップＳ３で計算したｔに負号をつけた値である−ｔと比較して、もしａ＞−ｔでない場合は、剰余出力手段１３ｄにより剰余を０に丸める処理（ａ＝０）をするステップＳ１１に進む。
ステップＳ６で、ａ≧−ｔである場合は、ステップＳ７に進み、減算結果と除数の仮数を加算（ａ＝ａ＋ｃ）する。ステップＳ７は、ステップＳ４で引き算をし過ぎてマイナスになったので、引き算をする前に戻す処理である。上記入力の場合は、−３．３１．３＋３．２＝１．９となる。
次に、ステップＳ８では、仮剰余の値が除数または仮除数に近いかどうか判断するために、加算結果ａが上記予め決められた値ｔ（規定数）以下未満である場合は、剰余を０に丸める処理（ａ＝０）であるステップＳ１１に進む。ステップＳ８で計算した仮数ａと、ステップＳ２で計算したｔを比較する。ａ＞ｔであれば、ステップＳ１１に進み、ａ＞ｔでなければ、ステップＳ９に進む。
ステップ６およびステップ７の処理を行うのが、前記減算手段の減算結果が規定範囲にあるか判定する判定手段である。
【００２０】
ステップＳ９では、被除数の指数と除数の指数が等しいか否か判定する。即ち、ｂ＝ｄであれば剰余計算は終了であると判断し、計算終了後の丸め処理をするステップＳ１２に進みステップ７で計算した加算結果を剰余とする。剰余出力手段１３ｄにより出力するステップＳ１２に進む。ステップS９で、ｂ＝ｄでなければステップＳ１０に進む。ステップＳ１０では上記か算結果被除数の仮数部を１０倍し、被除数の指数部を−１する。これは手計算の除算の場合の被除数を桁下げする操作に相当する。即ち、ａ＝ａ＊１０と、ｂ＝ｂ−１の演算処理をして、ステップＳ４に戻る。上記入力の場合は、１９Ｅ２となる。
この第１のフローチャートの場合は、除数の定数倍した規定値ｔにより、剰余を０に丸める処理をするため、除数の値に比例して剰余を丸めることができる。
【００２１】
図５に示したフローチャートを、５０÷３を例にして説明すると、これは指数表現では、５Ｅ１ｍｏｄ３Ｅ０となり、これが入力される（ステップＳ１）。次にステップＳ２では、５Ｅ１＞３Ｅ０であると判断し、ステップＳ３に進む。ステップＳ３では、ｔ＝ｃ＊0.9999999999970を計算し、３＊0.9999999999970＝2.9999999999991を得る。ステップＳ４では、５−３＝２を計算する。次のステップＳ５では、まだ仮数ａは正であるので、ステップＳ４に戻り、２−３＝−１を得る。このようにして仮数ａが負になったので、ステップＳ６に進む。ステップＳ６では−１と−2.9999999999991を比較すると、仮数ａの方が大きいので、ステップＳ７へ進む。ステップＳ７ではａ＋ｃを計算して、―１＋３＝２を得る。次にステップＳ８では、ａとｔを比較し、この場合は仮数ａの方が小さいので、ステップＳ９へ進む。ステップＳ９では指数部ｂとｄが等しいか比較される。この場合、指数ｂの方が大きく、等しくないので、ステップＳ１０に進む。ステップＳ１０ではａ＊１０が計算される。即ち、２＊１０＝２０を得る。またｂ−１が計算される。ここではｂは１であるので、ｂ−１＝０になる。この後、ステップＳ４に戻る。
【００２２】
ステップＳ４では、２０−３＝１７が計算され、ステップＳ５で仮数ａが負になるまで、したがって、ステップＳ４とステップＳ５が７回繰り返される。その結果、−１となり、仮数ａが負になるので、ステップＳ６へ進み、ステップＳ６で−ｔと比較された後、ステップＳ７でａ＋ｃを計算し、−１＋３＝２を得る。次にステップＳ８では、ａとｔを比較すると、ａの方が小さいので、ステップＳ９へ進む。ステップＳ９の指数の比較では、この段階では指数部ｂとｄは等しくなっているので、除算は終了してステップＳ１２に進む。ステップＳ１２は計算終了後の丸め処理をして、剰余ａＥｂを出力し、このフローチャートを終了する。この場合の剰余は２Ｅ０であるので、剰余２を出力する。
【００２３】
次に、70πmodπについて説明する。
ここでは、計算機がπをデータとして保有しているとする。従って、指数表現では、７πＥ１ｍｏｄπＥ０となる。これがステップＳ１で入力されると、ステップＳ２では被除数が除数より大きいと判断され、ステップＳ３に進む。ステップＳ３では、ｔ＝ｃ＊0.9999999999990が計算され、0.9999999999990πを得る。次にステップＳ４ではａ＝ａ−ｃ＝７π―πが計算され、ステップＳ５で仮数ａがマイナスになるまでステップＳ４の計算が行われ、８回目でーπを得る。次に、ステップＳ６で、−πと−ｔ（＝−0.9999999999990π）を比較すると、−πの方が小さいので、ステップＳ１１に進み、ａ＝０の処理をして、剰余０を出力する。これでこのフローは終了する。もし、計算機がπをデータとして保有していない場合は70πmodπは、2.1991148575128Ｅ２ｍｏｄ3.1415926535898Ｅ１として入力される（Ｓ１）。ステップＳ２では被除数の方が除数より大きいと判断されるので、ステップＳ３に進む。ステップＳ３では、ｔ＝ｃ＊0.9999999999970が計算され、3.1415926535888を得る。
ステップＳ４ではａ−ｃ＝2.1991148575128−3.1415926535898＝-0.942477796077が計算され、これはマイナスであるので、ステップＳ６に進む。ステップＳ６では、−0.942477796077と−3.1415926535888が比較され、減算結果のほうが大きいので、ステップＳ７に進み、ａ＝ａ＋ｃ＝−0.942477796077＋3.1415926535898＝2.1991148575128を得る。次にステップＳ８で加算結果とｔを比較すると、加算結果＝2.1991148575128は、ｔ＝3.1415926535888より小さいので、ステップＳ９に進む。ステップＳ９では指数が同じか判断されるが、ここでは指数が同じでないので，ステップＳ１０に進む。ステップＳ１０では、仮数ａ＝2.1991148575128が１０倍され、また指数ｂ＝ｂ−１＝２−１＝１が計算される。
そして、ステップＳ４に戻り、
ａ−ｃ＝21.991148575128―3.1415926535898=18.8495559215382が計算される。この計算はステップＳ５によって仮数ａがマイナスになるまで続けられる。８回目を計算すると、-0.0000000000006となり、マイナスになる。これによりステップＳ６に進む。ステップＳ６では減算結果（＝―0.0000000000006）と−ｔ（＝-3.1415926535888）を比較し減算結果のほうが大きいので、ステップＳ７に進み、ａ＝ａ＋ｃ＝−0.0000000000006＋3.1415926535898＝3.1415926535892を得る。次にステップＳ８で加算結果とｔ（＝3.1415926535888）を比較すると、加算結果が大きいのでより小さいと判断するのでステップＳ１１に進み、剰余０を出力して、このフローを終了する。
【００２４】
（第２のフローチャート）
本発明の第２のフローチャートを図６に示す。第１のフローチャートとの相違点は、ステップＳ３において、規定値ｔの計算が異なる点である。即ち、ｔ＝ｃ−0.0000000000010を計算する。第１のフローチャートで示したステップＳ３では、ｔ＝ｃ＊0.9999999999970を計算したが、このフローチャートのように引き算の方が計算機の構成は簡単になり、動作が速くなる。また電卓や計算機では演算桁数が一定であり、除算以外の加算、減算、乗算のような他の演算でも一定の桁数で丸め処理が行われる場合は、除算以外の演算と丸め処理動作を合わせることができる。しかし計算精度は第１のフローチャートのように、除数に９を掛ける方が高くなる。しかし、丸めの範囲は第１のフローチャートの方が除数に比例した値となり、除数の指数部の値が変わると丸めの範囲も変わり、剰余計算を実施する前の丸めによる剰余誤差の発生頻度は下がる。
図６ではステップＳ３ａと表示し、２重線で示した。このためステップＳ６、Ｓ８の規定値ｔもステップＳ３ａで計算した規定値ｔを使用する。
その他のステップは図５に示した第１のフローチャートと同じである。
【００２５】
（第３のフローチャート）
本発明の第３のフローチャートは図７に示す通りで、第１のフローチャートとの相違点は、ステップＳ３とＳ６である。第３のフローチャートのステップＳ３ｂでは、ｔ＝0.0000000000030×ｃを計算する。この値は、ステップＳ６ａで、仮剰余の値が仮除数に近いかを判断する値として使用され、仮剰余の仮数の値ａが除数の仮数の値の定数倍の規定値-ｔ以上未満であると、剰余を０に丸める。またＳ８では、仮剰余の値が０に近いかを判断するために、仮剰余と仮除数の差分の仮数の値と、仮剰余の仮数の値ａが除数の仮数の値の定数倍の値ｔ以下未満であると、剰余を０に丸めるために使用する。
以上のように、この第３のフローチャートの場合は、ステップＳ３ｂで、除数の仮数ｃを定数倍した値を求め、それを用いてステップＳ６ｂＳ６ａおよびＳ８ｂＳ８で、剰余を０に丸めるか否か判断しているので、除数の仮数ｃに比例して剰余を丸める範囲を設定することができる。また除数の仮数は入力された値であり、変化しないので、値ｔはステップＳ３ｂで一度計算して保存しておくことにより、ステップＳ６ａおよびＳ８で再使用することができ、剰余計算の速度を減少させない。またステップＳ３の乗算は、除数の仮数全桁を対象とせずに上位桁のみを使用して概算値を求めてもよい。(除数が3.1415926535898だと最上位の3のみを用いて3X0.0000000000030=0.000000000009とする)
その他のステップは図５に示した第１のフローチャートと同じである。
【００２６】
（第４のフローチャート）
本発明の第４のフローチャートを図８に示す。第１のフローチャートとの相違点は、ステップＳ３を省略し、ステップＳ６ｃｂとステップＳ８ｃｂで、仮数ａと比較する数値ｔを、0.0000000000010と固定値とした点である。ここでは、この固定値は計算機の表示桁数または演算桁数の最下位桁から２桁が１０で、他の桁は０である。このフローチャートの場合は、固定値を用いるので、演算桁数の最下位桁から２桁目が１で、その他の最上位桁から最下位桁から３桁目までの桁の値が０であることを確認すればよいので，計算機の処理が簡略化でき、動作が速くなる。また加算、減算、乗算のような他の演算でも一定の桁数で丸め処理を行う場合は、除算以外の演算と丸め処理動作を合わせることができる。  図８にＳ６ｂ、Ｓ８ｂと表示し、２重線で示した。その他のステップは図５に示した第１のフローチャートと同じである。
【００２７】
（第５のフローチャート）
本発明の第５のフローチャートを図９に示す。第１のフローチャートとの相違点は、ステップＳ３〜Ｓ９と、ステップＳ１２がを追加した点である。
第５のフローチャートにおいて、ステップＳ３ｄは、仮除数（ｘＥｙ）を求めるステップであり、ｘ＝ｃ、ｙ＝b１０ｄとして、ｘＥｙ＝ｃＥｄbを求める。これにより除数の桁数を被除数の桁数に合わせることになる。従って、入力が５Ｅ１２ｍｏｄ３Ｅ１であるとすると、仮除数は３Ｅ１２となる。
次にステップＳ４ｄでは、仮数と指数を合わせて計算する。しかし、ステップＳ３ｄで被除数の指数と除数の指数を合わせているので、結局このステップＳ４ｄでは、第１のフローチャートと同様に仮数のみの引き算と同じ意味になる。上記入力の場合ではａＥｂ＝ａＥｂ−ｘＥｙ＝５Ｅ１２−３Ｅ１２＝２Ｅ１２０となる。
次に、ステップＳ５ｄは、ステップＳ４ｄの減算結果がマイナスになったかを判断する。次のステップＳ６ｄ、Ｓ８ｄは、第４のフローチャートと同様に固定値ｔ（0.0000000000010）と比較する。ステップＳ７ｄは、ステップＳ４ｄで引きすぎたので、引く前に戻すステップである。ステップＳ９ｄは仮除数と除数の指数を比較するステップで、ここではｙ＝ｄを判定する。ステップＳ１２はこのフローチャートで追加されたステップであり，仮除数の指数を１つ減少させる処理を行う。
その他のステップは図５に示した第１のフローチャートと同じである。
この第５のフローチャートの場合は、加算、減算、乗算、除算のような他の演算と、０の丸め処理を行う桁数を合わせることができる。またステップＳ６ｄ、Ｓ８ｄで使用する固定値は演算桁数の最下位桁から２桁目が１で、その他は０であるので、１のある桁以外は０であることを確認すればよいので、処理を簡略にすることができる。固定値ｔは上記数値以外に設定することが可能であり、その場合も処理を簡略にすることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の基本的概念を説明する図である。
【図２】本発明の基本的概念を図解する図である。
【図３】本発明の実施形態の外観図である。
【図４】本発明の実施形態のブロック図である。
【図５】第１のフローチャート図である。
【図６】第２のフローチャート図である。
【図７】第３のフローチャート図である。
【図８】第４のフローチャート図である。
【図９】第５のフローチャート図である。
【符号の説明】
【００２９】
１    表示部
２    数値入力部
１１  液晶表示装置
１２  ＶＲＡＭ
１３  ＣＰＵ
１４  入力装置
１５  メモリ
１６  表示バッファ
１７  被除数バッファ
１８  仮除数バッファ
１９  丸め範囲（ｔ）保存バッファ
２０  ＲＯＭ１３ａ  仮除数算出手段
１３ｂ  減算手段
１３ｃ  判定手段
１３ｄ  剰余出力手段
１３ｅ  仮除数置換手段
【図１】
0004445917.tif 000002
【図２】
0004445917.tif 000003
【図３】
0004445917.tif 000004
【図４】
0004445917.tif 000005
【図５】
0004445917.tif 000006
【図６】
0004445917.tif 000007
【図７】
0004445917.tif 000008
【図８】
0004445917.tif 000009
【図９】
0004445917.tif 000010