JP4893340B2 - 計算装置及び計算プログラム - Google Patents

計算装置及び計算プログラム Download PDF

Info

Publication number
JP4893340B2
JP4893340B2 JP2007018881A JP2007018881A JP4893340B2 JP 4893340 B2 JP4893340 B2 JP 4893340B2 JP 2007018881 A JP2007018881 A JP 2007018881A JP 2007018881 A JP2007018881 A JP 2007018881A JP 4893340 B2 JP4893340 B2 JP 4893340B2
Authority
JP
Japan
Prior art keywords
calculation
error
numerical
digits
result
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.)
Active
Application number
JP2007018881A
Other languages
English (en)
Other versions
JP2008186224A (ja
Inventor
久志 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2007018881A priority Critical patent/JP4893340B2/ja
Publication of JP2008186224A publication Critical patent/JP2008186224A/ja
Application granted granted Critical
Publication of JP4893340B2 publication Critical patent/JP4893340B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Calculators And Similar Devices (AREA)

Description

本発明は、計算装置及び計算プログラムに関する。
従来より、浮動小数点演算を行うことのできる計算装置がある。このような計算装置においては、演算規格としてANSI/IEEE754−1958標準(「IEEE754」)等が用いられており、高い精度での浮動小数点演算が可能となっている。
ところで、上記のような規格を用いて浮動小数点演算を行うと、値の近い数値間での減算等においては、演算桁数の制約により仮数部の桁数(有効桁数)が極端に少なくなるという問題、いわゆる「桁落ち」が発生する。
この「桁落ち」を説明するために、減算「1.001233−1」を演算桁数「8」で行わせる場合を考える。先ず「1.001233」は、演算桁数「8」では「1.0036945」と求められる。よって、この値を用いて上記の減算を行うと、演算結果は「1.0036945−1=0.0036945」となり、仮数部の桁数が8桁から5桁に減少する。つまり、この例では3桁の桁落ちが発生したことになる。
近年、このような桁落ちによる精度低下を防止する技術として、ユーザの所望する桁数「n」と、これよりも所定数だけ多い桁数、例えば「n+4」との両方で計算を行い、「n+4」桁での計算結果に基づいて「n」桁の計算結果を補正する技術が提案されている(例えば、特許文献1参照)。
特開2006−65789号公報
しかしながら、計算装置によって計算を行うユーザにとっては、必ずしも桁数の多い高精度の計算結果が必要ではなく、桁落ち等による計算誤差の有無さえ分かれば、桁数の少ない計算結果でも十分である場合がある。この点、上記特許文献1に記載の技術では、計算誤差の有無を判別するのに「n」桁,「n+4」桁の各桁数で実際に計算を行う必要があるため、出力される計算結果の桁数に対して装置が大型化したり、処理が煩雑化したりしている。
本発明の課題は、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することのできる計算装置及び計算プログラムを提供することである。
以上の課題を解決するために、請求項1記載の発明は、計算装置であって、
演算桁数を記憶する演算桁数記憶手段と、
ユーザ操作に基づいて数値計算式を入力する入力手段と、
前記入力手段により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別手段と、
前記数値計算式を前記演算桁数で計算する計算手段と、
前記計算数値誤差判別手段により何れかの計算数値が誤差有りと判別された場合に、前記計算手段による計算結果が誤差有りであると判別する結果数値誤差判別手段と、
前記計算結果と、前記結果誤差判別手段による判別結果とを表示する表示手段と、
を備えることを特徴とする。
請求項2記載の発明は、請求項1記載の計算装置において、
前記入力手段は、
ユーザ操作に基づいて前記演算桁数記憶手段の前記演算桁数を任意に設定する演算桁数設定手段を有することを特徴とする。
請求項3記載の発明は、請求項1または2記載の計算装置において、
結果数値誤差判別手段は、
前記計算手段による前記演算桁数での計算で桁落ちが生じた場合に、前記計算結果が誤差有りであると判別する桁落ち判別手段を有することを特徴とする。
請求項記載の発明は、計算プログラムであって、
コンピュータに、
演算桁数を記憶する演算桁数記憶機能と、
ユーザ操作に基づいて数値計算式を入力する入力機能と、
前記入力機能により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別機能と、
前記数値計算式を前記演算桁数で計算する計算機能と、
前記計算数値誤差判別機能により何れかの計算数値が誤差有りと判別された場合に、前 記計算機能による計算結果が誤差有りであると判別する結果数値誤差判別機能と、
前記計算結果と、前記結果誤差判別機能による判別結果とを表示する表示機能と、
を実現させることを特徴とする。
本発明によれば、数値計算式中の各計算数値の仮数部の桁数が演算桁数以下であるか否かに基づいて当該各計算数値中の誤差の有無が判別され、何れかの計算数値が誤差有りと判別された場合に計算結果が誤差有りであると判別されて計算結果及び判別結果が表示されるので、桁数の多い高精度の計算を行うことなく、計算結果における誤差の有無を判断することができる。従って、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することができる。
以下、図面を参照して、本発明に係る計算装置を関数電卓に適用した場合の実施形態について詳細に説明する。
<第1実施形態>
図1は、関数電卓1の概観図である。
この図に示すように、関数電卓1は、各種操作キーを含むキー群2及びディスプレイ3を備えている。
キー群2は、ユーザによって操作される複数のキーを備えており、本実施の形態においては、数字キー群2aと、方向キー2bと、EXEキー2cと、演算記号キー2d等とを備えている。
数字キー群2aはユーザから数字の入力操作を受けるためのキーである。また方向キー2bは、ユーザからカーソルの移動操作や、機能選択操作を受ける場合等に押下されるキーであり、本実施形態においては、上下左右の方向に指示入力可能に構成されている。EXEキー2cは、ユーザから処理の実行や決定の指示操作を受けるためのキーである。演算記号キー2dは、各種演算記号の入力操作を受けるキーである。
ディスプレイ3は、各種キーの押下に応じたデータやグラフが表示される部分であって、LCD(Liquid Crystal Display)等により構成されている。
図2は、関数電卓1の概略構成を示すブロック図である。この図に示すように、関数電卓1は入力部20、表示部30、CPU(Central Processing Unit)40、ROM(Read Only Memory)50、RAM(Random Access Memory)60及び十進演算器70を備えており、各部はバス80で相互にデータ通信可能に接続されている。
入力部20は、キー群2を備えており、押下されたキーの信号をCPU40に出力するようになっている。なお、この入力部20は、必ずしもキー群2を備える必要はなく、例えばタッチパネルを備えることとしてもよい。
表示部30は、ディスプレイ3を備えており、CPU40から入力される各種信号に基づいて各種画面を表示するものである。この表示部30は、ユーザの操作により任意桁「n」での演算が指定された場合には、図3に示すように、演算桁数「n」(但し、nは正の整数、図中ではn=8)を入力するための演算桁数入力ボックス31と、数値計算式を入力するための計算式入力ボックス34と、計算結果を表示するための計算結果表示ボックス35と、表示される計算結果が近似値であるか真値であるか、つまり計算結果における誤差の有無を表示するための誤差存否表示領域36等とを表示するようになっている。
ここで、本実施の形態においては、演算桁数「n」の最大値は10となっており、計算結果表示ボックス35には計算結果として、桁数「n」以下の有効数字の数値が表示されるようになっている。
また、本実施の形態における誤差存否表示領域36は、計算結果が真値である場合には「有限数値(真値)」の部分を反転表示し、計算結果が近似値である場合には「非有限数値(近似値)」の部分を反転表示するようになっている。
CPU40は、図2に示すように、関数電卓1の各部を統括的に制御するものであり、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行うようになっている。具体的には、CPU40は、入力部20から入力される操作信号に応じてROM50に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、CPU40は、処理結果を表示するための表示制御信号を表示部30に適宜出力して、対応した表示情報を表示させる。
ROM50は、電源がON状態にされた際に関数電卓1を初期状態に設定するためのプログラムやデータの他、本発明に係る計算プログラム502を格納している。
この計算プログラム502は、後述の計算処理(図5等参照)をCPU40に実行させるものである。
RAM60は、CPU40の作業領域として各種データを一時的に記憶するための記憶領域であり、計算式格納領域61、演算桁数格納領域62、n桁計算結果格納領域63及び誤差フラグ記憶領域66を備えている。
ここで、計算式格納領域61は、入力部20等を介してユーザから入力された数値計算式を格納するための領域である。また、演算桁数格納領域62は、入力部20等を介してユーザから入力された演算桁数「n」の値を格納するための領域である。
また、n桁計算結果格納領域63は、十進演算器70により演算桁数「n」で計算された数値計算式全体の計算結果や、数値計算式中の各計算部分の計算結果を格納するための領域である。
また、誤差フラグ記憶領域66は、表示部30に表示される計算結果中の誤差の有無を示す1ビットの情報(以下、誤差フラグとする)を記憶するための領域であり、計算結果が誤差を有しない真値である場合には誤差フラグとして「0」を、誤差を有する近似値である場合には誤差フラグとして「1」を記憶するようになっている。
十進演算器70は、機械語プログラムの機械語命令に従った十進演算を実行する演算装置であり、指定された任意の桁数で演算を行うようになっている。この十進演算器70は、数値計算式中で演算対象となる演算数,被演算数の計算数値ごとに当該計算数値中の各数字(以下、置数とする)を記憶する数値レジスタ71を有している。
ここで、十進演算器70が「n」桁の演算を行う場合には、数値レジスタ71には演算対象の計算数値のうち、「n」桁の仮数部と、最大で2桁の指数部とによって表現可能な部分のみが格納されるようになっている。
具体的には、図4(a)に示すように、演算桁数n=10の条件で「−123.4567」という計算数値が演算対象として入力される場合には、当該計算数値は7桁の仮数部「−1.234567」と2桁の指数部「02」とで表現されるため、計算数値の全桁が格納される。一方、図4(b)に示すように、演算桁数n=10の条件で「−1.23456789012」という演算結果の数値が演算対象として入力される場合には、当該計算数値は12桁の仮数部「−1.234567890」と2桁の指数部「02」とで表現されるため、仮数部の下位桁部分「12」が切捨てられた状態で格納される。以下、図4(a)に示すように、仮数部の桁数、即ち有効桁数が演算桁数「n」以下の数値を有限数値とし、図4(b)に示すように、仮数部の桁数が演算桁数「n」よりも大きい数値を非有限数値とする。但し、本実施の形態及び後述の第2実施形態においては、「π」や「e」など、値の決まっている文字定数は文字として仮数部に含まれるため、このような文字定数を含む数値(例えば4π)については、当該文字定数を含めて仮数部の桁数が演算桁数「n」以下である限りにおいて、有限数値とする。
また、本実施の形態において、被演算数とは、例えば数式「y+x」や数式「yx」における「y」など、演算対象となる計算数値が複数ある場合での演算される側の計算数値を言う。また、演算数とは、例えば、数式「√x」における「x」など、演算対象となる計算数値が1つしかない場合での当該計算数値や、数式「y+x」における「x」など、演算対象となる計算数値が複数ある場合での、被演算数ではない側の計算数値を言う。
なお、上記のような十進演算器70としては、例えば上記特許文献1に記載のものなど、従来より公知のものを用いることができる。
続いて、関数電卓1の動作について説明する。
図5は、CPU40により計算プログラム502が読み出されて実行されることにより関数電卓1において実行される計算処理中の置数処理を示すフローチャートである。
本実施の形態における計算処理においては、まずユーザにより数値計算式と演算桁数「n」とが入力部20を介して入力されると、当該数値計算式における計算順序に従って、各計算部分を処理対象として置数処理が行われる。
この置数処理において、まずCPU40は、図5に示すように、処理対象の計算部分における演算対象の各計算数値中の各置数を数値レジスタ71に記憶させ(ステップS1)、計算数値中の全置数が演算桁数「n」以内でセットできたか否かを判定する(ステップS2)。
このステップS2において全置数がセットできたと判定した場合(ステップS2;Yes)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「0」に設定し、置数処理を終了する。一方、ステップS2において全置数がセットできないと判定した場合(ステップS2;No)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「1」に設定し、置数処理を終了する。つまり、演算対象の計算数値の仮数部の桁数が演算桁数「n」より大きい場合には、当該計算数値における下位桁部分が切捨てられて演算に用いられるため、計算結果に誤差が生じるものとして誤差フラグが「1」に設定される。なお、この図5以降の図においては、誤差フラグを「flag」と図示している。
そして、置数処理が終了したら、CPU40は、十進演算器70により数値レジスタ71内の演算数,被演算数を演算対象として「n」桁で数値計算を行い、計算結果をn桁計算結果格納領域63に格納させた後、当該計算結果を演算桁数「n」で計算結果表示ボックス35に表示させるとともに、誤差フラグ記憶領域66内の情報に基づいて当該計算結果が真値であるか近似値であるかを誤差存否表示領域36に表示させ、計算処理を終了する。
以上により、例えば上述の図4(a)に示すように、演算桁数n=10の条件で「−123.4567」という数式が入力された場合には、図6(a)に示すように、演算結果「−123.4567000」が計算結果表示ボックス35に表示されるとともに、演算結果が有限数値(真値)である旨が誤差存否表示領域36に表示される。
また、例えば上述の図4(b)に示すように、演算桁数n=10の条件で「−1.23456789012」という数式が入力された場合には、図6(b)に示すように、演算結果「−1.234567890」が計算結果表示ボックス35に表示されるとともに、演算結果が非有限数値(近似値)である旨が誤差存否表示領域36に表示される。
以上のように、本実施の形態における関数電卓1によれば、図5〜図6に示したように、数値計算式中の各計算数値の仮数部の桁数が演算桁数「n」以下であるか否かに基づいて各計算数値中の誤差の有無が判別された後、何れかの計算数値が誤差有りと判別された場合に計算結果が誤差有りであると判別されて計算結果及び判別結果が表示されるので、桁数の多い高精度の計算を行うことなく、計算結果における誤差の有無を判断することができる。従って、従来と比較して装置の大型化を防ぎつつ、計算誤差の有無を判断することができる。
また、計算結果に誤差があることが分かった場合に、演算桁数「n」を増やして改めて計算を行うことにより、精度の高い計算結果を得ることができる。
<第2実施形態>
続いて、本発明に係る計算装置の第2実施形態について説明する。なお、上記第1実施の形態との間で互いに対応する部分が同様に構成されている場合には、同一の符号を付して、その説明を省略する。
本実施の形態における関数電卓1Aは、図7に示すように、ROM50A及びRAM60Aを有している。
ROM50Aは、特定数値記憶テーブル501と、本発明に係る計算プログラム502Aとを格納している。
特定数値記憶テーブル501は、例えば図8に一例を示すように、変数「x」を用いて表される所定の一価関数と、当該一価関数の解答が有限数値になるために変数「x」が満たすべき条件とを対応付けて記憶している。なお、以下の説明においては、一価関数の解答が有限数値になるために変数「x」が取り得る数値を当該一価関数についての「特定数値」とする。例えば、一価関数「ln(x)」はx=1のときに計算結果が有限数値「0」となるため、この値「1」は当該一価関数についての特定数値である。同様に、例えば、一価関数「tan-1(x)」はx=1のときに計算結果が有限数値「π/4」となるため、この値「1」は当該一価関数についての特定数値である。なお、図8では、一価関数が三角関数である場合の特定数値として、−π≦x≦πの範囲内のもののみを図示している。
また、計算プログラム502は、後述の計算処理(図9〜図12等参照)をCPU40に実行させるものである。
RAM60Aは、n+m桁計算結果格納領域64及び最終計算結果格納領域65を備えている。
n+m桁計算結果格納領域64は、十進演算器70により演算桁数「n+m」(但し、mはm<nを満たす正の整数)で計算された数値計算式全体の計算結果や、数値計算式中の各計算部分の計算結果を格納するための領域である。また、最終計算結果格納領域65は、数値計算式全体の最終的な計算結果として表示部30に表示される「n」桁以下の数値を格納するための領域である。なお、本実施の形態における最終計算結果格納領域65には、n桁計算結果格納領域63と同じ数値が格納されることとして説明するが、n桁計算結果格納領域63内の数値をn+m桁計算結果格納領域64内の数値で補正して得られる数値が格納されることとしても良い。このような補正の手法としては、従来より公知の手法を用いることができる。
続いて、関数電卓1Aの動作について説明する。
図9〜図12は、CPU40により計算プログラム502Aが読み出されて実行されることにより関数電卓1において実行される計算処理中の四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理の流れを示すフローチャートである。
本実施の形態における計算処理においては、まずユーザにより数値計算式と演算桁数「n」とが入力部20を介して入力されると、当該数値計算式における計算順序に従って、各計算部分を処理対象として図9〜図12に示す四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理の何れかが行われる。
以下、これらの処理について順に説明する。
(1)四則演算処理
処理対象の計算部分が四則演算部分である場合には、図9に示すように、まずCPU40は、上述の置数処理を行った後(ステップS10)、当該四則演算部分における被演算数が非有限数値であるか否かを判定し(ステップS11)、非有限数値であると判定した場合(ステップS11;Yes)には、十進演算器70によって「n」桁で四則演算を行って演算結果をn桁計算結果格納領域63に格納させた後(ステップS12)、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS13)、四則演算処理を終了する。
また、ステップS11において被演算数が非有限数値ではないと判定した場合(ステップS11;No)には、CPU40は、四則演算部分における演算数が非有限数値であるか否かを判定し(ステップS14)、非有限数値であると判定した場合(ステップS14;Yes)には、上記ステップS12の処理に移行する。
また、ステップS14において演算数が非有限数値ではないと判定した場合(ステップS14;No)には、CPU40は、十進演算器70によって「n」桁及び「n+m」桁で四則演算を行って演算結果をn桁計算結果格納領域63及びn+m桁計算結果格納領域64に格納させた後(ステップS15)、演算結果に情報落ちがあるか否かを判定する(ステップS16)。
ここで、情報落ちとは、表示部30に表示される計算結果が表示桁数(演算桁数)「n」の大きさによって制限を受ける結果、下位桁側の情報が切り捨てられることを言い、計算結果に桁落ちが生じる場合のほか、図13に示すように、「n」桁での計算結果の桁数が演算桁数「n」よりも多い場合、つまり計算結果が非有限数値である場合に生じる。なお、図13は、演算桁数が「10」の場合を図示している。また、桁落ちの有無は、例えば上記特許文献1に記載のように、「n」桁での計算結果と「n+m」桁(但し、mはm<nを満たす正の整数)での計算結果とを比較することによって判定することができる。
そして、ステップS16において情報落ちがあると判定した場合(ステップS16;Yes)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS17)、四則演算処理を終了する。また、ステップS16において情報落ちがないと判定した場合(ステップS16;No)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「0」に設定し(ステップS18)、四則演算処理を終了する。
以上により、図14に示すように、演算数,被演算数の少なくとも一方が非有限数値である場合には誤差フラグが「1」に設定され、演算数,被演算数の両方が有限数値である場合には、情報落ちの有無に応じて誤差フラグが「1」または「0」に設定される。
具体的には、上述の図13(a)や図15(a)に示すように、演算桁数が「10」で計算部分が「1+1.23E−11」である場合には、計算結果「1.0000000000123」のうち、下4桁の「0123」が情報落ちとなるため、誤差フラグは「1」に設定される。一方、図16(a)に示すように、演算桁数が「10」で計算部分が「1+1.23E−7」である場合には、計算結果「1.000000123」に情報落ちがないため、誤差フラグは「0」に設定される。
また、上述の図13(b)や図17(a)に示すように、演算桁数が「10」で計算部分が「4.56789×3.4567」である場合には、計算結果「1.5789825363」のうち、下1桁の「3」が情報落ちとなるため、誤差フラグは「1」に設定される。一方、図18(a)に示すように、演算桁数が「10」で計算部分が「4.56789×3.45」である場合には、計算結果「1.57592205」に情報落ちがないため、誤差フラグは「0」に設定される。
また、上述の図13(c)や図19(a)に示すように、演算桁数が「10」で計算部分が「20÷3」である場合には、計算結果「6.666666666666,…」のうち、上位10桁よりも下位桁の「666…」が情報落ちとなるため、誤差フラグは「1」に設定される。一方、図20(a)に示すように、演算桁数が「10」で計算部分が「123456÷12」である場合には、計算結果「1.0288」に情報落ちがないため、誤差フラグは「0」に設定される。
(2)開平計算処理
また、処理対象の計算部分が開平計算部分である場合には、図10に示すように、まずCPU40は、上述の置数処理を行った後(ステップS20)、当該開平計算部分における演算数が非有限数値であるか否かを判定し(ステップS21)、非有限数値であると判定した場合(ステップS21;Yes)には、十進演算器70によって「n」桁や「n+m」桁で開平計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS22)、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS23)、開平計算処理を終了する。
ここで、ステップS22の開平計算としては、例えば開平法による計算を行うことができる。
具体的には、まず、根号内の数値をX、√Xの値をYとすると、X,YはX=Y2の関係にあるため、Yを下記式(A)のように置換すると、Xは下記式(B)のように展開できる。
Y=Σak10-k
=a0100+ a110-1+ a210-2+… (A)
(但し、各akは0〜9の整数)
X=(a0100+ a110-1+ a210-2+…)2
=a0100・a0100+ a110-1(2a0100+ a110-1)+ a210-2(2a0100+ a110-1+ a210-2)+… (B)
次に、これら式(A),(B)の形態から下記式(1)、(2)のような漸化式を考え、初期値X0,Y0=0とすると、下記式(3)よりYiを求めることができる。
X1=X-( a0100・a0100)、Y1= a0100 (1)
X2=X-(a110-1(2a0100+ a110-1))、Y2=(a0100+ a1101) (2)
Yi=((a0100+ a1101+…ai10-i) (3)
そして、「i」の値を所定の範囲内で大きくしてYiを求めていき、或るYiを求めた際のXiの値(以下、擬似剰余とする)が0となれば、YはY=Yiで表され、その値は有理数となる。
また、ステップS21において演算数が非有限数値ではないと判定した場合(ステップS21;No)には、CPU40は、十進演算器70によって「n」桁や「n+m」桁で開平計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS24)、当該開平計算で得られる擬似剰余Xiの値が0になったか否かを判定する(ステップS25)。
そして、ステップS25において擬似剰余Xiの値が0になったと判定した場合(ステップS25;Yes)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「0」に設定し(ステップS26)、四則演算処理を終了する。また、ステップS25において擬似剰余Xiの値が0にならなかったと判定した場合(ステップS25;No)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS27)、四則演算処理を終了する。
以上により、例えば図21(a)に示すように、演算桁数が「5」で計算部分が「√4」である場合には、擬似剰余が「0」であるため、誤差フラグは「0」に設定される。一方、図22(a)に示すように、演算桁数が「5」で計算部分が「√2」である場合には、擬似剰余が「0.00001」であるため、誤差フラグは「1」に設定される。
(3)一価関数計算処理
また、処理対象の計算部分が所定の一価関数、例えば上述の図8の左側に示す「log(x)」(但し、xは任意の数値)等に相当する場合には、図11に示すように、まずCPU40は、上述の置数処理を行った後(ステップS30)、当該一価関数部分における演算数が非有限数値であるか否かを判定し(ステップS31)、非有限数値であると判定した場合(ステップS31;Yes)には、十進演算器70によって「n」桁や「n+m」桁で一価関数部分の計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS32)、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS33)、一価関数計算処理を終了する。
また、ステップS31において演算数が非有限数値ではないと判定した場合(ステップS31;No)には、CPU40は、十進演算器70によって「n」桁や「n+m」桁で一価関数部分の計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS34)、演算数が上述の特定数値であるか否かを判定する(ステップS35)。
そして、ステップS35において演算数が特定数値であると判定した場合(ステップS35;Yes)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「0」に設定し(ステップS36)、一価関数計算処理を終了する。また、ステップS35において演算数が特定数値ではないと判定した場合(ステップS35;No)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS37)、一価関数計算処理を終了する。
(4)べき乗計算処理
また、処理対象の計算部分がべき乗計算部分である場合には、図12に示すように、まずCPU40は、上述の置数処理を行った後(ステップS40)、当該べき乗計算部分における被演算数が非有限数値であるか否かを判定し(ステップS41)、非有限数値であると判定した場合(ステップS41;Yes)には、十進演算器70によって「n」桁や「n+m」桁でべき乗部分の計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS42)、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS43)、べき乗計算処理を終了する。
また、ステップS41において被演算数が非有限数値ではないと判定した場合(ステップS41;No)には、CPU40は、べき乗計算部分における演算数が整数であるか否かを判定し(ステップS44)、整数ではないと判定した場合(ステップS44;No)には、上記ステップS42の処理に移行する。
また、ステップS44において演算数が整数であると判定した場合(ステップS44;Yes)には、CPU40は、十進演算器70によって「n」桁や「n+m」桁でべき乗部分の計算を行って計算結果をn桁計算結果格納領域63やn+m桁計算結果格納領域64に格納させた後(ステップS45)、演算結果に情報落ちがあるか否かを判定する(ステップS46)。
そして、ステップS46において情報落ちがあると判定した場合(ステップS46;Yes)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「1」に設定し(ステップS47)、べき乗計算処理を終了する。また、ステップS46において情報落ちがないと判定した場合(ステップS46;No)には、CPU40は、誤差フラグ記憶領域66の誤差フラグを「0」に設定し(ステップS48)、べき乗計算処理を終了する。
そして、上記四則演算処理、開平計算処理、一価関数計算処理、べき乗計算処理によって数値計算式全体についての計算結果が得られたら、CPU40は、その計算結果を最終計算結果格納領域65に格納させた後、演算桁数「n」で計算結果表示ボックス35に表示させるとともに、誤差フラグ記憶領域66内の情報に基づいて当該計算結果が真値であるか近似値であるかを誤差存否表示領域36に表示させ、計算処理を終了する。
これにより、例えば上述の図13(a)や図15(a)に示すように、演算桁数が「10」で「1+1.23E−11」という数式が入力された場合には、図15(b)に示すように、演算結果「1.000000000」が計算結果表示ボックス35に表示されるとともに、演算結果が非有限数値(近似値)である旨が誤差存否表示領域36に表示される。
また、上述の図16(a)に示すように、演算桁数が「10」で「1+1.23E−7」という数式が入力された場合には、図16(b)に示すように、演算結果「1.000000123」が計算結果表示ボックス35に表示されるとともに、演算結果が有限数値(真値)である旨が誤差存否表示領域36に表示される。
また、上述の図13(b)や図17(a)に示すように、演算桁数が「10」で「4.56789×3.4567」という数式が入力された場合には、図17(b)に示すように、演算結果「1.578982536」が計算結果表示ボックス35に表示されるとともに、演算結果が非有限数値(近似値)である旨が誤差存否表示領域36に表示される。
また、上述の図18(a)に示すように、演算桁数が「10」で「4.56789×3.45」という数式が入力された場合には、図18(b)に示すように、演算結果「1.57592205」が計算結果表示ボックス35に表示されるとともに、演算結果が有限数値(真値)である旨が誤差存否表示領域36に表示される。
また、上述の図13(c)や図19(a)に示すように、演算桁数が「10」で「20÷3」という数式が入力された場合には、図19(b)に示すように、演算結果「6.666666666」が計算結果表示ボックス35に表示されるとともに、演算結果が非有限数値(近似値)である旨が誤差存否表示領域36に表示される。
また、上述の図20(a)に示すように、演算桁数が「10」で「123456÷12」という数式が入力された場合には、図20(b)に示すように、演算結果「1.0288」が計算結果表示ボックス35に表示されるとともに、演算結果が有限数値(真値)である旨が誤差存否表示領域36に表示される。
また、上述の図21(a)に示すように、演算桁数が「5」で「√4」という数式が入力された場合には、図21(b)に示すように、演算結果「2」が計算結果表示ボックス35に表示されるとともに、演算結果が有限数値(真値)である旨が誤差存否表示領域36に表示される。
また、上述の図22(a)に示すように、演算桁数が「5」で「√2」という数式が入力された場合には、図22(b)に示すように、演算結果「1.4142」が計算結果表示ボックス35に表示されるとともに、演算結果が非有限数値(近似値)である旨が誤差存否表示領域36に表示される。
以上のように、本実施の形態における関数電卓1Aによれば、上記第1実施形態における関数電卓1と同様の効果を得ることができるのは勿論のこと、図9や図12,図15〜図20等に示したように、桁数「n」での計算結果に情報落ちが生じたか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
また、図10や図21〜図22に示したように、数値計算式中の開平計算部分を開平法により計算する場合に得られる擬似剰余Xiが0になるか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
また、図11に示したように、数値計算式中の所定の一価関数における演算数が当該所定の一価関数についての特定数値であるか否かに基づいて計算結果中の誤差の有無が判別されて表示されるので、計算誤差の有無をより正確に判断することができる。
なお、本発明は上記実施形態に限定されることなく、本発明の主旨を逸脱しない範囲において種々の改良及び設計の変更をおこなっても良い。
例えば、本発明に係る計算装置を関数電卓として説明したが、例えばパソコン、PDA(Personal Digital Assistance)等、他の電子機器としても良い。
また、十進演算器70は電子機器(上記実施形態では関数電卓)に内蔵されているものとして説明したが、着脱可能に装着されるものとしてもよい。
本発明を適用した関数電卓の概観図である。 本発明を適用した関数電卓の内部構成を示すブロック図である。 ディスプレイの表示画面の1例を示す図である。 有限数値と非有限数値とを説明するための図である。 計算処理における置数処理を示す図である。 計算処理によってディスプレイに表示される内容を示す図である。 本発明を適用した関数電卓の内部構成を示すブロック図である。 特定数値記憶テーブルを示す図である。 計算処理における四則演算処理を示す図である。 計算処理における開平計算処理を示す図である。 計算処理における一価関数計算処理を示す図である。 計算処理におけるべき乗計算処理を示す図である。 計算結果の情報落ちを説明するための図である。 四則演算処理の概要を説明するための図である。 (a)は四則演算処理において加算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は四則演算処理において加算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は四則演算処理において乗算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は四則演算処理において乗算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は四則演算処理において除算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は四則演算処理において除算が行われる場合を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は開平計算処理を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。 (a)は開平計算処理を説明するための図であり、(b)はディスプレイに表示される内容を示す図である。
符号の説明
1,1A 関数電卓(計算装置)
20 入力部(入力手段,演算桁数設定手段)
30 表示部(表示手段)
70 十進演算器(計算手段)
40 CPU(計算数値誤差判別手段、結果数値誤差判別手段、
桁落ち判別手段、一価関数判別手段、数式展開判別手段)
62 演算桁数格納領域(演算桁数記憶手段)
502,502A 計算プログラム

