JP2004310432A - 演算装置及びプログラム - Google Patents
演算装置及びプログラム Download PDFInfo
- Publication number
- JP2004310432A JP2004310432A JP2003102963A JP2003102963A JP2004310432A JP 2004310432 A JP2004310432 A JP 2004310432A JP 2003102963 A JP2003102963 A JP 2003102963A JP 2003102963 A JP2003102963 A JP 2003102963A JP 2004310432 A JP2004310432 A JP 2004310432A
- Authority
- JP
- Japan
- Prior art keywords
- dividend
- divisor
- value
- quotient
- 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.)
- Abandoned
Links
Images
Abstract
【課題】特別な回路を必要とせずに除算処理にかかる演算時間を短縮させた演算装置及びプログラムを提供すること。
【解決手段】演算部26は被除数X及び除数Yの所定上位桁を抜き出して第2被除数及び第2除数とし、第2被除数から第2除数を繰り返し減算して商の仮値を求める。そして当該仮値と除数とを乗算器で乗算し、被除数から乗算結果を減算する。演算部26は当該減算結果の正負に基づいて、商の仮値を商として決定する。上記演算を繰り返すことにより、被除数Xと被除数Yの除算結果が算出される。
【選択図】 図2
【解決手段】演算部26は被除数X及び除数Yの所定上位桁を抜き出して第2被除数及び第2除数とし、第2被除数から第2除数を繰り返し減算して商の仮値を求める。そして当該仮値と除数とを乗算器で乗算し、被除数から乗算結果を減算する。演算部26は当該減算結果の正負に基づいて、商の仮値を商として決定する。上記演算を繰り返すことにより、被除数Xと被除数Yの除算結果が算出される。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、除算演算を行うための演算装置及びプログラムに関するものである。
【0002】
【従来の技術】
従来、除算演算を行う場合は、被除数から除数が何回減算できるかをカウントする除算回路によって除数の答えが算出されていた。このような従来の除数回路の動作の一例を、被除数X、除数Y、除算結果Zとして示したフローチャートを図6に示す。
【0003】
まず、各変数を初期化する。変数Nは減算回数、変数Dは減算回数が除算結果のどの桁に対応するかを示す変数である。変数Z及び変数Nには“0”、変数Dには“1”が代入される(ステップS1)。
【0004】
次に被除数Xが“0”であるか否かが判別される(ステップS2)。被除数Xが“0”であれば(ステップS2;Yes)、処理は終了する。被除数Xが“0”でない場合(ステップS2;No)、被除数Xと除数Yの値が比較される(ステップS3)。被除数Xの値が除数Yの値より小さい場合(ステップS3;No)、被除数Xの値は10倍され、変数Dの値は1/10される(ステップS4)。
【0005】
続いて被除数Xの値から除数Yの値が減算され、当該減算結果が被除数Xに代入される(ステップS5)。そして被除数Xの値が“0”以上の場合(ステップS6;Yes)、変数Nの値は1加算される(ステップS7)。被除数Xの値が“0”未満の場合(ステップS6;No)、被除数Xの値に除数Yが加算され、当該加算結果が被除数Xに代入される(ステップS8)。ここで被除数Xの値は被除数X÷除数Yの余りの値を示す。
【0006】
次に変数Nの値と変数Dの値を乗算した結果に変数Zの値を加算し、当該加算結果が変数Zに代入される(ステップS9)。そして変数Zの値が所定の桁数を満たしていれば(ステップS10;Yes)、処理を終了する。変数Zの値が所定の桁数を満たしていなければ(ステップS10;No)、変数Nに“0”を代入してリセットし(ステップS11)、ステップS4に処理を移行する。以上のように、被除数Xから除数Yが何回減算できるかをカウントし、除算結果を求めていた。
【0007】
しかし、このような除算回路の場合、被除数X及び除数Yの桁数が大きくなると、減算にかかる処理時間が長くなり、除算結果を得るまでに時間がかかっていた。具体的には、例えば、図6におけるステップS5が相当するが、ステップS4〜S11の処理ループにより、ステップS5の処理が繰り返し行われるため、被除数X及び除数Yの桁数が大きくなればなる程、この問題が顕著に表れていた。
【0008】
そこで、特許文献1の技術のように、減算処理にかかるクロック数(処理時間)を設定可能にすることにより、効率的に減算処理を行って除算結果を得ることのできる除算回路が知られている。更に、特許文献2の技術のように、複数の減算ブロックを設置することによって減算処理を並列処理し、演算にかかる処理時間を短縮させた除算回路も知られている。
【0009】
【特許文献1】
特開平8−6765号公報
【特許文献2】
特開2002−175178号公報
【0010】
【発明が解決しようとする課題】
しかしながら、特許文献1及び2のような技術を適用することにより、除算回路に必要な回路数(素子数)が増加し、これによる回路面積の増大が問題となっていた。
【0011】
本発明の目的は、特別な回路を必要とせずに除算処理にかかる演算時間を短縮させた演算装置及びプログラムを提供することである。
【0012】
【課題を解決するための手段】
以上の課題を解決するために、請求項1に記載の演算装置は、加減算器及び乗算器を用いて除算を実現する演算装置において、被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出手段(例えば、図2の演算部26;図3のステップA6)と、前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出手段(例えば、図2の演算部26;例えば、図3のステップA7〜A9)と、この仮値算出手段により求められた仮値と前記除数とを前記乗算器で乗算させる乗算手段(例えば、図2の演算部26;図3のステップA10)と、前記被除数から前記乗算手段による乗算結果を前記加減算器に減算させる減算手段(例えば、図2の演算部26;図3のステップA10)と、この減算手段による減算結果の正負に基づき前記仮値算出手段により求められた商の仮値を商として決定する商決定手段(例えば、図2の演算部26;図3のステップA11〜A13)と、を備えることを特徴としている。
【0013】
また、請求項6に記載の発明のプログラムは、加減算器及び乗算器が実装されたコンピュータに、被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出機能(例えば、図3のステップA6)と、前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出機能(例えば、図3のステップA7〜A9)と、この仮値算出機能により求められた仮値と前記除数とを前記乗算器で乗算させる乗算機能(例えば、図3のステップA10)と、前記被除数から前記乗算機能による乗算結果を前記加減算器に減算させる減算機能(例えば、図3のステップA10)と、この減算機能による減算結果の正負に基づき前記仮値算出機能により求められた商の仮値を商として決定する商決定機能(例えば、図3のステップA11〜A13)と、を実現させることにより除算を実行させることを特徴としている。
【0014】
この請求項1又は6に記載の発明によれば、被除数及び除数の所定上位桁を抜き出して第2被除数及び第2除数とすることにより、第2被除数及び第2除数の桁数が被除数及び除数の桁数以下となるため、仮値算出手段において第2被除数から第2除数を繰り返し減算する際の演算時間を短縮することができる。従って、除算演算の演算速度を短縮することができる。
【0015】
更に、本来の演算装置に備わっている加減算器及び乗算器を用いて除算演算を実行可能なため、特別な回路を設置する必要がない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0016】
請求項2に記載の発明は、請求項1に記載の演算装置であって、前記商決定手段は、前記減算結果が負の場合、前記仮値算出手段により求められた商の仮値より1減算させ、前記被除数に前記除数を加算させる調整手段(例えば、図2の演算部26)を有することを特徴としている。
【0017】
この請求項2に記載の発明によれば、前記仮値算出手段によって求められた仮値が被除数と除数の商として正しくない(即ち、減算手段による減算結果が負)場合に、商決定手段によって正しい商に調整することができる。これにより、被除数及び除数の所定上位桁を抜き出した第2被除数及び第2除数によって除算を行っても、被除数と除数の正確な商を得ることができる。
【0018】
請求項3に記載の発明は、請求項2に記載の演算装置であって、前記減算手段による減算結果で前記被除数を更新し、当該減算結果が負の場合には当該減算結果と前記除数とを加算した値で前記被除数を更新する被除数更新手段(例えば、図2の演算部26)と、前記抜出手段、前記仮値算出手段、前記乗算手段、前記減算手段、前記商決定手段及び前記被除数更新手段を繰り返し実行させる繰り返し手段(例えば、図2の演算部26)と、この繰り返し手段による繰り返し実行において前記商決定手段が順次決定した商を一連とすることにより除算結果を決定する除算結果決定手段(例えば、図2の演算部26)と、を更に備えることを特徴としている。
【0019】
この請求項3に記載の発明によれば、減算手段によって被除数を更新し、繰り返し手段によって抜出手段、仮値算出手段、乗算手段、減算手段、商決定手段及び被除数更新手段を繰り返し実行し、繰り返し実行において決定した商を一連の値とすることにより、当該一連の値を被除数と除数の除算結果とすることができる。従って、繰り返し手段による繰り返し実行により、除算結果の桁数を増加させ、除算を実数で求めるといったことができる。
【0020】
請求項4に記載の発明は、請求項3に記載の演算装置であって、前記除算結果の桁数を設定する設定手段(例えば、図2の演算部26;図3のステップA1)を更に備え、前記繰り返し手段は、除算結果の桁数が前記設定手段によって設定された桁数を満たす場合、繰り返し実行を終了する手段であることを特徴としている。
【0021】
この請求項4に記載の発明によれば、除算結果の桁数を任意に設定可能とすることにより、例えば、除算結果の桁数を少なく設定することにより、演算速度を短縮することができる。
【0022】
また、請求項5に記載の発明のように、請求項1〜4の何れか一項に記載の演算装置であって、前記抜出手段は、前記被除数及び前記除数の上位4桁以内を抜き出す手段(例えば、図2の演算部26)であってもよい。
【0023】
【発明の実施の形態】
以下、図1〜図5を参照して、本発明に係る実施の形態について詳細に説明する。尚、以下においては、本発明を、計算機能を有する関数電卓に適用した場合を例にとって説明するが、本発明が適用可能な実施形態は、これに限定されるものではなく、パソコンやPDA(パーソナルデジタルアシスタント)等、関数電卓以外の各種演算装置にも適用することができる。
【0024】
図1は、関数電卓1の構成を示すブロック図である。同図に示すように、関数電卓1は、CPU(Central Processing Unit)11、入力部12、表示部13、通信制御部14、ROM(Read Only Memory)15、RAM(Random Access Memory)16及び外部記憶メモリ17によって構成されており、各部はバス18によって接続されている。
【0025】
CPU11は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送等を行う。具体的には、CPU11は、入力部12から入力される操作信号に応じてROM15に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、処理結果をRAM16に格納するとともに、当該処理結果を表示するための表示信号を適宜出力して、当該表示信号に対応した表示情報を表示部13に表示させる。
【0026】
またCPU11は、ALU(Arithmetic and Logic Unit)の機能を司る演算回路部200を備える。演算回路部200はP−ROM(Programmable ROM)21を有し、P−ROM21にはマシン語レベルで構成された除算命令ルーチン210等の各種命令語に対する演算ルーチンのプログラムが格納されている。除算命令ルーチン210は除算処理を実現させるための複数の命令で構成されたプログラムである。CPU11は、ROM15から読み出したプログラムに従って処理を実行している際に、当該プログラム中の除算命令を検知すると、除算命令ルーチン210を読み出して、当該ルーチンに従って処理を行う。除算命令ルーチン210についての詳細は後述する。
【0027】
入力部12は、ユーザが数値や演算処理の実行指示等を入力する手段である。そしてユーザに操作されたキーに対応する操作信号がCPU11に出力される。
【0028】
表示部13は、入力部12の操作によって入力された文字や符号、CPU11から出力される表示データに基づいた演算結果やグラフ表示等、関数電卓1を使用するために必要な各種データが表示される部分である。
【0029】
通信制御部14は、外部機器と通信回線網を介して各種データを送受信するためのインターフェースであり、CPU11からの信号によって動作する。
【0030】
ROM15は、各種設定処理、各種演算処理等の関数電卓1の動作に係る各種処理プログラムや、関数電卓1の備える種々の機能を実現するためのアプリケーション等を記憶する。
【0031】
RAM16は、CPU11が実行する各種プログラムや、これらのプログラムの実行にかかるデータ等を一時的に保持するメモリ領域を備える。
【0032】
外部記憶メモリ17は、例えば、メモリカード、ハードディスク等の記憶媒体であって、CPU11からの指示信号に従って、各種データの読み書きを行う。
【0033】
図2は演算回路部200の一例を示す回路ブロック図である。演算回路部200は、P−ROM21、PC(Program Counter)22、アドレス指定部23、メモリ24、命令デコード部25及び演算部26等で構成される。
【0034】
P−ROM21にはマシン語レベルで構成された各種プログラムが格納されている。除算命令ルーチン210は除算機能を実現させるための複数の命令で構成されたプログラムである。除算命令ルーチン210の各命令は、PC22で指定されたアドレスに従って、P−ROM21から読み出されて出力される。
【0035】
アドレス指定部23は、P−ROM21から出力された命令に従ってメモリ24内のアドレスを指定する。そして、メモリ24はアドレス指定部23によって指定されたアドレスに記憶されたデータを出力する。
【0036】
命令デコード部25は、P−ROM21から出力された命令をデコードし、演算部26に出力する。演算部26は命令デコード部25より出力されたデコード結果に従って、メモリ24から出力されたデータを演算する。そして演算結果はメモリ24に出力され、記憶される。
【0037】
図3は、除算命令ルーチン210に従って演算部26が実行する除算処理の動作を被除数X、除数Y、除算結果として変数Zを用いて説明するためのフローチャートである。図3を用いて、除算処理の流れについて説明する。
【0038】
ここで、被除数X、除数Y、変数v及び定数kの値は演算回路部200の外部(例えば、CPU11)から与えられ、メモリ24は被除数X、除数Y、定数k、変数Z、N、D、d、X1及びY1の値を格納するための領域を有していることとする。
【0039】
変数vは、除算結果である変数Zの有効桁数を示す。例えば、変数Zの有効桁数を小さく設定することにより、図3の除算処理におけるステップA5〜ステップA14の繰り返し回数が減少するため、演算時間を短縮することができる。従って、演算精度を落しても演算時間を短縮したい場合は変数vの値を小さくして桁数を少なくし、演算時間を犠牲にしても演算精度を高めたい場合は、変数vの値を大きく設定すればよい。尚、変数vは、ユーザが任意の値を設定可能なように説明するが、演算される除算式の重要度等によってCPU11によって決定されることとしてもよい。
【0040】
演算部26はユーザによって設定された変数vの値をメモリ24に記憶する(ステップA1)。そして各変数値が初期化される。変数Nは減算回数、変数Dは減算回数が除算結果のどの桁に対応するかを示す変数である。演算部26は、変数Z及び変数Nの値を格納するメモリ24の領域に“0”、変数Dの値を格納するメモリ24の領域に“1”を記憶する。
【0041】
また変数dは、ステップA7の減算処理で扱う被除数X及び除数Yに対応する値を決定するための変数である。演算部26は被除数Xの値の桁数から定数kを減算する。そして減算結果を変数dの値を格納するメモリ24の領域に記憶する(ステップA2)。具体的には、例えば被除数Xの値が4桁、定数k=2である場合、4−2=2であるため、メモリ24の変数dに対応する領域には“2”が記憶される。
【0042】
次に、演算部26は被除数Xが“0”であるか否かを判別する(ステップA3)。被除数Xが“0”であれば(ステップA3;Yes)、演算部26は処理を終了する。被除数Xが“0”でない場合(ステップA3;No)、演算部26は被除数Xと除数Yの値を比較する(ステップA4)。被除数Xの値が除数Yの値より小さい場合(ステップA4;No)、演算部26は被除数Xの値を10倍し、10倍した結果を被除数Xの値を格納するメモリ24の領域に記憶する。更に、変数Dの値を1/10し、演算結果を変数Dの値を格納するメモリ24の領域に記憶する(ステップA5)。
【0043】
続いて、演算部26は被除数Xの値から変数dの値分下位桁を切り捨てて、上位桁を抜き出した値を変数X1の値を格納するメモリ24の領域に記憶する。更に、除数Yの値から変数dの値分下位桁を切り捨てて、上位桁を抜き出した値を変数Y1の値を格納するメモリ24の領域に記憶する(ステップA6)。即ち、変数X1及び変数Y1は、被除数X及び被除数Yのk桁目以上を抜き出した値となる。
【0044】
具体的には、被除数Xが4桁、変数dが“2”の場合、被除数Xの値の下2桁が切り捨てられ、上位2桁が変数X1として記憶される。つまり、被除数Xが“5678”、変数dが“2”の場合、被除数Xの値の下2桁が切り捨てられ、“56”が変数X1として記憶される。
【0045】
続いて、演算部26は変数X1の値から変数Y1の値を減算し、当該減算結果を変数X1の値を格納するメモリ24の領域に記憶する(ステップA7)。そして演算部26は被除数Xの値が“0”以上であるか否かを判別する。“0”以上の場合(ステップA8;Yes)、演算部26は変数Nの値に1加算して、加算結果を変数Nの値を格納するメモリ24の領域に記憶する(ステップA9)。
【0046】
被除数Xの値が“0”より小さい場合(ステップA8;No)、演算部26は被除数Xの値から除数Yの値と変数Nの値との乗算結果を減算する。そして当該減算結果を被除数Xの値を格納するメモリ24の領域に記憶する(ステップA10)。
【0047】
次に演算部26は変数Xの値が“0”より小さいか否かを判別する(ステップA11)。“0”より小さい場合(ステップA11;Yes)、演算部26は被除数Xの値に除数Yを加算し、当該加算結果を被除数Xの値を格納するメモリ24の領域に記憶する。更に、変数Nの値から1減算し、当該減算結果を変数Nの値を記憶するメモリ24の領域に記憶する(ステップA12)。
【0048】
次に演算部26は変数Nの値と変数Dの値を乗算した結果に変数Zの値を加算し、当該加算結果を変数Zの値を格納するメモリ24の領域に記憶する(ステップA13)。
【0049】
続いて演算部26は変数Zの値が変数vの示すの桁数を満たしているか否かを判断する(ステップA14)。変数Zの値が変数vの示す桁数を満たしていない場合(ステップA14;No)、演算部26は変数Nの値を格納するメモリ24の領域に“0”を記憶する(ステップA15)。その後、ステップA5からの処理が繰り返される。変数Zの値が変数vの示すの桁数を満たしている場合(ステップA14;Yes)、処理を終了する。
【0050】
以下“567890÷123456”の演算結果を求める場合を例に挙げ、図3に示した除算命令ルーチン210に従った除算処理の流れについて、各変数の値が格納されているメモリ領域のデータ内容と共に図4及び5を参照しながら詳しく説明する。
【0051】
CPU11はROM15に格納されているプログラムの命令に従って各種処理の実行中に“567890÷123456”の演算を行う命令を検知すると、当該演算を除算命令ルーチン210の命令に従って実行する。まず第1処理として、メモリ24に変数X、Y及び定数kの値が格納されるメモリ領域が確保される。変数Xの値を格納する領域を領域41、変数Yの値を格納する領域を領域42、定数kの値を格納する領域を領域43とする。
【0052】
以下、変数kの値を“3”として説明する。従って、領域41には“567890”、領域42には“123456”、領域43には“3”が記憶される。更に図示していないが、任意に設定された変数vの値が記憶される(図3の除算処理のステップA1に該当)。
【0053】
次に第2処理として、各種変数が初期化される。メモリ24には変数Z、N、D及びdの値が格納されるメモリ領域が確保される。変数Zの値を格納する領域を領域44、変数Nの値を格納する領域を領域45、変数Dの値を格納する領域を領域46、変数dの値を格納する領域を領域47とする。領域44及び45には“0”、領域46には“1”が記憶される。更に、領域47には変数Xの値の桁数が“6”、変数kの値が“3”であるから、“6−3”の減算結果である“3”が記憶される(図3の除算処理のステップA2に該当)。
【0054】
続いて、変数Xの値が“0”か否かが判別されるが(図3の除算処理のステップA3に該当)、領域41に格納されている値は“0”ではないため、変数Xの値が変数Yの値以上であるか否かが判別される(図3の除算処理のステップA4に該当)。変数Yの値より変数Xの値は大きいため、第3処理としてメモリ24に変数X1及びY1の値を格納するための領域が確保される。ここで変数X1の値を格納する領域を領域48、変数Y1の値を格納する領域を領域49とする。そして領域48には変数Xの値の下3桁を切り捨てて、上位桁を抜き出した値、即ち“567”が、領域49には変数Yの値の下3桁を切り捨てて、上位桁を抜き出した値、即ち“123”が記憶される(図3の除算処理のステップA6に該当)。
【0055】
次に第4処理として、“X1−Y1”即ち“567−123”の減算結果である“444”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“1”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0056】
第5処理として、“X1−Y1”即ち“444−123”の減算結果である“321”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“2”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0057】
第6処理として、“X1−Y1”即ち“321−123”の減算結果である“198”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“3”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0058】
第7処理として、“X1−Y1”即ち“198−123”の減算結果である“75”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“4”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0059】
第8処理として、“X1−Y1”即ち“75−123”の減算結果である“−48”が領域48に記憶される(図3の除算処理のステップA7に該当)。ここで変数X1は“0”より小さい値である。従って、第9処理として、“X−Y×N”即ち“567890−123456×4”の演算結果である“74066”が領域41に記憶される(図3の除算処理のステップA10に該当)。
【0060】
そして、変数Xが“0”より小さい値であるか否かが判別される(図3の除算処理のステップA11に該当)。変数Xの値は“0”以上であるため、第10処理として“Z+N×D”即ち“0+4×1”の演算結果である“4”が領域44に記憶される(図3の除算処理のステップA13に該当)。
【0061】
そして、変数Zの値が変数vの示す桁数を満たしているか否かが判別され(図3の除算処理のステップA14に該当)、満たしていなければ第11処理として“0”が領域45に記憶される(図3の除算処理のステップA15に該当)。
【0062】
続いて、第12処理として、“X×10”即ち“74066×10”の乗算結果である“740660”が領域41に記憶される。更に、“D×1/10”即ち“1×1/10”の乗算結果である“0.1”が領域46に記憶される(図3の除算処理のステップA5に該当)。
【0063】
そして第13処理として、領域48には変数Xの値の下3桁を切り捨てた値、即ち“740”が、領域49には変数Yの値の下3桁を切り捨てた値、即ち“123”が記憶される(図3の除算処理のステップA6に該当)。
【0064】
次に第14処理として、“X1−Y1”即ち“740−123”の減算結果である“617”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“1”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0065】
以下、第14処理と同様に、第15〜第19処理においても“X1−Y1”の演算と変数Nの値に1加算する演算が繰り返される。
【0066】
そして、第20処理として、“X1−Y1”即ち“2−123”の減算結果である“−121”が領域48に記憶される(図3の除算処理のステップA7に該当)。ここで変数X1は“0”より小さい値である。従って、第21処理として、“X−Y×N”即ち“740660−123456×6”の演算結果である“−76”が領域41に記憶される(図3の除算処理のステップA10に該当)。
【0067】
変数Xの値が“0”より小さいか否かが判別される(図3の除算処理のステップA11に該当)。変数Xは“0”より小さい値であるため、第22処理として、変数X及びNの値が変更される。つまり、“X+Y”即ち“−76+123450”の加算結果“123380”が領域41に記憶される。更に“N−1”即ち“6−1”の減算結果“5”が領域45に記憶される(図3の除算処理のステップA12に該当)。
【0068】
そして、第23処理として、“Z+N×D”即ち“4+5×0.1”の演算結果である“4.5”が領域44に記憶される(図3の除算処理のステップA13に該当)。
【0069】
続いて、変数Zの値が変数vの値の示す桁数を満たしているか否かが判別され(図3の除算処理のステップA14に該当)、満たしていなければ“0”が領域45に記憶され(図3の除算処理のステップA15に該当)、満たしていれば除算処理は終了する。
【0070】
更に、CPU11の備えるP−ROM200に除算命令ルーチン210を記憶させれば、本実施の形態を実現するための特別な回路は必要ない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0071】
以上、本発明を適用した実施の形態を説明したが、本発明は上述の実施の形態についてのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0072】
例えば、上述した実施の形態の演算例として、被除数X及び除数Yを自然数とした”567890÷123456”の例を説明したが、被除数X、除数Y及び変数Zの値は自然数に限らず、仮数部及び指数部を含むものであってもよい。例えば、有効桁数を4桁として被除数Xを”5.678×105”とし、除数Yを”1.234×105”としてもよい。この場合、変数X1及び変数Y1それぞれに代入する被除数X及び除数Yの上位桁の数が有効桁数となる。
【0073】
また、演算回路部200の演算処理幅に応じて、変数X1及び変数Y1それぞれに代入する被除数X及び除数Yの上位桁を決定してもよい。例えば、演算回路部200が16ビットでの演算を行う回路であり、被除数や除数の数値がBCDコード化され、1桁4ビットで表される場合には、4桁(=16ビット幅/4ビット)を単位として除算処理を行うのが好適である。従って、図3の除算処理のステップA6において、被除数X及び除数Yの小数点を基準に4桁ずつ区切った、上位4桁以内の値(例えば、”123456”であれば”12”)を変数X1及び変数Y1にそれぞれ代入するようにしてもよい。特に、CPUの演算処理幅は2nビットであり、BCDコード化された1桁4ビットの数値を扱う場合には、4桁を単位として除算処理を行うのは好適である。
【0074】
【発明の効果】
請求項1又は6に記載の発明によれば、被除数及び除数の所定上位桁を抜き出して第2被除数及び第2除数とすることにより、第2被除数及び第2除数の桁数が被除数及び除数の桁数以下となるため、仮値算出手段において第2被除数から第2除数を繰り返し減算する際の演算時間を短縮することができる。従って、除算演算の演算速度を短縮することができる。
【0075】
更に、本来の演算装置に備わっている加減算器及び乗算器を用いて除算演算を実行可能なため、特別な回路を設置する必要がない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0076】
請求項2に記載の発明によれば、前記仮値算出手段によって求められた仮値が被除数と除数の商として正しくない(即ち、減算手段による減算結果が負)場合に、商決定手段によって正しい商に調整することができる。これにより、被除数及び除数の所定上位桁を抜き出した第2被除数及び第2除数によって除算を行っても、被除数と除数の正確な商を得ることができる。
【0077】
請求項3に記載の発明によれば、減算手段によって被除数を更新し、繰り返し手段によって抜出手段、仮値算出手段、乗算手段、減算手段、商決定手段及び被除数更新手段を繰り返し実行し、繰り返し実行において決定した商を一連の値とすることにより、当該一連の値を被除数と除数の除算結果とすることができる。従って、繰り返し手段による繰り返し実行により、除算結果の桁数を増加させ、除算を実数で求めるといったことができる。
【0078】
請求項4に記載の発明によれば、除算結果の桁数を任意に設定可能とすることにより、例えば、除算結果の桁数を少なく設定することにより、演算速度を短縮することができる。
【図面の簡単な説明】
【図1】関数電卓の内部構成を示すブロック図。
【図2】演算回路部の回路ブロック図の一例を示す図。
【図3】除算処理の動作を説明するためのフローチャート。
【図4】例題を用いて除算処理の流れについて説明するための図。
【図5】図4に続く、例題を用いて除算処理の流れについて説明するための図。
【図6】従来の除算処理の動作を説明するためのフローチャート。
【符号の説明】
1 関数電卓
11 CPU
200 演算回路部
21 P−ROM
210 除算命令ルーチン
22 PC
23 アドレス指定部
24 メモリ
25 命令デコード部
26 演算部
12 入力部
13 表示部
14 通信制御部
15 ROM
16 RAM
17 外部記憶メモリ
【発明の属する技術分野】
本発明は、除算演算を行うための演算装置及びプログラムに関するものである。
【0002】
【従来の技術】
従来、除算演算を行う場合は、被除数から除数が何回減算できるかをカウントする除算回路によって除数の答えが算出されていた。このような従来の除数回路の動作の一例を、被除数X、除数Y、除算結果Zとして示したフローチャートを図6に示す。
【0003】
まず、各変数を初期化する。変数Nは減算回数、変数Dは減算回数が除算結果のどの桁に対応するかを示す変数である。変数Z及び変数Nには“0”、変数Dには“1”が代入される(ステップS1)。
【0004】
次に被除数Xが“0”であるか否かが判別される(ステップS2)。被除数Xが“0”であれば(ステップS2;Yes)、処理は終了する。被除数Xが“0”でない場合(ステップS2;No)、被除数Xと除数Yの値が比較される(ステップS3)。被除数Xの値が除数Yの値より小さい場合(ステップS3;No)、被除数Xの値は10倍され、変数Dの値は1/10される(ステップS4)。
【0005】
続いて被除数Xの値から除数Yの値が減算され、当該減算結果が被除数Xに代入される(ステップS5)。そして被除数Xの値が“0”以上の場合(ステップS6;Yes)、変数Nの値は1加算される(ステップS7)。被除数Xの値が“0”未満の場合(ステップS6;No)、被除数Xの値に除数Yが加算され、当該加算結果が被除数Xに代入される(ステップS8)。ここで被除数Xの値は被除数X÷除数Yの余りの値を示す。
【0006】
次に変数Nの値と変数Dの値を乗算した結果に変数Zの値を加算し、当該加算結果が変数Zに代入される(ステップS9)。そして変数Zの値が所定の桁数を満たしていれば(ステップS10;Yes)、処理を終了する。変数Zの値が所定の桁数を満たしていなければ(ステップS10;No)、変数Nに“0”を代入してリセットし(ステップS11)、ステップS4に処理を移行する。以上のように、被除数Xから除数Yが何回減算できるかをカウントし、除算結果を求めていた。
【0007】
しかし、このような除算回路の場合、被除数X及び除数Yの桁数が大きくなると、減算にかかる処理時間が長くなり、除算結果を得るまでに時間がかかっていた。具体的には、例えば、図6におけるステップS5が相当するが、ステップS4〜S11の処理ループにより、ステップS5の処理が繰り返し行われるため、被除数X及び除数Yの桁数が大きくなればなる程、この問題が顕著に表れていた。
【0008】
そこで、特許文献1の技術のように、減算処理にかかるクロック数(処理時間)を設定可能にすることにより、効率的に減算処理を行って除算結果を得ることのできる除算回路が知られている。更に、特許文献2の技術のように、複数の減算ブロックを設置することによって減算処理を並列処理し、演算にかかる処理時間を短縮させた除算回路も知られている。
【0009】
【特許文献1】
特開平8−6765号公報
【特許文献2】
特開2002−175178号公報
【0010】
【発明が解決しようとする課題】
しかしながら、特許文献1及び2のような技術を適用することにより、除算回路に必要な回路数(素子数)が増加し、これによる回路面積の増大が問題となっていた。
【0011】
本発明の目的は、特別な回路を必要とせずに除算処理にかかる演算時間を短縮させた演算装置及びプログラムを提供することである。
【0012】
【課題を解決するための手段】
以上の課題を解決するために、請求項1に記載の演算装置は、加減算器及び乗算器を用いて除算を実現する演算装置において、被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出手段(例えば、図2の演算部26;図3のステップA6)と、前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出手段(例えば、図2の演算部26;例えば、図3のステップA7〜A9)と、この仮値算出手段により求められた仮値と前記除数とを前記乗算器で乗算させる乗算手段(例えば、図2の演算部26;図3のステップA10)と、前記被除数から前記乗算手段による乗算結果を前記加減算器に減算させる減算手段(例えば、図2の演算部26;図3のステップA10)と、この減算手段による減算結果の正負に基づき前記仮値算出手段により求められた商の仮値を商として決定する商決定手段(例えば、図2の演算部26;図3のステップA11〜A13)と、を備えることを特徴としている。
【0013】
また、請求項6に記載の発明のプログラムは、加減算器及び乗算器が実装されたコンピュータに、被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出機能(例えば、図3のステップA6)と、前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出機能(例えば、図3のステップA7〜A9)と、この仮値算出機能により求められた仮値と前記除数とを前記乗算器で乗算させる乗算機能(例えば、図3のステップA10)と、前記被除数から前記乗算機能による乗算結果を前記加減算器に減算させる減算機能(例えば、図3のステップA10)と、この減算機能による減算結果の正負に基づき前記仮値算出機能により求められた商の仮値を商として決定する商決定機能(例えば、図3のステップA11〜A13)と、を実現させることにより除算を実行させることを特徴としている。
【0014】
この請求項1又は6に記載の発明によれば、被除数及び除数の所定上位桁を抜き出して第2被除数及び第2除数とすることにより、第2被除数及び第2除数の桁数が被除数及び除数の桁数以下となるため、仮値算出手段において第2被除数から第2除数を繰り返し減算する際の演算時間を短縮することができる。従って、除算演算の演算速度を短縮することができる。
【0015】
更に、本来の演算装置に備わっている加減算器及び乗算器を用いて除算演算を実行可能なため、特別な回路を設置する必要がない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0016】
請求項2に記載の発明は、請求項1に記載の演算装置であって、前記商決定手段は、前記減算結果が負の場合、前記仮値算出手段により求められた商の仮値より1減算させ、前記被除数に前記除数を加算させる調整手段(例えば、図2の演算部26)を有することを特徴としている。
【0017】
この請求項2に記載の発明によれば、前記仮値算出手段によって求められた仮値が被除数と除数の商として正しくない(即ち、減算手段による減算結果が負)場合に、商決定手段によって正しい商に調整することができる。これにより、被除数及び除数の所定上位桁を抜き出した第2被除数及び第2除数によって除算を行っても、被除数と除数の正確な商を得ることができる。
【0018】
請求項3に記載の発明は、請求項2に記載の演算装置であって、前記減算手段による減算結果で前記被除数を更新し、当該減算結果が負の場合には当該減算結果と前記除数とを加算した値で前記被除数を更新する被除数更新手段(例えば、図2の演算部26)と、前記抜出手段、前記仮値算出手段、前記乗算手段、前記減算手段、前記商決定手段及び前記被除数更新手段を繰り返し実行させる繰り返し手段(例えば、図2の演算部26)と、この繰り返し手段による繰り返し実行において前記商決定手段が順次決定した商を一連とすることにより除算結果を決定する除算結果決定手段(例えば、図2の演算部26)と、を更に備えることを特徴としている。
【0019】
この請求項3に記載の発明によれば、減算手段によって被除数を更新し、繰り返し手段によって抜出手段、仮値算出手段、乗算手段、減算手段、商決定手段及び被除数更新手段を繰り返し実行し、繰り返し実行において決定した商を一連の値とすることにより、当該一連の値を被除数と除数の除算結果とすることができる。従って、繰り返し手段による繰り返し実行により、除算結果の桁数を増加させ、除算を実数で求めるといったことができる。
【0020】
請求項4に記載の発明は、請求項3に記載の演算装置であって、前記除算結果の桁数を設定する設定手段(例えば、図2の演算部26;図3のステップA1)を更に備え、前記繰り返し手段は、除算結果の桁数が前記設定手段によって設定された桁数を満たす場合、繰り返し実行を終了する手段であることを特徴としている。
【0021】
この請求項4に記載の発明によれば、除算結果の桁数を任意に設定可能とすることにより、例えば、除算結果の桁数を少なく設定することにより、演算速度を短縮することができる。
【0022】
また、請求項5に記載の発明のように、請求項1〜4の何れか一項に記載の演算装置であって、前記抜出手段は、前記被除数及び前記除数の上位4桁以内を抜き出す手段(例えば、図2の演算部26)であってもよい。
【0023】
【発明の実施の形態】
以下、図1〜図5を参照して、本発明に係る実施の形態について詳細に説明する。尚、以下においては、本発明を、計算機能を有する関数電卓に適用した場合を例にとって説明するが、本発明が適用可能な実施形態は、これに限定されるものではなく、パソコンやPDA(パーソナルデジタルアシスタント)等、関数電卓以外の各種演算装置にも適用することができる。
【0024】
図1は、関数電卓1の構成を示すブロック図である。同図に示すように、関数電卓1は、CPU(Central Processing Unit)11、入力部12、表示部13、通信制御部14、ROM(Read Only Memory)15、RAM(Random Access Memory)16及び外部記憶メモリ17によって構成されており、各部はバス18によって接続されている。
【0025】
CPU11は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送等を行う。具体的には、CPU11は、入力部12から入力される操作信号に応じてROM15に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、処理結果をRAM16に格納するとともに、当該処理結果を表示するための表示信号を適宜出力して、当該表示信号に対応した表示情報を表示部13に表示させる。
【0026】
またCPU11は、ALU(Arithmetic and Logic Unit)の機能を司る演算回路部200を備える。演算回路部200はP−ROM(Programmable ROM)21を有し、P−ROM21にはマシン語レベルで構成された除算命令ルーチン210等の各種命令語に対する演算ルーチンのプログラムが格納されている。除算命令ルーチン210は除算処理を実現させるための複数の命令で構成されたプログラムである。CPU11は、ROM15から読み出したプログラムに従って処理を実行している際に、当該プログラム中の除算命令を検知すると、除算命令ルーチン210を読み出して、当該ルーチンに従って処理を行う。除算命令ルーチン210についての詳細は後述する。
【0027】
入力部12は、ユーザが数値や演算処理の実行指示等を入力する手段である。そしてユーザに操作されたキーに対応する操作信号がCPU11に出力される。
【0028】
表示部13は、入力部12の操作によって入力された文字や符号、CPU11から出力される表示データに基づいた演算結果やグラフ表示等、関数電卓1を使用するために必要な各種データが表示される部分である。
【0029】
通信制御部14は、外部機器と通信回線網を介して各種データを送受信するためのインターフェースであり、CPU11からの信号によって動作する。
【0030】
ROM15は、各種設定処理、各種演算処理等の関数電卓1の動作に係る各種処理プログラムや、関数電卓1の備える種々の機能を実現するためのアプリケーション等を記憶する。
【0031】
RAM16は、CPU11が実行する各種プログラムや、これらのプログラムの実行にかかるデータ等を一時的に保持するメモリ領域を備える。
【0032】
外部記憶メモリ17は、例えば、メモリカード、ハードディスク等の記憶媒体であって、CPU11からの指示信号に従って、各種データの読み書きを行う。
【0033】
図2は演算回路部200の一例を示す回路ブロック図である。演算回路部200は、P−ROM21、PC(Program Counter)22、アドレス指定部23、メモリ24、命令デコード部25及び演算部26等で構成される。
【0034】
P−ROM21にはマシン語レベルで構成された各種プログラムが格納されている。除算命令ルーチン210は除算機能を実現させるための複数の命令で構成されたプログラムである。除算命令ルーチン210の各命令は、PC22で指定されたアドレスに従って、P−ROM21から読み出されて出力される。
【0035】
アドレス指定部23は、P−ROM21から出力された命令に従ってメモリ24内のアドレスを指定する。そして、メモリ24はアドレス指定部23によって指定されたアドレスに記憶されたデータを出力する。
【0036】
命令デコード部25は、P−ROM21から出力された命令をデコードし、演算部26に出力する。演算部26は命令デコード部25より出力されたデコード結果に従って、メモリ24から出力されたデータを演算する。そして演算結果はメモリ24に出力され、記憶される。
【0037】
図3は、除算命令ルーチン210に従って演算部26が実行する除算処理の動作を被除数X、除数Y、除算結果として変数Zを用いて説明するためのフローチャートである。図3を用いて、除算処理の流れについて説明する。
【0038】
ここで、被除数X、除数Y、変数v及び定数kの値は演算回路部200の外部(例えば、CPU11)から与えられ、メモリ24は被除数X、除数Y、定数k、変数Z、N、D、d、X1及びY1の値を格納するための領域を有していることとする。
【0039】
変数vは、除算結果である変数Zの有効桁数を示す。例えば、変数Zの有効桁数を小さく設定することにより、図3の除算処理におけるステップA5〜ステップA14の繰り返し回数が減少するため、演算時間を短縮することができる。従って、演算精度を落しても演算時間を短縮したい場合は変数vの値を小さくして桁数を少なくし、演算時間を犠牲にしても演算精度を高めたい場合は、変数vの値を大きく設定すればよい。尚、変数vは、ユーザが任意の値を設定可能なように説明するが、演算される除算式の重要度等によってCPU11によって決定されることとしてもよい。
【0040】
演算部26はユーザによって設定された変数vの値をメモリ24に記憶する(ステップA1)。そして各変数値が初期化される。変数Nは減算回数、変数Dは減算回数が除算結果のどの桁に対応するかを示す変数である。演算部26は、変数Z及び変数Nの値を格納するメモリ24の領域に“0”、変数Dの値を格納するメモリ24の領域に“1”を記憶する。
【0041】
また変数dは、ステップA7の減算処理で扱う被除数X及び除数Yに対応する値を決定するための変数である。演算部26は被除数Xの値の桁数から定数kを減算する。そして減算結果を変数dの値を格納するメモリ24の領域に記憶する(ステップA2)。具体的には、例えば被除数Xの値が4桁、定数k=2である場合、4−2=2であるため、メモリ24の変数dに対応する領域には“2”が記憶される。
【0042】
次に、演算部26は被除数Xが“0”であるか否かを判別する(ステップA3)。被除数Xが“0”であれば(ステップA3;Yes)、演算部26は処理を終了する。被除数Xが“0”でない場合(ステップA3;No)、演算部26は被除数Xと除数Yの値を比較する(ステップA4)。被除数Xの値が除数Yの値より小さい場合(ステップA4;No)、演算部26は被除数Xの値を10倍し、10倍した結果を被除数Xの値を格納するメモリ24の領域に記憶する。更に、変数Dの値を1/10し、演算結果を変数Dの値を格納するメモリ24の領域に記憶する(ステップA5)。
【0043】
続いて、演算部26は被除数Xの値から変数dの値分下位桁を切り捨てて、上位桁を抜き出した値を変数X1の値を格納するメモリ24の領域に記憶する。更に、除数Yの値から変数dの値分下位桁を切り捨てて、上位桁を抜き出した値を変数Y1の値を格納するメモリ24の領域に記憶する(ステップA6)。即ち、変数X1及び変数Y1は、被除数X及び被除数Yのk桁目以上を抜き出した値となる。
【0044】
具体的には、被除数Xが4桁、変数dが“2”の場合、被除数Xの値の下2桁が切り捨てられ、上位2桁が変数X1として記憶される。つまり、被除数Xが“5678”、変数dが“2”の場合、被除数Xの値の下2桁が切り捨てられ、“56”が変数X1として記憶される。
【0045】
続いて、演算部26は変数X1の値から変数Y1の値を減算し、当該減算結果を変数X1の値を格納するメモリ24の領域に記憶する(ステップA7)。そして演算部26は被除数Xの値が“0”以上であるか否かを判別する。“0”以上の場合(ステップA8;Yes)、演算部26は変数Nの値に1加算して、加算結果を変数Nの値を格納するメモリ24の領域に記憶する(ステップA9)。
【0046】
被除数Xの値が“0”より小さい場合(ステップA8;No)、演算部26は被除数Xの値から除数Yの値と変数Nの値との乗算結果を減算する。そして当該減算結果を被除数Xの値を格納するメモリ24の領域に記憶する(ステップA10)。
【0047】
次に演算部26は変数Xの値が“0”より小さいか否かを判別する(ステップA11)。“0”より小さい場合(ステップA11;Yes)、演算部26は被除数Xの値に除数Yを加算し、当該加算結果を被除数Xの値を格納するメモリ24の領域に記憶する。更に、変数Nの値から1減算し、当該減算結果を変数Nの値を記憶するメモリ24の領域に記憶する(ステップA12)。
【0048】
次に演算部26は変数Nの値と変数Dの値を乗算した結果に変数Zの値を加算し、当該加算結果を変数Zの値を格納するメモリ24の領域に記憶する(ステップA13)。
【0049】
続いて演算部26は変数Zの値が変数vの示すの桁数を満たしているか否かを判断する(ステップA14)。変数Zの値が変数vの示す桁数を満たしていない場合(ステップA14;No)、演算部26は変数Nの値を格納するメモリ24の領域に“0”を記憶する(ステップA15)。その後、ステップA5からの処理が繰り返される。変数Zの値が変数vの示すの桁数を満たしている場合(ステップA14;Yes)、処理を終了する。
【0050】
以下“567890÷123456”の演算結果を求める場合を例に挙げ、図3に示した除算命令ルーチン210に従った除算処理の流れについて、各変数の値が格納されているメモリ領域のデータ内容と共に図4及び5を参照しながら詳しく説明する。
【0051】
CPU11はROM15に格納されているプログラムの命令に従って各種処理の実行中に“567890÷123456”の演算を行う命令を検知すると、当該演算を除算命令ルーチン210の命令に従って実行する。まず第1処理として、メモリ24に変数X、Y及び定数kの値が格納されるメモリ領域が確保される。変数Xの値を格納する領域を領域41、変数Yの値を格納する領域を領域42、定数kの値を格納する領域を領域43とする。
【0052】
以下、変数kの値を“3”として説明する。従って、領域41には“567890”、領域42には“123456”、領域43には“3”が記憶される。更に図示していないが、任意に設定された変数vの値が記憶される(図3の除算処理のステップA1に該当)。
【0053】
次に第2処理として、各種変数が初期化される。メモリ24には変数Z、N、D及びdの値が格納されるメモリ領域が確保される。変数Zの値を格納する領域を領域44、変数Nの値を格納する領域を領域45、変数Dの値を格納する領域を領域46、変数dの値を格納する領域を領域47とする。領域44及び45には“0”、領域46には“1”が記憶される。更に、領域47には変数Xの値の桁数が“6”、変数kの値が“3”であるから、“6−3”の減算結果である“3”が記憶される(図3の除算処理のステップA2に該当)。
【0054】
続いて、変数Xの値が“0”か否かが判別されるが(図3の除算処理のステップA3に該当)、領域41に格納されている値は“0”ではないため、変数Xの値が変数Yの値以上であるか否かが判別される(図3の除算処理のステップA4に該当)。変数Yの値より変数Xの値は大きいため、第3処理としてメモリ24に変数X1及びY1の値を格納するための領域が確保される。ここで変数X1の値を格納する領域を領域48、変数Y1の値を格納する領域を領域49とする。そして領域48には変数Xの値の下3桁を切り捨てて、上位桁を抜き出した値、即ち“567”が、領域49には変数Yの値の下3桁を切り捨てて、上位桁を抜き出した値、即ち“123”が記憶される(図3の除算処理のステップA6に該当)。
【0055】
次に第4処理として、“X1−Y1”即ち“567−123”の減算結果である“444”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“1”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0056】
第5処理として、“X1−Y1”即ち“444−123”の減算結果である“321”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“2”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0057】
第6処理として、“X1−Y1”即ち“321−123”の減算結果である“198”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“3”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0058】
第7処理として、“X1−Y1”即ち“198−123”の減算結果である“75”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“4”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0059】
第8処理として、“X1−Y1”即ち“75−123”の減算結果である“−48”が領域48に記憶される(図3の除算処理のステップA7に該当)。ここで変数X1は“0”より小さい値である。従って、第9処理として、“X−Y×N”即ち“567890−123456×4”の演算結果である“74066”が領域41に記憶される(図3の除算処理のステップA10に該当)。
【0060】
そして、変数Xが“0”より小さい値であるか否かが判別される(図3の除算処理のステップA11に該当)。変数Xの値は“0”以上であるため、第10処理として“Z+N×D”即ち“0+4×1”の演算結果である“4”が領域44に記憶される(図3の除算処理のステップA13に該当)。
【0061】
そして、変数Zの値が変数vの示す桁数を満たしているか否かが判別され(図3の除算処理のステップA14に該当)、満たしていなければ第11処理として“0”が領域45に記憶される(図3の除算処理のステップA15に該当)。
【0062】
続いて、第12処理として、“X×10”即ち“74066×10”の乗算結果である“740660”が領域41に記憶される。更に、“D×1/10”即ち“1×1/10”の乗算結果である“0.1”が領域46に記憶される(図3の除算処理のステップA5に該当)。
【0063】
そして第13処理として、領域48には変数Xの値の下3桁を切り捨てた値、即ち“740”が、領域49には変数Yの値の下3桁を切り捨てた値、即ち“123”が記憶される(図3の除算処理のステップA6に該当)。
【0064】
次に第14処理として、“X1−Y1”即ち“740−123”の減算結果である“617”が領域48に記憶される(図3の除算処理のステップA7に該当)。変数X1の値は“0”以上であるから、変数Nの値に1加算された値“1”が領域45に記憶される(図3の除算処理のステップA9に該当)。
【0065】
以下、第14処理と同様に、第15〜第19処理においても“X1−Y1”の演算と変数Nの値に1加算する演算が繰り返される。
【0066】
そして、第20処理として、“X1−Y1”即ち“2−123”の減算結果である“−121”が領域48に記憶される(図3の除算処理のステップA7に該当)。ここで変数X1は“0”より小さい値である。従って、第21処理として、“X−Y×N”即ち“740660−123456×6”の演算結果である“−76”が領域41に記憶される(図3の除算処理のステップA10に該当)。
【0067】
変数Xの値が“0”より小さいか否かが判別される(図3の除算処理のステップA11に該当)。変数Xは“0”より小さい値であるため、第22処理として、変数X及びNの値が変更される。つまり、“X+Y”即ち“−76+123450”の加算結果“123380”が領域41に記憶される。更に“N−1”即ち“6−1”の減算結果“5”が領域45に記憶される(図3の除算処理のステップA12に該当)。
【0068】
そして、第23処理として、“Z+N×D”即ち“4+5×0.1”の演算結果である“4.5”が領域44に記憶される(図3の除算処理のステップA13に該当)。
【0069】
続いて、変数Zの値が変数vの値の示す桁数を満たしているか否かが判別され(図3の除算処理のステップA14に該当)、満たしていなければ“0”が領域45に記憶され(図3の除算処理のステップA15に該当)、満たしていれば除算処理は終了する。
【0070】
更に、CPU11の備えるP−ROM200に除算命令ルーチン210を記憶させれば、本実施の形態を実現するための特別な回路は必要ない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0071】
以上、本発明を適用した実施の形態を説明したが、本発明は上述の実施の形態についてのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0072】
例えば、上述した実施の形態の演算例として、被除数X及び除数Yを自然数とした”567890÷123456”の例を説明したが、被除数X、除数Y及び変数Zの値は自然数に限らず、仮数部及び指数部を含むものであってもよい。例えば、有効桁数を4桁として被除数Xを”5.678×105”とし、除数Yを”1.234×105”としてもよい。この場合、変数X1及び変数Y1それぞれに代入する被除数X及び除数Yの上位桁の数が有効桁数となる。
【0073】
また、演算回路部200の演算処理幅に応じて、変数X1及び変数Y1それぞれに代入する被除数X及び除数Yの上位桁を決定してもよい。例えば、演算回路部200が16ビットでの演算を行う回路であり、被除数や除数の数値がBCDコード化され、1桁4ビットで表される場合には、4桁(=16ビット幅/4ビット)を単位として除算処理を行うのが好適である。従って、図3の除算処理のステップA6において、被除数X及び除数Yの小数点を基準に4桁ずつ区切った、上位4桁以内の値(例えば、”123456”であれば”12”)を変数X1及び変数Y1にそれぞれ代入するようにしてもよい。特に、CPUの演算処理幅は2nビットであり、BCDコード化された1桁4ビットの数値を扱う場合には、4桁を単位として除算処理を行うのは好適である。
【0074】
【発明の効果】
請求項1又は6に記載の発明によれば、被除数及び除数の所定上位桁を抜き出して第2被除数及び第2除数とすることにより、第2被除数及び第2除数の桁数が被除数及び除数の桁数以下となるため、仮値算出手段において第2被除数から第2除数を繰り返し減算する際の演算時間を短縮することができる。従って、除算演算の演算速度を短縮することができる。
【0075】
更に、本来の演算装置に備わっている加減算器及び乗算器を用いて除算演算を実行可能なため、特別な回路を設置する必要がない。従って、新たに回路等を設計する必要がなく、簡単に除算演算の演算時間を短縮させることができる。
【0076】
請求項2に記載の発明によれば、前記仮値算出手段によって求められた仮値が被除数と除数の商として正しくない(即ち、減算手段による減算結果が負)場合に、商決定手段によって正しい商に調整することができる。これにより、被除数及び除数の所定上位桁を抜き出した第2被除数及び第2除数によって除算を行っても、被除数と除数の正確な商を得ることができる。
【0077】
請求項3に記載の発明によれば、減算手段によって被除数を更新し、繰り返し手段によって抜出手段、仮値算出手段、乗算手段、減算手段、商決定手段及び被除数更新手段を繰り返し実行し、繰り返し実行において決定した商を一連の値とすることにより、当該一連の値を被除数と除数の除算結果とすることができる。従って、繰り返し手段による繰り返し実行により、除算結果の桁数を増加させ、除算を実数で求めるといったことができる。
【0078】
請求項4に記載の発明によれば、除算結果の桁数を任意に設定可能とすることにより、例えば、除算結果の桁数を少なく設定することにより、演算速度を短縮することができる。
【図面の簡単な説明】
【図1】関数電卓の内部構成を示すブロック図。
【図2】演算回路部の回路ブロック図の一例を示す図。
【図3】除算処理の動作を説明するためのフローチャート。
【図4】例題を用いて除算処理の流れについて説明するための図。
【図5】図4に続く、例題を用いて除算処理の流れについて説明するための図。
【図6】従来の除算処理の動作を説明するためのフローチャート。
【符号の説明】
1 関数電卓
11 CPU
200 演算回路部
21 P−ROM
210 除算命令ルーチン
22 PC
23 アドレス指定部
24 メモリ
25 命令デコード部
26 演算部
12 入力部
13 表示部
14 通信制御部
15 ROM
16 RAM
17 外部記憶メモリ
Claims (6)
- 加減算器及び乗算器を用いて除算を実現する演算装置において、
被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出手段と、
前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出手段と、
この仮値算出手段により求められた仮値と前記除数とを前記乗算器で乗算させる乗算手段と、
前記被除数から前記乗算手段による乗算結果を前記加減算器に減算させる減算手段と、
この減算手段による減算結果の正負に基づき前記仮値算出手段により求められた商の仮値を商として決定する商決定手段と、
を備える演算装置。 - 前記商決定手段は、前記減算結果が負の場合、前記仮値算出手段により求められた商の仮値より1減算させ、前記被除数に前記除数を加算させる調整手段を有することを特徴とする請求項1に記載の演算装置。
- 前記減算手段による減算結果で前記被除数を更新し、当該減算結果が負の場合には当該減算結果と前記除数とを加算した値で前記被除数を更新する被除数更新手段と、
前記抜出手段、前記仮値算出手段、前記乗算手段、前記減算手段、前記商決定手段及び前記被除数更新手段を繰り返し実行させる繰り返し手段と、
この繰り返し手段による繰り返し実行において前記商決定手段が順次決定した商を一連とすることにより除算結果を決定する除算結果決定手段と、
を更に備えることを特徴とする請求項2に記載の演算装置。 - 前記除算結果の桁数を設定する設定手段を更に備え、
前記繰り返し手段は、前記除算結果の桁数が前記設定手段によって設定された桁数を満たす場合、繰り返し実行を終了する手段であることを特徴とする請求項3に記載の演算装置。 - 前記抜出手段は、前記被除数及び前記除数の上位4桁以内を抜き出す手段であることを特徴とする請求項1〜4の何れか一項に記載の演算装置。
- 加減算器及び乗算器が実装されたコンピュータに、
被除数及び除数の所定上位桁を抜き出し、第2被除数及び第2除数とする抜出機能と、
前記加減算器で前記第2被除数から前記第2除数を繰り返し減算させることにより商の仮値を求める仮値算出機能と、
この仮値算出機能により求められた仮値と前記除数とを前記乗算器で乗算させる乗算機能と、
前記被除数から前記乗算機能による乗算結果を前記加減算器に減算させる減算機能と、
この減算機能による減算結果の正負に基づき前記仮値算出機能により求められた商の仮値を商として決定する商決定機能と、
を実現させることにより除算を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003102963A JP2004310432A (ja) | 2003-04-07 | 2003-04-07 | 演算装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003102963A JP2004310432A (ja) | 2003-04-07 | 2003-04-07 | 演算装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004310432A true JP2004310432A (ja) | 2004-11-04 |
Family
ID=33466252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003102963A Abandoned JP2004310432A (ja) | 2003-04-07 | 2003-04-07 | 演算装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004310432A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009536409A (ja) * | 2006-05-05 | 2009-10-08 | クゥアルコム・インコーポレイテッド | 精度制御反復算術論理演算ユニット |
-
2003
- 2003-04-07 JP JP2003102963A patent/JP2004310432A/ja not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009536409A (ja) * | 2006-05-05 | 2009-10-08 | クゥアルコム・インコーポレイテッド | 精度制御反復算術論理演算ユニット |
JP2012022691A (ja) * | 2006-05-05 | 2012-02-02 | Qualcomm Inc | 精度制御反復算術論理演算ユニット |
US9146706B2 (en) | 2006-05-05 | 2015-09-29 | Qualcomm Incorporated | Controlled-precision iterative arithmetic logic unit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3447634B1 (en) | Non-linear function computing device and method | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
JP2019057249A (ja) | 演算処理装置および演算処理方法 | |
KR20150079389A (ko) | 부동 소수점 수를 정수로 변환하기 위한 전자 장치 및 시스템, 및 그것의 작동 방법 | |
US8868633B2 (en) | Method and circuitry for square root determination | |
AU2017330184A1 (en) | Piecewise polynomial evaluation instruction | |
JP4273071B2 (ja) | 除算・開平演算器 | |
US20090013022A1 (en) | Multiplier Engine Apparatus and Method | |
CN115827555A (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
JP2004310432A (ja) | 演算装置及びプログラム | |
JPS5939774B2 (ja) | 指数関数の演算方式 | |
CN115269003A (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
JP2000148447A (ja) | 乗算器及びその演算方法 | |
CN108229668B (zh) | 基于深度学习的运算实现方法、装置和电子设备 | |
WO1999067704A1 (fr) | Systeme de division utilisant une memoire de faible capacite | |
JP2006023974A (ja) | 剰余演算処理装置及び剰余演算処理方法 | |
TWI701576B (zh) | 盲人計算機的實施方法與電腦程式產品 | |
JPH0831024B2 (ja) | 演算プロセッサ | |
SHARMA et al. | Development of Library Components for Floating Point Processor. | |
JP5305392B2 (ja) | Iqデータの二乗和ルート計算手段 | |
Meyer-Baese et al. | Design of the P ico B laze Softcore Microprocessor | |
JP2010033275A (ja) | データ処理方法及びデータ処理プロセッサ | |
Natarajan et al. | Arithmetic Operations and Circuits | |
Daniel et al. | A Methodology for Improvement of RoBa Multiplier for Electronic Applications | |
JP2004078886A (ja) | 浮動小数点格納方法及び浮動小数点演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060310 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090113 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090218 |