(57)【要約】【課題】従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断する。【解決手段】関数電卓１は、演算桁数「ｎ」を記憶する演算桁数格納領域６２と、ユーザ操作に基づいて数値計算式を入力する入力部２０と、数値計算式を演算桁数「ｎ」で計算する十進演算器７０と、入力された数値計算式に含まれる各計算数値の仮数部の桁数が演算桁数「ｎ」以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別し、何れかの計算数値が誤差有りと判別された場合に、十進演算器７０による計算結果が誤差有りであると判別するＣＰＵ４０と、十進演算器７０による計算結果及びＣＰＵ４０による判別結果を表示する表示部３０と、を備える。【選択図】図２
2008186224.tif 000002
【特許請求の範囲】
【請求項１】
演算桁数を記憶する演算桁数記憶手段と、
ユーザ操作に基づいて数値計算式を入力する入力手段と、
前記入力手段により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別手段と、
前記数値計算式を前記演算桁数で計算する計算手段と、
前記計算数値誤差判別手段により何れかの計算数値が誤差有りと判別された場合に、前記計算手段による計算結果が誤差有りであると判別する結果数値誤差判別手段と、
前記計算結果と、前記結果誤差判別手段による判別結果とを表示する表示手段と、
を備えることを特徴とする計算装置。
【請求項２】
請求項１記載の計算装置において、
前記入力手段は、
ユーザ操作に基づいて前記演算桁数記憶手段の前記演算桁数を任意に設定する演算桁数設定手段を有することを特徴とする計算装置。
【請求項３】
請求項１または２記載の計算装置において、
結果数値誤差判別手段は、
前記計算手段による前記演算桁数での計算で桁落ちが生じた場合に、前記計算結果が誤差有りであると判別する桁落ち判別手段を有することを特徴とする計算装置。
【請求項４】
請求項３記載の計算装置において、
前記桁落ち判別手段は、
前記数値計算式中で所定の一価関数に相当する演算部分における演算数が当該一価関数の解答の桁数を前記所定桁数以下とするための所定の条件を満たすか否かに基づいて、前記計算結果中の誤差の有無を判別する一価関数判別手段を有することを特徴とする計算装置。
【請求項５】
請求項３または４記載の計算装置において、
前記桁落ち判別手段は、
前記数値計算式中の開平計算部分を開平法により計算する場合に得られる擬似剰余が０になるか否かに基づいて、前記計算結果中の誤差の有無を判別する数式展開判別手段を有することを特徴とする計算装置。
【請求項６】
コンピュータに、
演算桁数を記憶する演算桁数記憶機能と、
ユーザ操作に基づいて数値計算式を入力する入力機能と、
前記入力機能により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別機能と、
前記数値計算式を前記演算桁数で計算する計算機能と、
前記計算数値誤差判別機能により何れかの計算数値が誤差有りと判別された場合に、前記計算機能による計算結果が誤差有りであると判別する結果数値誤差判別機能と、
前記計算結果と、前記結果誤差判別機能による判別結果とを表示する表示機能と、
を実現させることを特徴とする計算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算装置及び計算プログラムに関する。
【背景技術】
【０００２】
従来より、浮動小数点演算を行うことのできる計算装置がある。このような計算装置においては、演算規格としてＡＮＳＩ／ＩＥＥＥ７５４−１９５８標準（「ＩＥＥＥ７５４」）等が用いられており、高い精度での浮動小数点演算が可能となっている。
【０００３】
ところで、上記のような規格を用いて浮動小数点演算を行うと、値の近い数値間での減算等においては、演算桁数の制約により仮数部の桁数（有効桁数）が極端に少なくなるという問題、いわゆる「桁落ち」が発生する。
【０００４】
この「桁落ち」を説明するために、減算「１．００１２３3−１」を演算桁数「８」で行わせる場合を考える。先ず「１．００１２３3」は、演算桁数「８」では「１．００３６９４５」と求められる。よって、この値を用いて上記の減算を行うと、演算結果は「１．００３６９４５−１＝０．００３６９４５」となり、仮数部の桁数が８桁から５桁に減少する。つまり、この例では３桁の桁落ちが発生したことになる。
【０００５】
近年、このような桁落ちによる精度低下を防止する技術として、ユーザの所望する桁数「ｎ」と、これよりも所定数だけ多い桁数、例えば「ｎ＋４」との両方で計算を行い、「ｎ＋４」桁での計算結果に基づいて「ｎ」桁の計算結果を補正する技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００６−６５７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、計算装置によって計算を行うユーザにとっては、必ずしも桁数の多い高精度の計算結果が必要ではなく、桁落ち等による計算誤差の有無さえ分かれば、桁数の少ない計算結果でも十分である場合がある。この点、上記特許文献１に記載の技術では、計算誤差の有無を判別するのに「ｎ」桁，「ｎ＋４」桁の各桁数で実際に計算を行う必要があるため、出力される計算結果の桁数に対して装置が大型化したり、処理が煩雑化したりしている。
【０００７】
本発明の課題は、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することのできる計算装置及び計算プログラムを提供することである。
【課題を解決するための手段】
【０００８】
以上の課題を解決するために、請求項１記載の発明は、計算装置であって、
演算桁数を記憶する演算桁数記憶手段と、
ユーザ操作に基づいて数値計算式を入力する入力手段と、
前記入力手段により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別手段と、
前記数値計算式を前記演算桁数で計算する計算手段と、
前記計算数値誤差判別手段により何れかの計算数値が誤差有りと判別された場合に、前記計算手段による計算結果が誤差有りであると判別する結果数値誤差判別手段と、
前記計算結果と、前記結果誤差判別手段による判別結果とを表示する表示手段と、
を備えることを特徴とする。
【０００９】
請求項２記載の発明は、請求項１記載の計算装置において、
前記入力手段は、
ユーザ操作に基づいて前記演算桁数記憶手段の前記演算桁数を任意に設定する演算桁数設定手段を有することを特徴とする。
【００１０】
請求項３記載の発明は、請求項１または２記載の計算装置において、
結果数値誤差判別手段は、
前記計算手段による前記演算桁数での計算で桁落ちが生じた場合に、前記計算結果が誤差有りであると判別する桁落ち判別手段を有することを特徴とする。
【００１１】
請求項４記載の発明は、請求項３記載の計算装置において、
前記桁落ち判別手段は、
前記数値計算式中で所定の一価関数に相当する演算部分における演算数が当該一価関数の解答の桁数を前記所定桁数以下とするための所定の条件を満たすか否かに基づいて、前記計算結果中の誤差の有無を判別する一価関数判別手段を有することを特徴とする。
【００１２】
請求項５記載の発明は、請求項３または４記載の計算装置において、
前記桁落ち判別手段は、
前記数値計算式中の開平計算部分を開平法により計算する場合に得られる擬似剰余が０になるか否かに基づいて、前記計算結果中の誤差の有無を判別する数式展開判別手段を有することを特徴とする。
【００１３】
請求項６記載の発明は、計算プログラムであって、
コンピュータに、
演算桁数を記憶する演算桁数記憶機能と、
ユーザ操作に基づいて数値計算式を入力する入力機能と、
前記入力機能により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別機能と、
前記数値計算式を前記演算桁数で計算する計算機能と、
前記計算数値誤差判別機能により何れかの計算数値が誤差有りと判別された場合に、前記計算機能による計算結果が誤差有りであると判別する結果数値誤差判別機能と、
前記計算結果と、前記結果誤差判別機能による判別結果とを表示する表示機能と、
を実現させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、数値計算式中の各計算数値の仮数部の桁数が演算桁数以下であるか否かに基づいて当該各計算数値中の誤差の有無が判別され、何れかの計算数値が誤差有りと判別された場合に計算結果が誤差有りであると判別されて計算結果及び判別結果が表示されるので、桁数の多い高精度の計算を行うことなく、計算結果における誤差の有無を判断することができる。従って、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明に係る計算装置を関数電卓に適用した場合の実施形態について詳細に説明する。
【００１６】
＜第１実施形態＞
図１は、関数電卓１の概観図である。
この図に示すように、関数電卓１は、各種操作キーを含むキー群２及びディスプレイ３を備えている。
【００１７】
キー群２は、ユーザによって操作される複数のキーを備えており、本実施の形態においては、数字キー群２ａと、方向キー２ｂと、ＥＸＥキー２ｃと、演算記号キー２ｄ等とを備えている。
【００１８】
数字キー群２ａはユーザから数字の入力操作を受けるためのキーである。また方向キー２ｂは、ユーザからカーソルの移動操作や、機能選択操作を受ける場合等に押下されるキーであり、本実施形態においては、上下左右の方向に指示入力可能に構成されている。ＥＸＥキー２ｃは、ユーザから処理の実行や決定の指示操作を受けるためのキーである。演算記号キー２ｄは、各種演算記号の入力操作を受けるキーである。
【００１９】
ディスプレイ３は、各種キーの押下に応じたデータやグラフが表示される部分であって、ＬＣＤ（Liquid Crystal Display）等により構成されている。
【００２０】
図２は、関数電卓１の概略構成を示すブロック図である。この図に示すように、関数電卓１は入力部２０、表示部３０、ＣＰＵ（Central Processing Unit）４０、ＲＯＭ（Read Only Memory）５０、ＲＡＭ（Random Access Memory）６０及び十進演算器７０を備えており、各部はバス８０で相互にデータ通信可能に接続されている。
【００２１】
入力部２０は、キー群２を備えており、押下されたキーの信号をＣＰＵ４０に出力するようになっている。なお、この入力部２０は、必ずしもキー群２を備える必要はなく、例えばタッチパネルを備えることとしてもよい。
【００２２】
表示部３０は、ディスプレイ３を備えており、ＣＰＵ４０から入力される各種信号に基づいて各種画面を表示するものである。この表示部３０は、ユーザの操作により任意桁「ｎ」での演算が指定された場合には、図３に示すように、演算桁数「ｎ」（但し、ｎは正の整数、図中ではｎ＝８）を入力するための演算桁数入力ボックス３１と、数値計算式を入力するための計算式入力ボックス３４と、計算結果を表示するための計算結果表示ボックス３５と、表示される計算結果が近似値であるか真値であるか、つまり計算結果における誤差の有無を表示するための誤差存否表示領域３６等とを表示するようになっている。
【００２３】
ここで、本実施の形態においては、演算桁数「ｎ」の最大値は１０となっており、計算結果表示ボックス３５には計算結果として、桁数「ｎ」以下の有効数字の数値が表示されるようになっている。
【００２４】
また、本実施の形態における誤差存否表示領域３６は、計算結果が真値である場合には「有限数値（真値）」の部分を反転表示し、計算結果が近似値である場合には「非有限数値（近似値）」の部分を反転表示するようになっている。
【００２５】
ＣＰＵ４０は、図２に示すように、関数電卓１の各部を統括的に制御するものであり、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行うようになっている。具体的には、ＣＰＵ４０は、入力部２０から入力される操作信号に応じてＲＯＭ５０に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、ＣＰＵ４０は、処理結果を表示するための表示制御信号を表示部３０に適宜出力して、対応した表示情報を表示させる。
【００２６】
ＲＯＭ５０は、電源がＯＮ状態にされた際に関数電卓１を初期状態に設定するためのプログラムやデータの他、本発明に係る計算プログラム５０２を格納している。
【００２７】
この計算プログラム５０２は、後述の計算処理（図５等参照）をＣＰＵ４０に実行させるものである。
【００２８】
ＲＡＭ６０は、ＣＰＵ４０の作業領域として各種データを一時的に記憶するための記憶領域であり、計算式格納領域６１、演算桁数格納領域６２、ｎ桁計算結果格納領域６３及び誤差フラグ記憶領域６６を備えている。
【００２９】
ここで、計算式格納領域６１は、入力部２０等を介してユーザから入力された数値計算式を格納するための領域である。また、演算桁数格納領域６２は、入力部２０等を介してユーザから入力された演算桁数「ｎ」の値を格納するための領域である。
【００３０】
また、ｎ桁計算結果格納領域６３は、十進演算器７０により演算桁数「ｎ」で計算された数値計算式全体の計算結果や、数値計算式中の各計算部分の計算結果を格納するための領域である。
【００３１】
また、誤差フラグ記憶領域６６は、表示部３０に表示される計算結果中の誤差の有無を示す１ビットの情報（以下、誤差フラグとする）を記憶するための領域であり、計算結果が誤差を有しない真値である場合には誤差フラグとして「０」を、誤差を有する近似値である場合には誤差フラグとして「１」を記憶するようになっている。
【００３２】
十進演算器７０は、機械語プログラムの機械語命令に従った十進演算を実行する演算装置であり、指定された任意の桁数で演算を行うようになっている。この十進演算器７０は、数値計算式中で演算対象となる演算数，被演算数の計算数値ごとに当該計算数値中の各数字（以下、置数とする）を記憶する数値レジスタ７１を有している。
【００３３】
ここで、十進演算器７０が「ｎ」桁の演算を行う場合には、数値レジスタ７１には演算対象の計算数値のうち、「ｎ」桁の仮数部と、最大で２桁の指数部とによって表現可能な部分のみが格納されるようになっている。
【００３４】
具体的には、図４（ａ）に示すように、演算桁数ｎ＝１０の条件で「−１２３．４５６７」という計算数値が演算対象として入力される場合には、当該計算数値は７桁の仮数部「−１．２３４５６７」と２桁の指数部「０２」とで表現されるため、計算数値の全桁が格納される。一方、図４（ｂ）に示すように、演算桁数ｎ＝１０の条件で「−１．２３４５６７８９０１２」という演算結果の数値が演算対象として入力される場合には、当該計算数値は１２桁の仮数部「−１．２３４５６７８９０」と２桁の指数部「０２」とで表現されるため、仮数部の下位桁部分「１２」が切捨てられた状態で格納される。以下、図４（ａ）に示すように、仮数部の桁数、即ち有効桁数が演算桁数「ｎ」以下の数値を有限数値とし、図４（ｂ）に示すように、仮数部の桁数が演算桁数「ｎ」よりも大きい数値を非有限数値とする。但し、本実施の形態及び後述の第２実施形態においては、「π」や「ｅ」など、値の決まっている文字定数は文字として仮数部に含まれるため、このような文字定数を含む数値（例えば４π）については、当該文字定数を含めて仮数部の桁数が演算桁数「ｎ」以下である限りにおいて、有限数値とする。
【００３５】
また、本実施の形態において、被演算数とは、例えば数式「ｙ＋ｘ」や数式「ｙx」における「ｙ」など、演算対象となる計算数値が複数ある場合での演算される側の計算数値を言う。また、演算数とは、例えば、数式「√ｘ」における「ｘ」など、演算対象となる計算数値が１つしかない場合での当該計算数値や、数式「ｙ＋ｘ」における「ｘ」など、演算対象となる計算数値が複数ある場合での、被演算数ではない側の計算数値を言う。
【００３６】
なお、上記のような十進演算器７０としては、例えば上記特許文献１に記載のものなど、従来より公知のものを用いることができる。
【００３７】
続いて、関数電卓１の動作について説明する。
図５は、ＣＰＵ４０により計算プログラム５０２が読み出されて実行されることにより関数電卓１において実行される計算処理中の置数処理を示すフローチャートである。
【００３８】
本実施の形態における計算処理においては、まずユーザにより数値計算式と演算桁数「ｎ」とが入力部２０を介して入力されると、当該数値計算式における計算順序に従って、各計算部分を処理対象として置数処理が行われる。
【００３９】
この置数処理において、まずＣＰＵ４０は、図５に示すように、処理対象の計算部分における演算対象の各計算数値中の各置数を数値レジスタ７１に記憶させ（ステップＳ１）、計算数値中の全置数が演算桁数「ｎ」以内でセットできたか否かを判定する（ステップＳ２）。
【００４０】
このステップＳ２において全置数がセットできたと判定した場合（ステップＳ２；Ｙｅｓ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「０」に設定し、置数処理を終了する。一方、ステップＳ２において全置数がセットできないと判定した場合（ステップＳ２；Ｎｏ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し、置数処理を終了する。つまり、演算対象の計算数値の仮数部の桁数が演算桁数「ｎ」より大きい場合には、当該計算数値における下位桁部分が切捨てられて演算に用いられるため、計算結果に誤差が生じるものとして誤差フラグが「１」に設定される。なお、この図５以降の図においては、誤差フラグを「flag」と図示している。
【００４１】
そして、置数処理が終了したら、ＣＰＵ４０は、十進演算器７０により数値レジスタ７１内の演算数，被演算数を演算対象として「ｎ」桁で数値計算を行い、計算結果をｎ桁計算結果格納領域６３に格納させた後、当該計算結果を演算桁数「ｎ」で計算結果表示ボックス３５に表示させるとともに、誤差フラグ記憶領域６６内の情報に基づいて当該計算結果が真値であるか近似値であるかを誤差存否表示領域３６に表示させ、計算処理を終了する。
【００４２】
以上により、例えば上述の図４（ａ）に示すように、演算桁数ｎ＝１０の条件で「−１２３．４５６７」という数式が入力された場合には、図６（ａ）に示すように、演算結果「−１２３．４５６７０００」が計算結果表示ボックス３５に表示されるとともに、演算結果が有限数値（真値）である旨が誤差存否表示領域３６に表示される。
【００４３】
また、例えば上述の図４（ｂ）に示すように、演算桁数ｎ＝１０の条件で「−１．２３４５６７８９０１２」という数式が入力された場合には、図６（ｂ）に示すように、演算結果「−１．２３４５６７８９０」が計算結果表示ボックス３５に表示されるとともに、演算結果が非有限数値（近似値）である旨が誤差存否表示領域３６に表示される。
【００４４】
以上のように、本実施の形態における関数電卓１によれば、図５〜図６に示したように、数値計算式中の各計算数値の仮数部の桁数が演算桁数「ｎ」以下であるか否かに基づいて各計算数値中の誤差の有無が判別された後、何れかの計算数値が誤差有りと判別された場合に計算結果が誤差有りであると判別されて計算結果及び判別結果が表示されるので、桁数の多い高精度の計算を行うことなく、計算結果における誤差の有無を判断することができる。従って、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することができる。
【００４５】
また、計算結果に誤差があることが分かった場合に、演算桁数「ｎ」を増やして改めて計算を行うことにより、精度の高い計算結果を得ることができる。
【００４６】
＜第２実施形態＞
続いて、本発明に係る計算装置の第２実施形態について説明する。なお、上記第１実施の形態との間で互いに対応する部分が同様に構成されている場合には、同一の符号を付して、その説明を省略する。
【００４７】
本実施の形態における関数電卓１Ａは、図７に示すように、ＲＯＭ５０Ａ及びＲＡＭ６０Ａを有している。
ＲＯＭ５０Ａは、特定数値記憶テーブル５０１と、本発明に係る計算プログラム５０２Ａとを格納している。
【００４８】
特定数値記憶テーブル５０１は、例えば図８に一例を示すように、変数「ｘ」を用いて表される所定の一価関数と、当該一価関数の解答が有限数値になるために変数「ｘ」が満たすべき条件とを対応付けて記憶している。なお、以下の説明においては、一価関数の解答が有限数値になるために変数「ｘ」が取り得る数値を当該一価関数についての「特定数値」とする。例えば、一価関数「ln（ｘ）」はｘ＝１のときに計算結果が有限数値「０」となるため、この値「１」は当該一価関数についての特定数値である。同様に、例えば、一価関数「tan-1（ｘ）」はｘ＝１のときに計算結果が有限数値「π／４」となるため、この値「１」は当該一価関数についての特定数値である。なお、図８では、一価関数が三角関数である場合の特定数値として、−π≦ｘ≦πの範囲内のもののみを図示している。
【００４９】
また、計算プログラム５０２は、後述の計算処理（図９〜図１２等参照）をＣＰＵ４０に実行させるものである。
【００５０】
ＲＡＭ６０Ａは、ｎ＋ｍ桁計算結果格納領域６４及び最終計算結果格納領域６５を備えている。
ｎ＋ｍ桁計算結果格納領域６４は、十進演算器７０により演算桁数「ｎ＋ｍ」（但し、ｍはｍ＜ｎを満たす正の整数）で計算された数値計算式全体の計算結果や、数値計算式中の各計算部分の計算結果を格納するための領域である。また、最終計算結果格納領域６５は、数値計算式全体の最終的な計算結果として表示部３０に表示される「ｎ」桁以下の数値を格納するための領域である。なお、本実施の形態における最終計算結果格納領域６５には、ｎ桁計算結果格納領域６３と同じ数値が格納されることとして説明するが、ｎ桁計算結果格納領域６３内の数値をｎ＋ｍ桁計算結果格納領域６４内の数値で補正して得られる数値が格納されることとしても良い。このような補正の手法としては、従来より公知の手法を用いることができる。
【００５１】
続いて、関数電卓１Ａの動作について説明する。
図９〜図１２は、ＣＰＵ４０により計算プログラム５０２Ａが読み出されて実行されることにより関数電卓１において実行される計算処理中の四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理の流れを示すフローチャートである。
【００５２】
本実施の形態における計算処理においては、まずユーザにより数値計算式と演算桁数「ｎ」とが入力部２０を介して入力されると、当該数値計算式における計算順序に従って、各計算部分を処理対象として図９〜図１２に示す四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理の何れかが行われる。
以下、これらの処理について順に説明する。
【００５３】
（１）四則演算処理
処理対象の計算部分が四則演算部分である場合には、図９に示すように、まずＣＰＵ４０は、上述の置数処理を行った後（ステップＳ１０）、当該四則演算部分における被演算数が非有限数値であるか否かを判定し（ステップＳ１１）、非有限数値であると判定した場合（ステップＳ１１；Ｙｅｓ）には、十進演算器７０によって「ｎ」桁で四則演算を行って演算結果をｎ桁計算結果格納領域６３に格納させた後（ステップＳ１２）、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ１３）、四則演算処理を終了する。
【００５４】
また、ステップＳ１１において被演算数が非有限数値ではないと判定した場合（ステップＳ１１；Ｎｏ）には、ＣＰＵ４０は、四則演算部分における演算数が非有限数値であるか否かを判定し（ステップＳ１４）、非有限数値であると判定した場合（ステップＳ１４；Ｙｅｓ）には、上記ステップＳ１２の処理に移行する。
【００５５】
また、ステップＳ１４において演算数が非有限数値ではないと判定した場合（ステップＳ１４；Ｎｏ）には、ＣＰＵ４０は、十進演算器７０によって「ｎ」桁及び「ｎ＋ｍ」桁で四則演算を行って演算結果をｎ桁計算結果格納領域６３及びｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ１５）、演算結果に情報落ちがあるか否かを判定する（ステップＳ１６）。
【００５６】
ここで、情報落ちとは、表示部３０に表示される計算結果が表示桁数（演算桁数）「ｎ」の大きさによって制限を受ける結果、下位桁側の情報が切り捨てられることを言い、計算結果に桁落ちが生じる場合のほか、図１３に示すように、「ｎ」桁での計算結果の桁数が演算桁数「ｎ」よりも多い場合、つまり計算結果が非有限数値である場合に生じる。なお、図１３は、演算桁数が「１０」の場合を図示している。また、桁落ちの有無は、例えば上記特許文献１に記載のように、「ｎ」桁での計算結果と「ｎ＋ｍ」桁（但し、ｍはｍ＜ｎを満たす正の整数）での計算結果とを比較することによって判定することができる。
【００５７】
そして、ステップＳ１６において情報落ちがあると判定した場合（ステップＳ１６；Ｙｅｓ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ１７）、四則演算処理を終了する。また、ステップＳ１６において情報落ちがないと判定した場合（ステップＳ１６；Ｎｏ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「０」に設定し（ステップＳ１８）、四則演算処理を終了する。
【００５８】
以上により、図１４に示すように、演算数，被演算数の少なくとも一方が非有限数値である場合には誤差フラグが「１」に設定され、演算数，被演算数の両方が有限数値である場合には、情報落ちの有無に応じて誤差フラグが「１」または「０」に設定される。
【００５９】
具体的には、上述の図１３（ａ）や図１５（ａ）に示すように、演算桁数が「１０」で計算部分が「１＋１．２３Ｅ−１１」である場合には、計算結果「１．００００００００００１２３」のうち、下４桁の「０１２３」が情報落ちとなるため、誤差フラグは「１」に設定される。一方、図１６（ａ）に示すように、演算桁数が「１０」で計算部分が「１＋１．２３Ｅ−７」である場合には、計算結果「１．００００００１２３」に情報落ちがないため、誤差フラグは「０」に設定される。
【００６０】
また、上述の図１３（ｂ）や図１７（ａ）に示すように、演算桁数が「１０」で計算部分が「４．５６７８９×３．４５６７」である場合には、計算結果「１．５７８９８２５３６３」のうち、下１桁の「３」が情報落ちとなるため、誤差フラグは「１」に設定される。一方、図１８（ａ）に示すように、演算桁数が「１０」で計算部分が「４．５６７８９×３．４５」である場合には、計算結果「１．５７５９２２０５」に情報落ちがないため、誤差フラグは「０」に設定される。
【００６１】
また、上述の図１３（ｃ）や図１９（ａ）に示すように、演算桁数が「１０」で計算部分が「２０÷３」である場合には、計算結果「６．６６６６６６６６６６６６，…」のうち、上位１０桁よりも下位桁の「６６６…」が情報落ちとなるため、誤差フラグは「１」に設定される。一方、図２０（ａ）に示すように、演算桁数が「１０」で計算部分が「１２３４５６÷１２」である場合には、計算結果「１．０２８８」に情報落ちがないため、誤差フラグは「０」に設定される。
【００６２】
（２）開平計算処理
また、処理対象の計算部分が開平計算部分である場合には、図１０に示すように、まずＣＰＵ４０は、上述の置数処理を行った後（ステップＳ２０）、当該開平計算部分における演算数が非有限数値であるか否かを判定し（ステップＳ２１）、非有限数値であると判定した場合（ステップＳ２１；Ｙｅｓ）には、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁で開平計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ２２）、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ２３）、開平計算処理を終了する。
【００６３】
ここで、ステップＳ２２の開平計算としては、例えば開平法による計算を行うことができる。
【００６４】
具体的には、まず、根号内の数値をＸ、√Ｘの値をＹとすると、Ｘ，ＹはＸ＝Ｙ2の関係にあるため、Ｙを下記式（Ａ）のように置換すると、Ｘは下記式（Ｂ）のように展開できる。
【００６５】
Y=Σak10-k
=a0100+ a110-1+ a210-2+…                                              （Ａ）
（但し、各akは０〜９の整数）
【００６６】
X=(a0100+ a110-1+ a210-2+…)2
=a0100・a0100+ a110-1(2a0100+ a110-1)+ a210-2(2a0100+ a110-1+ a210-2)+…  （Ｂ）
【００６７】
次に、これら式（Ａ），（Ｂ）の形態から下記式（１）、（２）のような漸化式を考え、初期値Ｘ0，Ｙ0＝０とすると、下記式（３）よりＹiを求めることができる。
【００６８】
X1=X-( a0100・a0100)、Y1= a0100                            （１）
X2=X-(a110-1(2a0100+ a110-1))、Y2=(a0100+ a1101)            （２）
Yi=((a0100+ a1101+…ai10-i)                                （３）
【００６９】
そして、「ｉ」の値を所定の範囲内で大きくしてＹiを求めていき、或るＹiを求めた際のＸiの値（以下、擬似剰余とする）が０となれば、ＹはＹ＝Ｙiで表され、その値は有理数となる。
【００７０】
また、ステップＳ２１において演算数が非有限数値ではないと判定した場合（ステップＳ２１；Ｎｏ）には、ＣＰＵ４０は、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁で開平計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ２４）、当該開平計算で得られる擬似剰余Ｘiの値が０になったか否かを判定する（ステップＳ２５）。
【００７１】
そして、ステップＳ２５において擬似剰余Ｘiの値が０になったと判定した場合（ステップＳ２５；Ｙｅｓ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「０」に設定し（ステップＳ２６）、四則演算処理を終了する。また、ステップＳ２５において擬似剰余Ｘiの値が０にならなかったと判定した場合（ステップＳ２５；Ｎｏ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ２７）、四則演算処理を終了する。
【００７２】
以上により、例えば図２１（ａ）に示すように、演算桁数が「５」で計算部分が「√４」である場合には、擬似剰余が「０」であるため、誤差フラグは「０」に設定される。一方、図２２（ａ）に示すように、演算桁数が「５」で計算部分が「√２」である場合には、擬似剰余が「０．００００１」であるため、誤差フラグは「１」に設定される。
【００７３】
（３）一価関数計算処理
また、処理対象の計算部分が所定の一価関数、例えば上述の図８の左側に示す「log（ｘ）」（但し、ｘは任意の数値）等に相当する場合には、図１１に示すように、まずＣＰＵ４０は、上述の置数処理を行った後（ステップＳ３０）、当該一価関数部分における演算数が非有限数値であるか否かを判定し（ステップＳ３１）、非有限数値であると判定した場合（ステップＳ３１；Ｙｅｓ）には、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁で一価関数部分の計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ３２）、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ３３）、一価関数計算処理を終了する。
【００７４】
また、ステップＳ３１において演算数が非有限数値ではないと判定した場合（ステップＳ３１；Ｎｏ）には、ＣＰＵ４０は、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁で一価関数部分の計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ３４）、演算数が上述の特定数値であるか否かを判定する（ステップＳ３５）。
【００７５】
そして、ステップＳ３５において演算数が特定数値であると判定した場合（ステップＳ３５；Ｙｅｓ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「０」に設定し（ステップＳ３６）、一価関数計算処理を終了する。また、ステップＳ３５において演算数が特定数値ではないと判定した場合（ステップＳ３５；Ｎｏ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ３７）、一価関数計算処理を終了する。
【００７６】
（４）べき乗計算処理
また、処理対象の計算部分がべき乗計算部分である場合には、図１２に示すように、まずＣＰＵ４０は、上述の置数処理を行った後（ステップＳ４０）、当該べき乗計算部分における被演算数が非有限数値であるか否かを判定し（ステップＳ４１）、非有限数値であると判定した場合（ステップＳ４１；Ｙｅｓ）には、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁でべき乗部分の計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ４２）、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ４３）、べき乗計算処理を終了する。
【００７７】
また、ステップＳ４１において被演算数が非有限数値ではないと判定した場合（ステップＳ４１；Ｎｏ）には、ＣＰＵ４０は、べき乗計算部分における演算数が整数であるか否かを判定し（ステップＳ４４）、整数ではないと判定した場合（ステップＳ４４；Ｎｏ）には、上記ステップＳ４２の処理に移行する。
【００７８】
また、ステップＳ４４において演算数が整数であると判定した場合（ステップＳ４４；Ｙｅｓ）には、ＣＰＵ４０は、十進演算器７０によって「ｎ」桁や「ｎ＋ｍ」桁でべき乗部分の計算を行って計算結果をｎ桁計算結果格納領域６３やｎ＋ｍ桁計算結果格納領域６４に格納させた後（ステップＳ４５）、演算結果に情報落ちがあるか否かを判定する（ステップＳ４６）。
【００７９】
そして、ステップＳ４６において情報落ちがあると判定した場合（ステップＳ４６；Ｙｅｓ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「１」に設定し（ステップＳ４７）、べき乗計算処理を終了する。また、ステップＳ４６において情報落ちがないと判定した場合（ステップＳ４６；Ｎｏ）には、ＣＰＵ４０は、誤差フラグ記憶領域６６の誤差フラグを「０」に設定し（ステップＳ４８）、べき乗計算処理を終了する。
【００８０】
そして、上記四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理によって数値計算式全体についての計算結果が得られたら、ＣＰＵ４０は、その計算結果を最終計算結果格納領域６５に格納させた後、演算桁数「ｎ」で計算結果表示ボックス３５に表示させるとともに、誤差フラグ記憶領域６６内の情報に基づいて当該計算結果が真値であるか近似値であるかを誤差存否表示領域３６に表示させ、計算処理を終了する。
【００８１】
これにより、例えば上述の図１３（ａ）や図１５（ａ）に示すように、演算桁数が「１０」で「１＋１．２３Ｅ−１１」という数式が入力された場合には、図１５（ｂ）に示すように、演算結果「１．０００００００００」が計算結果表示ボックス３５に表示されるとともに、演算結果が非有限数値（近似値）である旨が誤差存否表示領域３６に表示される。
【００８２】
また、上述の図１６（ａ）に示すように、演算桁数が「１０」で「１＋１．２３Ｅ−７」という数式が入力された場合には、図１６（ｂ）に示すように、演算結果「１．００００００１２３」が計算結果表示ボックス３５に表示されるとともに、演算結果が有限数値（真値）である旨が誤差存否表示領域３６に表示される。
【００８３】
また、上述の図１３（ｂ）や図１７（ａ）に示すように、演算桁数が「１０」で「４．５６７８９×３．４５６７」という数式が入力された場合には、図１７（ｂ）に示すように、演算結果「１．５７８９８２５３６」が計算結果表示ボックス３５に表示されるとともに、演算結果が非有限数値（近似値）である旨が誤差存否表示領域３６に表示される。
【００８４】
また、上述の図１８（ａ）に示すように、演算桁数が「１０」で「４．５６７８９×３．４５」という数式が入力された場合には、図１８（ｂ）に示すように、演算結果「１．５７５９２２０５」が計算結果表示ボックス３５に表示されるとともに、演算結果が有限数値（真値）である旨が誤差存否表示領域３６に表示される。
【００８５】
また、上述の図１３（ｃ）や図１９（ａ）に示すように、演算桁数が「１０」で「２０÷３」という数式が入力された場合には、図１９（ｂ）に示すように、演算結果「６．６６６６６６６６６」が計算結果表示ボックス３５に表示されるとともに、演算結果が非有限数値（近似値）である旨が誤差存否表示領域３６に表示される。
【００８６】
また、上述の図２０（ａ）に示すように、演算桁数が「１０」で「１２３４５６÷１２」という数式が入力された場合には、図２０（ｂ）に示すように、演算結果「１．０２８８」が計算結果表示ボックス３５に表示されるとともに、演算結果が有限数値（真値）である旨が誤差存否表示領域３６に表示される。
【００８７】
また、上述の図２１（ａ）に示すように、演算桁数が「５」で「√４」という数式が入力された場合には、図２１（ｂ）に示すように、演算結果「２」が計算結果表示ボックス３５に表示されるとともに、演算結果が有限数値（真値）である旨が誤差存否表示領域３６に表示される。
【００８８】
また、上述の図２２（ａ）に示すように、演算桁数が「５」で「√２」という数式が入力された場合には、図２２（ｂ）に示すように、演算結果「１．４１４２」が計算結果表示ボックス３５に表示されるとともに、演算結果が非有限数値（近似値）である旨が誤差存否表示領域３６に表示される。
【００８９】
以上のように、本実施の形態における関数電卓１Ａによれば、上記第１実施形態における関数電卓１と同様の効果を得ることができるのは勿論のこと、図９や図１２，図１５〜図２０等に示したように、桁数「ｎ」での計算結果に情報落ちが生じたか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
【００９０】
また、図１０や図２１〜図２２に示したように、数値計算式中の開平計算部分を開平法により計算する場合に得られる擬似剰余Ｘiが０になるか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
【００９１】
また、図１１に示したように、数値計算式中の所定の一価関数における演算数が当該所定の一価関数についての特定数値であるか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
【００９２】
なお、本発明は上記実施形態に限定されることなく、本発明の主旨を逸脱しない範囲において種々の改良及び設計の変更をおこなっても良い。
【００９３】
例えば、本発明に係る計算装置を関数電卓として説明したが、例えばパソコン、ＰＤＡ（Personal Digital Assistance）等、他の電子機器としても良い。
【００９４】
また、十進演算器７０は電子機器（上記実施形態では関数電卓）に内蔵されているものとして説明したが、着脱可能に装着されるものとしてもよい。
【図面の簡単な説明】
【００９５】
【図１】本発明を適用した関数電卓の概観図である。
【図２】本発明を適用した関数電卓の内部構成を示すブロック図である。
【図３】ディスプレイの表示画面の１例を示す図である。
【図４】有限数値と非有限数値とを説明するための図である。
【図５】計算処理における置数処理を示す図である。
【図６】計算処理によってディスプレイに表示される内容を示す図である。
【図７】本発明を適用した関数電卓の内部構成を示すブロック図である。
【図８】特定数値記憶テーブルを示す図である。
【図９】計算処理における四則演算処理を示す図である。
【図１０】計算処理における開平計算処理を示す図である。
【図１１】計算処理における一価関数計算処理を示す図である。
【図１２】計算処理におけるべき乗計算処理を示す図である。
【図１３】計算結果の情報落ちを説明するための図である。
【図１４】四則演算処理の概要を説明するための図である。
【図１５】（ａ）は四則演算処理において加算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図１６】（ａ）は四則演算処理において加算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図１７】（ａ）は四則演算処理において乗算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図１８】（ａ）は四則演算処理において乗算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図１９】（ａ）は四則演算処理において除算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図２０】（ａ）は四則演算処理において除算が行われる場合を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図２１】（ａ）は開平計算処理を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【図２２】（ａ）は開平計算処理を説明するための図であり、（ｂ）はディスプレイに表示される内容を示す図である。
【符号の説明】
【００９６】
１，１Ａ          関数電卓（計算装置）
２０              入力部（入力手段，演算桁数設定手段）
３０              表示部（表示手段）
７０              十進演算器（計算手段）
４０              ＣＰＵ（計算数値誤差判別手段、結果数値誤差判別手段、
桁落ち判別手段、一価関数判別手段、数式展開判別手段）
６２              演算桁数格納領域（演算桁数記憶手段）
５０２，５０２Ａ  計算プログラム
【図１】
2008186224.tif 000003
【図２】
2008186224.tif 000004
【図３】
2008186224.tif 000005
【図４】
2008186224.tif 000006
【図５】
2008186224.tif 000007
【図６】
2008186224.tif 000008
【図７】
2008186224.tif 000009
【図８】
2008186224.tif 000010
【図９】
2008186224.tif 000011
【図１０】
2008186224.tif 000012
【図１１】
2008186224.tif 000013
【図１２】
2008186224.tif 000014
【図１３】
2008186224.tif 000015
【図１４】
2008186224.tif 000016
【図１５】
2008186224.tif 000017
【図１６】
2008186224.tif 000018
【図１７】
2008186224.tif 000019
【図１８】
2008186224.tif 000020
【図１９】
2008186224.tif 000021
【図２０】
2008186224.tif 000022
【図２１】
2008186224.tif 000023
【図２２】
2008186224.tif 000024