Claims (4)

  1. 演算桁数を記憶する演算桁数記憶手段と、
    ユーザ操作に基づいて数値計算式を入力する入力手段と、
    前記入力手段により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別手段と、
    前記数値計算式を前記演算桁数で計算する計算手段と、
    前記計算数値誤差判別手段により何れかの計算数値が誤差有りと判別された場合に、前記計算手段による計算結果が誤差有りであると判別する結果数値誤差判別手段と、
    前記計算結果と、前記結果誤差判別手段による判別結果とを表示する表示手段と、
    を備えることを特徴とする計算装置。
  2. 請求項1記載の計算装置において、
    前記入力手段は、
    ユーザ操作に基づいて前記演算桁数記憶手段の前記演算桁数を任意に設定する演算桁数設定手段を有することを特徴とする計算装置。
  3. 請求項1または2記載の計算装置において、
    結果数値誤差判別手段は、
    前記計算手段による前記演算桁数での計算で桁落ちが生じた場合に、前記計算結果が誤差有りであると判別する桁落ち判別手段を有することを特徴とする計算装置。
  4. コンピュータに、
    演算桁数を記憶する演算桁数記憶機能と、
    ユーザ操作に基づいて数値計算式を入力する入力機能と、
    前記入力機能により入力された数値計算式に含まれる各計算数値の仮数部の桁数が前記演算桁数以下であるか否かに基づいて、当該各計算数値中の誤差の有無を判別する計算数値誤差判別機能と、
    前記数値計算式を前記演算桁数で計算する計算機能と、
    前記計算数値誤差判別機能により何れかの計算数値が誤差有りと判別された場合に、前記計算機能による計算結果が誤差有りであると判別する結果数値誤差判別機能と、
    前記計算結果と、前記結果誤差判別機能による判別結果とを表示する表示機能と、
    を実現させることを特徴とする計算プログラム。
JP2007018881A 2007-01-30 2007-01-30 計算装置及び計算プログラム Active JP4893340B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007018881A JP4893340B2 (ja) 2007-01-30 2007-01-30 計算装置及び計算プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007018881A JP4893340B2 (ja) 2007-01-30 2007-01-30 計算装置及び計算プログラム

Publications (2)

Publication Number Publication Date
JP2008186224A JP2008186224A (ja) 2008-08-14
JP4893340B2 true JP4893340B2 (ja) 2012-03-07

Family

ID=39729226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007018881A Active JP4893340B2 (ja) 2007-01-30 2007-01-30 計算装置及び計算プログラム

Country Status (1)

Country Link
JP (1) JP4893340B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3194080B2 (ja) * 1996-09-13 2001-07-30 株式会社データアクション 端数処理装置
JP2001160034A (ja) * 1999-12-03 2001-06-12 Sharp Corp 情報処理装置およびその表示方法

Also Published As

Publication number Publication date
JP2008186224A (ja) 2008-08-14

Similar Documents

Publication Publication Date Title
US20170255464A1 (en) Merged floating point operation using a modebit
KR101560340B1 (ko) 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산
JP2010238011A (ja) ベクトル乗算処理装置および方法ならびにプログラム
JP4893340B2 (ja) 計算装置及び計算プログラム
JP4997812B2 (ja) 計算装置及び計算プログラム
CN115269003A (zh) 数据处理方法及装置、处理器、电子设备、存储介质
JP4126498B2 (ja) 電子計算装置および計算表示処理プログラム
CN111124361A (zh) 算术处理装置及其控制方法
JP4193773B2 (ja) 演算制御装置及びプログラム
JP5979212B2 (ja) 電子機器およびプログラム
US5285399A (en) Calculator with easily enterable constant calculation mode
JP5487997B2 (ja) 電子計算機及びプログラム
JP2005128907A (ja) 演算装置の制御方法、演算装置、並びに、そのプログラムおよび記録媒体
JP5315712B2 (ja) 演算機能を備えた電子装置および演算処理プログラム
JPH01282633A (ja) 非正規化数の処理方式
JP4109181B2 (ja) 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ
JP2008059314A (ja) 公式計算装置及び公式計算プログラム
JP5659760B2 (ja) 電子計算機およびプログラム
JP4271589B2 (ja) 演算装置の制御方法、並びに、そのプログラムおよび記録媒体
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
CN117270813A (zh) 运算器、处理器和电子设备
JP2024024089A (ja) 電子機器、表示方法及びプログラム
JP2903529B2 (ja) ベクトル演算方式
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
JP2011186771A (ja) 演算装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111107

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: 20111122

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: 20111205

R150 Certificate of patent or registration of utility model

Ref document number: 4893340

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3