(57)【要約】【課題】  簡単な演算の繰り返しで対数の精密な算出をするプログラムを提供する。【解決手段】  常用対数以外の対数の場合は底を変換すればよいので、常用対数を算出する手段を説明する。まず、真数とする数として与えられた与数を正規化表現する。そして、以後、仮数部に入る数を１０乗して正規化表現することを繰り返す。二回目以降の正規化表現の際に小数点が移動して飛び越えた位の個数を、順に小数点以下第一位、同第二位、同第三位、…にそれぞれ入る数字とし、整数部分は０として得た数に、前記与数が１より大きい場合は最初の正規化表現の際に小数点が左に移動して飛び越えた位の個数を加え、１より小さい場合には、右に移動して飛び越えた位の個数においての符号を負として得た数を加えて算出することを特徴とする。【特許請求の範囲】
【請求項１】
真数とする数として与えられた与数が１より大きい場合は、前記与数を正規化表現し、その際に小数点が左に移動したときは飛び越えた位の個数である越位数を整数部分とし、移動しないときには整数部分を０とし、前記与数を正規化表現して仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数である第一越位数が小数点以下第一位に入る数字とし、直近の正規化表現後に仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数である第二越位数が小数点以下第二位に入る数字とし、以後、直近の正規化表現後に仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数が、前回の越位数が入る位より一つ下位の位に入る数字として得た数を、前記与数の常用対数として算出し、０より大きく１より小さい場合には、前記与数を正規化表現し、その際に小数点が右に移動して飛び越えた位の個数における符号を負とし得た越位数から、整数部分を０とし、前記与数を正規化表現して仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数である第一越位数が小数点以下第一位に入る数字とし、直近の正規化表現後に仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数である第二越位数が小数点以下第二位に入る数字とし、以後、直近の正規化表現後に仮数部に入る数を１０乗して正規化表現し、その際に小数点が移動して飛び越えた位の個数が、前回の越位数が入る位より一つ下位の位に入る数字として得た数を引いた差を、前記与数を真数とする常用対数として算出し、前記与数が１の場合には、前記与数を真数とする常用対数として０を算出することを特徴とするプログラム。
【請求項２】
常用対数以外の対数の計算をするにあたって、底を変換して分子に入る数と分母に入る数のいずれも常用対数とする分数に換え、前記分数の分子に入る常用対数と分母に入る常用対数をそれぞれ算出して求める常用対数を算出することを特徴とする請求項１に記載のプログラム。
【請求項３】
入力された１０進数を１０進数以外のｐ進数に変え、ｐを基数として正規化表現し、ベキの計算にあたってはｐ乗し、算出されたｐ進数の数値を１０進数に変えて表示することを特徴とする請求項１に記載のプログラム。
【請求項４】
１０乗又はｐ乗の計算をするにあたって、必要に応じて底の入れ替えをし、二つの数の乗算を繰り返してベキの計算をすることを特徴とする請求項１又は請求項３に記載のプログラム。
【請求項５】
必要に応じて切り下げをして下限を算出し、前記下限の整数部分が０か否かにかかわらず最高位から下位に向かって数えて許容桁数と同数の桁数に四捨五入して算出することを特徴とする請求項１又は請求項３に記載のプログラム。
【請求項６】
必要に応じて切り下げをして下限を算出し、前記下限の整数部分が０か否かにかかわらず最高位から下位に向かって数えて許容桁数と同数の桁数に四捨五入して算出することを特徴とする請求項４に記載のプログラム。
【請求項７】
許容桁数より１小さい数と同数の桁数に四捨五入して算出することを特徴とする請求項６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ベキ計算と正規化表現を繰り返して対数の算出を行うプログラムに関するものである。
【背景技術】
【０００２】  従来は、対数の算出をするために複雑な演算を行っていた。
【発明の概要】
【発明が解決しようとする課題】
【０００３】  複雑な演算をせずに簡単な演算の繰り返しで対数の精密な算出値を得られるプログラムを提供する。
【課題を解決するための手段】
【０００４】  まず、常用対数を算出する手段を説明する。請求項１に記載のプログラムの説明である。【０００５】  まず、真数とする数として与えられた与数を正規化表現する。正規化表現する際に小数点が移動して飛び越えた位の個数を越位数と呼ぶとする。その際の越位数を初期越位数と呼ぶとする。その際の正規化を初期正規化と呼ぶとする。初期越位数は整数である。初期越位数の正負の符号は、小数点を左に移動した場合は正とし、右に移動した場合には負とし、そして移動しない場合には０とする。前記与数を正規化表現して指数部に入る数と初期越位数は等しい。【０００６】  次いで、初期正規化をして仮数部に入る数の１０乗を算出し、その結果を正規化表現する。その際の正規化表現を第一正規化と呼ぶとする。その際の越位数を第一越位数と呼ぶとする。【０００７】  続けて、第一正規化をして仮数部に入る数の１０乗を算出し、その結果を正規化表現する。以下、仮数部に入る数の１０乗を算出して正規化表現することを繰り返す。それらの正規化表現を、第一正規化から順に第一正規化、第二正規化、第三正規化、…とそれぞれ呼ぶとする。そして、それぞれの正規化表現の際の越位数を第一越位数、第二越位数、第三越位数、…とそれぞれ呼ぶとする。それらは、整数部分が一桁の数を１０乗した結果によるものだから、それらはすべて０以上９以下の自然数である。１０乗して得られる各々の結果を各々正規化表現して各々の指数部に入る数と対応する初期越位数は各々等しい。【０００８】  まず、１より大きい数を真数とする常用対数を算出する手段を説明する。【０００９】  初期越位数は求める常用対数の整数部分と等しい。第一越位数、第二越位数、第三越位数、…は求める常用対数の小数点以下第一位、同第二位、同第三位、…にそれぞれ入る数字とそれぞれ一致する。つまり、初期越位数を整数部分とし、第一越位数、第二越位数、第三越位数、…をこの順に小数点以下第一位、同第二位、同第三位、…にそれぞれ入る数字として得られる数は、求める常用対数と等しい。【００１０】  例えば８８８を真数とする常用対数を求めるときで、第十二越位数まで算出すると、つまり小数点以下第十二位まで算出すると、初期越位数は２、第一越位数、第二越位数、第三越位数、…、第十二越位数はそれぞれ９、４、８、４、１、２、９、６、５、７、７、８だから、下記の数式１の結果が得られる。【００１１】
【数１】
2016006697.tif 000002
【００１２】  次に、１より小さい数を真数とする常用対数を算出する手段を説明する。【００１３】  真数とする数として与えられた与数は０より大きいことが条件であるため、前記与数は０より大きく１より小さい数である。初期越位数は負の整数である。この場合には、整数部分を初期越位数でなく０とし、第一越位数、第二越位数、第三越位数、…をそれぞれ小数点以下第一位、同第二位、同第三位、…に入る数字として得られる０より大きく１より小さい正の小数と、初期越位数の和が、求める常用対数と等しい。なお、１より大きい数を真数とする場合においても、同様にして得た和が求める常用対数と等しいことに変わりはない。【００１４】  真数とする数として与えられた与数が１より小さい場合の一例として、例えば０．０１２を真数とする常用対数のときで、第六越位数まで算出すると、初期越位数は−２で、第一越位数、第二越位数、第三越位数、…、第六越位数はそれぞれ０、７、９、１、８、１だから、下記の数式２により、０．０１２を真数とする常用対数、すなわちｌｏｇ１０  ０．０１２の数値は、−１．９２０８１８…と算出する。【００１５】
【数２】
2016006697.tif 000003
【００１６】  １を真数とする場合には、初期越位数は０である。それに加えて、第一越位数、第二越位数、第三越位数、…は、無限に０が続く。つまり、上記のいずれの手段で算出しても、得られる結果は０である。これは、１を真数とする常用対数ｌｏｇ１０  １の数値０と等しい。１を真数とする場合は、本プログラムの手段を用いるまでもないが、勿論、本プログラムの手段を用いて得られる結果は、それに反しない。なお、許容桁数の制約の下で切り下げ又は切り上げを行って算出し、その結果として、第ｉ正規化をして仮数部に入る数がちょうど１となれば、その時点で終了する。そして、小数点以下第ｉ＋１位及びそれより下位の位に入る数字はすべて０として算出する。つまり、そのときの算出値は小数点以下第ｉ位までの数値として算出する。【００１７】  以上に説明したようにして、常用対数を算出する。【００１８】  以下、常用対数以外の対数を算出する手段を説明する。請求項２に記載のプログラムの説明である。【００１９】  底を変換する下記の数式３を利用して、常用対数以外の対数も算出する。実際には上記の手段を用いて得られる常用対数の算出値を利用するものであり、同式中のｌｏｇ１０  ｖとｌｏｇ１０  ｕを上記の手段でそれぞれ算出し、前者の算出値を後者の算出値で除する。このようにして、実際には常用対数の算出を行うものの、常用対数以外の対数の算出も可能である。【００２０】
【数３】
2016006697.tif 000004
【００２１】  １０を底とする常用対数を許容桁数が１２の電子計算機で請求項２に記載のプログラムの手段を用いて算出した数値の誤差は大きめにみても２×１０−１０％未満で、ｌｏｇｕ  ｖにおいての数式３を用いて算出した数値の誤差も、大きめに見てもその程度である。なお、ｌｏｇｕ  ｖの算出値の誤差率は、底の変換の結果として行う除算によってｌｏｇ１０  ｕの誤差率とｌｏｇ１０  ｖの誤差率のいずれもより大きいとは限らない。むしろ、それらの一方より大きく、他方より小さいケースが多いようである。【００２２】  数式３においての下限と上限をそれぞれ算出するにあたって、確実に下限は真の数値より小さく、上限は真の数値より大きくするために、下限の算出にあたっては被除数ｌｏｇ１０  ｖの下限を、除数ｌｏｇ１０  ｕの上限で除して切り下げ、逆に、上限の算出にあたっては被除数ｌｏｇ１０  ｖの上限を、除数ｌｏｇ１０  ｕの下限で除して切り上げればよい。なお、本プログラムで演算するにあたって、許容桁数を越えると、切り捨てて、すなわち切り下げて算出するとする。許容桁数とは、最高位に入る数字が０か否かにかかわらず最高位から下位に向かって数えた桁数とする。【００２３】  ただし、分子に入る数と分母に入る数の少なくとも一方が負数の場合は以下に説明するようにして計算すれば、確実に真の数値より小さい数値及び真の数値より大きい数値を得られる。【００２４】  分子に入る数と分母に入る数のいずれも負数のときは、下限と上限のいずれの算出においても、被除数と除数の下限と上限を上記のときとそれぞれ逆にして算出すればよい。つまり、下限の算出にあたっては被除数ｌｏｇ１０  ｖの上限を、除数ｌｏｇ１０  ｕの下限で除して切り下げ、逆に、上限の算出にあたっては被除数ｌｏｇ１０  ｖの下限を、除数１ｏｇ１０  ｕの上限で除して切り上げればよい。【００２５】  いずれか一方のみが負数のときには、分子と分母のいずれに前記負数が入るかにより異なる。前記負数が分子に入るときには、下限の算出にあたっては分子に入る数と分母に入る数はそれぞれ下限で、上限の算出にあたっては分子に入る数と分母に入る数はそれぞれ上限とすればよい。他方の分母に入るときには、下限の算出にあたっては分子に入る数と分母に入る数値はそれぞれ上限で、上限の算出にあたっては分子に入る数と分母に入る数はそれぞれ下限とすればよい。【００２６】  切り下げや切り上げについては、いずれか一方のみが負数のときには、下限の算出にあたっては算出値の絶対値が大きくなるように行い、上限の算出にあたってはその逆を行えばよい。【００２７】  ただし、例えば許容桁数が１２の場合、ｕの値が１．００００００００００１のケースと０．９９９９９９９９９９９のケースは、ｌｏｇ１０  ｕを本プログラムを用いて許容桁数と同数の上位の桁数で算出すると０と算出される。そこで、前者のケースではｌｏｇ１０  ｖを本プログラムを用いて算出した数値に１０００００を乗じた積を０．０００００４３４２９で除して算出し、若しくは後者のケースではｌｏｇ１０  ｖを本プログラムを用いて算出した数値に１０００００を乗じた積を−０．０００００４３４２９で除して算出し、又はエラー表示を出す。【００２８】  なお、許容桁数が１２の場合であれば、入力し得る数値は１０１２より小さいから、ｌｏｇ１０  ｖの数値に１０００００を乗じた積の整数部分の桁数は最大で７であって、許容桁数を越えることはない。許容桁数は１２と限らず含む偶数で２ｊの場合には、少なくとも許容桁数が数十程度までのときは、許容桁数を２で除した商から１を引いた差、すなわちｊ−１を指数とする１０のベキを、ｌｏｇ１０  ｖを本プログラムを用いて算出した数値に乗じればよく、その積の整数部分の桁数が許容桁数を越えることはない。ｊの値は４以上の自然数とする。【００２９】  そして、ｕの値の最高位に入る数字が０か否かにかかわらず最高位から下位に向かって数えた桁数が許容桁数と同数で１．０００…０１のケースと０．９９９…９のケースは、ｌｏｇ１０  ｕをそれぞれ本プログラムの手段を用いてそれぞれ算出すると、小数点以下第一位から下位に向かって数えた桁数が許容桁数に１を加えた和と等しい位に０以外の数字が入る。これが、最高位から下位に向かってみて０以外の数字がはじめて現れる位である。そして、前記位から下位に向かって数えてｊ−１番目の位までの算出値で、前記積を除して数式３の数値を得ればよい。
【発明の効果】
【００３０】  複雑な演算を要せず、単純な演算の繰り返しで対数の精密な算出値を得られる。
【発明を実施するための最良の形態】
【００３１】  請求項３に記載のプログラムは、入力する数及び算出値として表示する数値は１０進数であるが、演算する際には１０進法以外のｐ進法で演算するものである。ｐの値は１０以外の２以上の自然数とする。ほとんどすべての電子計算機は、ｐの値は２や８、１６などの２のベキ乗数である。入力された１０進数をｐ進数に変えて演算し、算出されたｐ進数の数値を１０進数の数値に変えて表示する。【００３２】  ｐ進法で演算する具体的手段は、１０進法で演算するときと基本的には変わらないが、用いる数がｐ進数であること以外に以下に説明する点が異なる。【００３３】  １０でなくｐを基数として正規化表現する。又、ベキ計算にあたっては１０乗でなく、ｐ乗する。つまり、１０をｐに置き換える。ただし、１０進法ではｐと表記されるが、ｐ進法においては１０と表記される。それがｐ進数であることを明示するために、１０ｐと表記することもある。第一越位数、第二越位数、第三越位数、…はそれぞれ０以上ｐ−１以下の整数であり、たとえｐの値が１０進法においては二桁以上のどんな値であっても、ｐ進法においてはｐ−１は一桁の自然数である。底を変換する際にも、ｐを底とする。つまり、数式３の分子に入る対数と分母に入る対数のいずれにおいてもｐを底として底の変換をする。【００３４】  例えば、ｐの値が８のとき、つまり８進法で演算するとき、以下に説明するようにして算出する。【００３５】  初期正規化する際、１０でなく８を基数とする。そして、初期正規化をして仮数部に入る数を１０乗でなく、８乗して正規化表現する。その際にも８を基数とする。８乗の８及び基数８は、勿論、ｐの値と等しい。それ以後もすべて８乗して正規化表現することを繰り返す。以上に説明したように、１０乗する代わりに８乗すること及び８を基数とすることを除けば変わらない。第一越位数、第二越位数、第三越位数、…はそれぞれ０以上７以下の自然数のいずれかである。最大値７は、ｐの値から１を引いた差と等しい。【００３６】  ただし、繰り返すが、１０進法においての８は、８進法においては１０あるいは１０８と表記することに留意する。底を変換する際にも、８を底とする。【００３７】  以下、請求項４に記載のプログラムついて説明する前に電子計算機のベキ計算について説明する。【００３８】  １０乗のベキ計算をするとき、一度に１０個の数を乗じるのではなく、例えば、まず平方を計算し、次に立方を計算し、以後、一つずつ乗算を行いながら指数を１ずつ増加し、そして例えば５乗した時点で、算出した５乗を底とする平方のベキ計算をして１０乗のベキ計算を行い、常に二つの数の乗算を行う手段をとると、ベキ計算の機能を備えていなくても、ベキ計算ができる。最後の計算では指数が５から１０に増加するものの、底を入れ替えたとしてみると、二つの数の乗算とみなすことができる。請求項４に記載のプログラムは、この手段でｐ乗のベキ計算をすることを特徴とする。ｐの値が２以外の２のベキ乗数のとき、まず平方を算出し、その結果を次のベキ計算の底として平方を算出し、以後、底を切り替えて平方を算出することを繰り返し、全部で、指数とする数として与えられた数と同数の回数繰り返す。【００３９】  ただし、ｐの値が２のときは、この手段を用いても、メリットはない。又、ｐの値が２以外の２のベキ乗数のときも同様に、メリットはない。なお、繰り返すが、請求項４などに記載のプログラムでこの手段でｐ乗のベキ計算をするにあたって、途中の各結果においての最高位が０か否かにかかわらず最高位から下位に向かって数えた桁数が許容桁数を越えると、切り捨てるとする。上限を得るときには、途中の各結果のうちで許容桁数を越えたるたびに、逆に切り上げるとする。【００４０】  請求項３に記載のプログラムと比較して誤差率は若干大きくなるものの、特にベキ計算機能を備えなくても、ベキ計算ができ、対数の精密な算出ができる。実際、ベキの計算機能を特に備えず、かつ許容桁数が、通常、大きくても１２までの制約がある一般的な電子計算機、いわゆる電卓等を用いた手計算でも、対数の精密な計算ができる。一般的な電子計算機でも、許容桁数が１２のものを用いて、入力可能な数を真数とする限りでは、ほとんどのケースで上位十桁以上の数字を確定できる。その具体的な算出手段は、出願日が２０１４年４月１日で出願番号が特願２０１４−０８５９０３の特許願を参照してほしい。【００４１】  以下、本プログラムで対数を算出できることを簡単に説明する。ただし、常用対数以外の対数は底を変換すればよいから、常用対数を算出するとして説明する。【００４２】  本手段は、例えば８８８を真数とする常用対数の場合、８８８を初期正規化し、以後、仮数部に入る数を１０乗して正規化表現することを繰り返すが、以下の説明にあたっては、特に断りがない限り、許容桁数を１２とし、１０乗するにあたっては請求項４に記載のプログラムと同様に常に二数を乗じることを繰り返すことを前提とする。１０乗のベキ計算をするための具体的な手順として、まず指数を１ずつ増加して５乗を算出し、その結果を底として、つまり底を入れ替えて平方することを前提とする。ただし、１０進法を用いて演算するとして説明する。【００４３】  ベキ計算をするにあたって、必要に応じて切り下げと切り上げをそれぞれ行って下限と上限をそれぞれ算出し、指数の計算を適切に行うと、下記の数式４が得られる。初期越位数は２である。第十二越位数まで算出すると、第一越位数、第二越位数、第三越位数、…、第十二越位数はそれぞれ２、９、４、８、４、１、２、９、６、５、７、７、そして８である。繰り返すが、本願で用いる電子計算機の許容桁数は、整数部分が０であるか否かにかかわらず最高位から下位に向かって数えた桁数とする。そして、ベキ計算の途中で得られる数値も含めて、算出値においての同様にして数えた桁数が許容桁数を越えると、特に断りがない限り、切り捨てて、つまり切り下げて算出するとする。【００４４】
【数４】
2016006697.tif 000005
【００４５】  そして、数式４の各辺の常用対数をそれぞれとって整理すると、下記の数式５が得られる。【００４６】
【数５】
2016006697.tif 000006
【００４７】  数式５の第一辺中と第三辺中のそれぞれの第二項のそれぞれの分子に入る数はそれぞれ０より大きく１０−１１より小さいから、下記の数式６が成り立つ。そして、上限を算出する際に一度でも切り上げを行う必要があったことに着目し、又、上限であることを示す数式６の第二辺と第三辺の間にある不等号は等号がつく「≦」でなく「＜」であることから、小数点以下第十二位に入る数字は８であると確定される。逆に言えば、第十二越位数は８であるが、この算出においては最後の越位数だから、数式６においての上限における小数点以下第十二位に入る数字は８でなく、８に１を加えた和９とする。つまり、切り上げる。【００４８】
【数６】
2016006697.tif 000007
【００４９】  ところが、もし、数式４に相当する数式において、下限の算出のときと上限の算出のときとで越位数がはじめて異なるときで、上限の算出の際に正規化する代わりに、下限の算出の際の越位数を指数とする１０のベキ乗数で仮数部に入る数を除した商を仮数部に入る数として得たときの数式が、下記の数式７のような結果になれば、つまり下限の仮数部に入る数が１以上１０未満の一方で、上限の指数部に入る数が下限のそれと等しく、かつ仮数部に入る数が１０より大きければ、常用対数ｌｏｇ１０  ｘの小数点以下第四位に入る数字を確定できない。ただし、もし数式７に相当する数式においての上限の仮数部に入る数がちょうど１０であれば、上限の算出においての第四正規化して仮数部に入る数がちょうど１となり、第四越位数においては上限のときの方が下限のときより１大きいものの、ｌｏｇ１０  ｘの小数点以下第四位に入る数字を確定できる。【００５０】
【数７】
2016006697.tif 000008
【００５１】  数式７において、初期越位数を１から９までのいずれかの一桁の数として、それをａとおき、第一越位数、第二越位数、そして第三越位数をそれぞれｂ、ｃ、そしてｄとおいて、以下に説明する。【００５２】  もし下限を算出したときの第四越位数を５とすると、上限を算出したときの第四越位数は５より１大きい６である。そして、このとき、上記で説明したように上限を算出したときの第四正規化をして仮数部に入る数がちょうど１となるときを除いて第四越位数による確定はできず、初期越位数による一桁の確定を含めて上位四桁の数字しか確定できない。【００５３】  第五越位数以降も下限と上限でそれぞれ算出し、例えば第十二越位数までそれぞれ算出したときの得られる数式は、ａ〜ｄをそれぞれ入る位に並べて表記すると、下記の数式８となる。そして、数式８の各辺の常用対数をとって整理すると下記の数式９が得られる。この例のように、たとえ求める常用対数においての下限と上限の差の絶対値のそれらに対する割合がそれぞれ極めて小さくても、小数点以下第三位までの数字しか確定できないケースもあり得るが、この例のようなケースに限られる。なお、「ａ〜ｄをそれぞれ入る位に並べて表記する」とは、例えばａ〜ｄの値がそれぞれ１、２、３、そして４のとき、「ａｂｃｄ５」は「１２３４５」を表わすとする。「ａ．ｂｃｄ５」は「１．２３４５」を表わすとする。【００５４】
【数８】
2016006697.tif 000009
【００５５】
【数９】
2016006697.tif 000010
【００５６】  もし、この例のように初期越位数が１から９までのいずれかの一桁の数で上位四桁の数字しか確定できなければ、そのとき、下限の算出のときで第四正規化をして仮数部に入る数は必ず９．９９９９９７５２６２６より大きく、かつ上限の算出のときで第四正規化をして仮数部に入る数は必ず１．００００００２４７３８より小さく、かつ上記で説明したように第四越位数においては上限のときの方が下限のときより１大きい。そして、はじめて異なる越位数となる第四越位数より後の越位数、すなわち第五越位数以降の越位数は、下限のときでは９、上限のときでは０となり、この関係が少なくとも第十越位数までそれぞれ続く。ただし、真数とする数として与えられた与数が０より大きく１より小さい場合で、求める常用対数が負の場合には、逆に、下限のときでは０、上限のときでは９となる。数式９の例では、第十一越位数までそれぞれ続く。【００５７】  もし第十四越位数まで下限と上限の算出をそれぞれ行って小数点以下第十四位までそれぞれ算出すると、下記の数式１０が得られる。しかし、数式１０の範囲内に存在するいずれの値でも、小数点以下第十一位を四捨五入した結果はすべてａ．ｂｃｄ６００００００となる。【００５８】
【数１０】
2016006697.tif 000011
【００５９】  そこで、求める常用対数の下限を算出し、それの例えば小数点以下第十一位を四捨五入すると、小数点以下第十位までの近似値が得られる。数式１０の例では求める常用対数の整数部分が１から９までのいずれかの一桁の数だから、上位十一桁の近似値が得られる。この例では小数点以下第十二位を四捨五入して許容桁数と同数の桁数の近似値が得られるが、この例のように最高位から下位に向かってみて０以外の数字が入る位から数えて許容桁数と同数の桁数の近似値が得られるとは限らないものの、１以外で１に近い数を真数とする常用対数のケースを除いてほとんどのケースで許容桁数と同数の桁数の近似値が得られる。【００６０】  小数点以下第十一位を四捨五入して得られる数値は、下記の数式１１のようなケースでない限り、真の値を同様にして四捨五入した結果と一致する。数式１１の第一辺全体は求める常用対数の下限で、第三辺全体は求める常用対数の真の値である。【００６１】
【数１１】
2016006697.tif 000012
【００６２】  請求項６に記載のプログラムは、請求項４に記載のプログラムと同様に、ベキ計算するにあたって、一度に算出せずに常に二数を乗じることを繰り返すものであるが、整数部分が０か否かにかかわらず最高位から下位に向かって数えて許容桁数と同数の桁数に四捨五入して算出することを特徴とする。請求項７に記載のプログラムは、許容桁数より１小さい桁数に四捨五入して算出することを特徴とする。【００６３】  請求項５に記載のプログラムは、ベキ計算するにあたって、一度で算出するもので、請求項６に記載のプログラムと同様に、許容桁数と同数の桁数の数値を算出する。【００６４】  ただし、請求項７に記載のプログラムを用いて算出した数値の表示について、以下に説明する点に留意する。【００６５】  一般的な電子計算機において、例えば許容桁数が１２の場合で整数部分が０か否かにかかわらず最高位から下位に向かって数えて十二桁目の数字が小数部分に存在する位に入り、かつ前記数字が０である数値を表示するにあたって、つまり許容桁数の条件を満たす位のうちで最も下位の位が小数部分に存在し、かつ同位に入る数字が０である数値を表示するにあたって、通常、前記数字を表示しない。よって、請求項７に記載のプログラムにおいては、同プログラムを用いて対数以外の計算を行って算出した数値とは異なり、整数部分が０か否かにかかわらず最高位から下位に向かって数えて十一番目の位又はそれより上位の位までしか表示されていないにもかかわらず十二番目の位に入る数字を０として算出したわけではないことに留意する。ただし、同様に数えて十一番目の位に入る数字が表示されないときには前記位に入る数字は０として算出したことに留意する。【００６６】  ベキ計算するにあたって常に二数を乗じることを繰り返すプログラムは、一度に算出するプログラムより、精度は若干劣る。そこで、請求項７に記載のプログラムは、許容桁数より１小さい数と同数の桁数に四捨五入して算出する。許容桁数が１増加すると、少なくとも許容桁数が数十程度までであれば、桁数を１大きくとって四捨五入して算出しても、数式１１のようなケースでない限り、真の数値を同数の桁数に四捨五入して得られる数値と一致する。【００６７】  一方、ベキ計算するにあたって一度に算出すると、ほとんどのケースで許容桁数より１大きい数と同数の桁数に四捨五入して算出しても、数式１１のようなケースでない限り、真の数値を同数の桁数で四捨五入して得られる数値と一致する。【００６８】  以下、請求項８及び請求項９に記載のプログラムについて説明する。【００６９】  １以外で１に極めて近い小数を真数とするとき、求める常用対数の最高位から下位に向かってみて０が多数並ぶ。すなわち、求める常用対数の上位多数桁の数字が０．００…０である。まず、このケースについて説明する。【００７０】  繰り返すが、特に断りがない限り、許容桁数を１２とする。１０進方で演算を行うとし、１０乗するにあたっては、一度に１０乗せずに常に二数を乗じることを繰り返すとし、１０乗する際の具体的手順として、まず５乗を算出し、その結果を平方することを前提として説明する。なお、これらの前提のため、許容桁数が１２の一般的な電子計算機を用いた手計算で確認することが可能である。【００７１】  許容桁数を１２として本手段を用いて常用対数を算出する場合で、１以外で１−１０−６以上１＋１０−６以下の数を真数とするとき、すなわち整数部分が１で小数点以下第一位から少なくとも同第五位まで０が連続して入る数又は整数部分が０で小数点以下第一位から少なくとも同第六位まで９が連続して入る数を真数とするとき、本手段を用いて得られる下限の誤差は、ほぼ３×１０−４％である。ただし、演算部で１０進法以外で演算するため、若干異なることはあり得る。もし上限を算出し、数式６を得たときと同様にしてはさみうちを行って確定すると、確定する桁数が減少することはあっても増加することはなく、むしろ不要である。【００７２】  しかし、１以外で１−１０−６以上１＋１０−６以下の数を真数とする常用対数を算出するときであっても、下記で説明するケースを除いて本プログラムの算出手段で得られる下限と真の数値は、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から数えて五桁以上が一致する。そして、下記で説明するケースを含めて、前記位から数えて六番目の位で四捨五入若しくは切り上げ又は切り捨てると、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から数えて五桁の近似値が得られる。その理由は、１以外で１−１０−６以上１＋１０−６以下の数を真数とする常用対数のとき、１０乗のベキ計算をする際の切り捨てる量の割合が、特にはじめの数回は極めて小さく、下限と真の数値の差が極めて小さいからである。なお、四捨五入と切り上げと切り捨てのいずれを行ってもよいが、下限は真の数値より常に小さいから、切り捨ては避けたほうがよい。【００７３】  １以外で１−１０−６以上１＋１０−６以下の数を真数とするときにはさみうちを行って確定すると、確定する桁数が減少すると書いたが、例えば１＋１０−８を真数とするとき、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から数えて三桁しかない。１＋１０−１１を真数とするときには、一桁もない。このような結果は、次に説明することに起因する。【００７４】  本手段は、初期正規化の後に、仮数部に入る数の１０乗のベキ計算をして正規化表現することを繰り返すたびに求める常用対数の小数部分の各位に入る数字を得るものであって、許容桁数の制約がある電子計算機で算出すると、１０乗のベキ計算をするたびに誤差が拡大することに起因するものであるからである。しかしながら、上記の１＋１０−８のケースでいえば、下限と上限のそれぞれの各位に入る数字をそれぞれ最高位から下位に向かってみて０が連続して並ぶか否かにかかわらずみるとすると、下限では小数点以下第十三位までの上位十四桁の数字が一致し、上限では小数点以下第十一位までの上位十二桁の数字が一致するものではある。【００７５】  ただし、１より小さい数を真数とする常用対数のときには、第一越位数、第二越位数、第三越位数、…を順に小数点以下の各位に入る数字とし、整数部分を０として得られる数と、このときは負の整数である初期越位数の和においての最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から五桁以上が真の数値と一致する。数式２でいえば、同式の第二辺中の第二項の数値でなく、同式の第三辺全体の数値−１．９２０８１８７５３９５２…に相当する数値において、下記に記載する数式のようなケースでない限り、最高位から下位に向かってみて０以外の数字がはじめて現れる位から五桁以上が真の数値と一致する。【００７６】  なお、１．００００００００００１を真数とする常用対数と０．９９９９９９９９９９９を真数とする常用対数を請求項５から請求項７までに記載のプログラムのうちのいずれを用いても、いずれも０が算出される。許容桁数を１２と限らず偶数で２ｊの場合、最高位に入る数字が０か否かにかかわらず最高位から下位に向かって数えた桁数が許容桁数と同数で１．０００…０１と０．９９９…９をそれぞれ真数とする二つのケースで０が算出される。【００７７】  １以外で１−１０−６以上１＋１０−６以下の数を真数とする常用対数のとき、例えば下記の数式１２のようなケースでない限り、下限のみを本手段を用いれば、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から数えて五桁以上が一致する数値が得られる。数式１２の第三辺全体の数値は、許容桁数が１２の一般的な電子計算機で本手段を用いて前記位から数えて八桁まで得たときの下限である。第二辺全体の数値は真の数値である。【００７８】
【数１２】
2016006697.tif 000013
【００７９】  数式１２のケースは、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位である小数点以下第八位から数えて四番目の位、すなわち小数点以下第十一位が、入る数字が一致しない位のうちで最も上位の位だが、その位より一つ下位の位から下位に向かってみて真の数値では０が、下限では９が並び、小数点以下第八位から下位に向かって数えて少なくとも五番目の位まで連続して並ぶ。ただし、１より小さいとき、すなわち１−１０−６以上１未満のときで、その結果として求める常用対数が負のとき、入る数字が逆になる。数式１２の例では、そのような位は一つのみだが、例えば１．００００００２０４２４を真数とする常用対数では、真の数値が８．８７００２９５…×１０−８で、数式１２と同様にして算出した下限が８．８６９９９８２…×１０−８となり、上記の関係が成り立つ位が複数存在する。【００８０】  許容桁数が偶数の２ｊの場合で、もし数式１２のようなケースになれば、少なくとも許容桁数が数十程度までのときは、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から数えて、少なくともｊ−１番目の位まで上記の関係が成り立つ。ｊのとる値は自然数とし、少なくとも１０以上の値をとり得る。なお、ｊの値が４以下であれば、つまり許容桁数が８以下の偶数であれば、１以上１０未満の数の１０乗のベキで整数部分の桁数が許容桁数を越え得るから、ｊの値は５以上とするのがよい。【００８１】  以上に説明したように、許容桁数が１２の場合で下限のみを本手段を用いて得れば、数式１２のようなケースでない限り、最高位から下位に向かってみて０以外の数字が入る位がはじめて現れる位から五桁以上が一致する数値が得られるが、上限とのはさみうちを行わないので、五桁を越えるか否かはわからない。数式１２のようなケースでない限り、このケースのうちで１より大きい方のケースは五桁又は六桁が一致し、他方の１より小さいケースの方では五桁から七桁までのいずれかである。又、１との大小の関係にかかわらず、１との差の絶対値が大きい方が比較的誤差率が小さい。又、１より小さいケースの方が比較的誤差率が小さく、一致する桁数が大きくなりやすい。【００８２】  １−１０−６以上１＋１０−６以下の範囲外であっても、１−１０−６よりある程度小さい又は１＋１０−６よりある程度大きい数を真数とする常用対数のときでも、１以外で１−１０−６以上１＋１０−６以下の数を真数とする常用対数のときとあまり変わらない。【００８３】  許容桁数が１２の場合で１以外で１−１０−６以上１＋１０−６以下の数を真数とする常用対数の下限について上記で説明したことは、誤差率がほぼ３×１０−４％であることに起因する。許容桁数を１２に限らず偶数で２ｊの場合で、１以外で１−１０−ｊ以上１＋１０−ｊ以下の数を真数とする常用対数を本手段を用いて得られる下限の誤差率は、許容桁数が少なくとも数十程度までであれば、ほぼ下記の数式１３である。【００８４】
【数１３】
2016006697.tif 000014
【００８５】  ８８８を真数とする常用対数は２．９４８４…であるが、この実例を用いて本プログラムで実行される各々の演算の過程で各々算出される各々の数値を列記することによって、本プログラムの演算について説明する。許容桁数が１２の電子計算機を用いるとする。【００８６】  下記の矢印でつないだ数値は、本プログラムで演算するときと同様に真数とする数として与えられた与数を初期正規化し、以後、１０乗して正規化することを繰り返したときのものである。ただし、本プログラムと異なり、１０乗した結果を正規化表現して仮数部に入る数を、次の１０乗のベキ計算の際に底とするのではなく、１０乗したり、正規化したりするたびに指数部を増加し、１０乗を繰り返し行っても、各々の結果は１０乗を繰り返し行った各々の結果そのものである。【００８７】  下記の流れ図の各々の矢印の各々の右に各々の演算名を記入した。１０乗のベキ計算をするときは１０乗のベキ計算のうちで何回目かを、正規化するときにはその際の越位数をそれぞれ記入した。第ｔ−１越位数と第ｔ越位数をそれぞれβｔ−１とβｔとおく。第ｔ正規化をして仮数部に入る数をｚｔとおく。すると、ｔ回目の１０乗のベキ計算をした時点の結果は下記の数式１４となる。そして、それを第ｔ正規化した結果は、下記の数式１５となる。
2016006697.tif 000015
2016006697.tif 000016
【００８８】
【数１４】
2016006697.tif 000017
【００８９】
【数１５】
2016006697.tif 000018
【００９０】  指数部に入る数の計算は、正規化するときは、前記正規化を行って得られる越位数を加え、１０乗するときには、指数部に入る数に１０を乗じる。本プログラムで実行される各々の演算の過程がわかる。加えて、以下に行う本プログラムの手段を用いて得られる結果が正しいことの証明を理解するために役に立つ。以下、本プログラムの算出手段が正しいことを証明する。ただし、電子計算機が回避できない許容桁数の制約がないものとし、切り捨てと切り上げのいずれもが行われないことを前提とする。【００９１】  真数とする数として与えられた与数をｙとおく。初期越位数をαとおく。第一越位数、第二越位数、第三越位数、…をそれぞれβ１、β２、β３、…とおく。αの値は整数であり、与数と１の大小の関係により正負が定まる。β１、β２、β３、…の各値は、それぞれ０以上９以下の整数である。つまり、下記の数式１６が成り立つ。以下、下記の数式１７が成り立つことを数学的帰納法で証明する。数式１７が成り立てば、命題が真であることが証明される。【００９２】
【数１６】
2016006697.tif 000019
【００９３】
【数１７】
2016006697.tif 000020
【００９４】  まず、１より大きい数を真数とする常用対数のときに命題が真であることを示す。【００９５】Ｉ．ｎ＝１のとき      真数とする数として与えられた与数ｙを初期正規化して仮数部に入る数は、ｙを１０αで除した商と等しい。そして、β１の定義により、下記の数式１８が成り立つ。【００９６】
【数１８】
2016006697.tif 000021
【００９７】  数式１８の各辺の常用対数をとると、下記の数式１９となる。そして、数式１９を整理すると、下記の数式２０となる。【００９８】
【数１９】
2016006697.tif 000022
【００９９】
【数２０】
2016006697.tif 000023
【０１００】  よって、ｎ＝１のとき、命題が真であることが示された。【０１０１】ＩＩ．ｎ＝ｋのとき    次に、任意の自然数ｋをとる。そして、ｎ＝ｋのとき、下記の数式２１が成り立つと仮定する。数式２１が成り立てば、小数点以下第ｋ位までについて命題が真であることを示している。【０１０２】
【数２１】
2016006697.tif 000024
【０１０３】  数式２１の第一辺全体と等しい値を同式の各辺からそれぞれ引いて整理すると、下記の数式２２となる。次いで、数式２２の各辺に１０ｋ＋１をそれぞれ乗じて整理すると、下記の数式２３となる。【０１０４】
【数２２】
2016006697.tif 000025
【０１０５】
【数２３】
2016006697.tif 000026
【０１０６】  数式２３の第二辺中の角括弧で括られた数は、αとβ１，β２，β３，…の定義により、第ｋ正規化をして仮数部に入る数と等しい。よって、同式の第二辺中の真数は、第ｋ＋１越位数を得るために行うｋ＋１回目の１０乗のベキ計算の結果と等しい。よって、数式２３、第ｋ＋１越位数の定義、そして数式１６により、下記の数式２４が成り立つ。数式２４を整理すると、下記の数式２５となる。【０１０７】
【数２４】
2016006697.tif 000027
2016006697.tif 000028
【０１０８】
【数２５】
2016006697.tif 000029
【０１０９】  これは、ｎの値がｋのときに数式２５が成り立てば、ｎの値がｋ＋１のときも成り立つことを示している。よって、ＩとＩＩから、数学的帰納法により、１より大きい数を真数とする常用対数のとき、命題が真であることが示された。【０１１０】  次に、１より小さい数を真数とする常用対数のときに命題が真であることを示す。真数の条件により、ｙの値は０より大きく１より小さいとしてよい。与数ｙを真数とする常用対数において、下記の数式２６が成り立つ。【０１１１】
【数２６】
2016006697.tif 000030
【０１１２】  数式２６の第三辺中の第二項全体の常用対数においての真数は、１より大きい数であって、上記で示したように、前記項においての本プログラムの手段を用いて算出した数値の各位に入る数字は、前記項の真の値のそれぞれ対応する位にそれぞれ入る数字とそれぞれ一致する。そして、αの値は負の整数であるものの、初期越位数の定義により、前記項における常用対数にαを加えた結果は、前記項における常用対数の真数に１０＾αを乗じた積を真数とする常用対数と等しい。よって、１より小さい数を真数とする常用対数のとき、命題が真であることが示された。ただし、数式２の例でいえば、同式の第二辺中の第二項が真の値と一致するのではなく、第三辺の−１．９２０８１８７５３９５２が一致することに留意する。なお、与数ｙが１より大きいときでも、数式２６のように初期越位数αと他方の小数部分に分けて得られる二つの数値を加えて算出しても変わらないことはすでに記した。【０１１３】  １を真数とする常用対数のときは自明である。勿論、そのときの求める常用対数は０である。以上から、数学的帰納法により、命題が真であることが証明された。      （証明終）【０１１４】  数式２３の第二辺中の中括弧で括った数は、第ｋ正規化をして仮数部に入る数と等しいと書いたが、数式１５でｔのとる値がｋとしてみれば、わかりやすい。数式１５の数値は、真数とする数として与えられた与数の１０ｋ乗、すなわちｙの１０ｋ乗そのものだから、下記の数式２７が成り立つ。そして、数式２７の右辺中の乗数で両辺を除して左辺を整理すると、下記の数式２８が得られる。そして、これは上記に書いたことが正しいことを示している。【０１１５】
【数２７】
2016006697.tif 000031
【０１１６】
【数２８】
2016006697.tif 000032
【０１１７】  数式１７中の「≦」において、もし等号が成立すれば、そのとき、真数とする数として与えられた与数は、一つの位に１が入り、他に０以外の数字が入る位が存在しない数又は無理数である。前者の場合、β１、β２、β３、…の各値はすべて０であって、求める常用対数は必ず整数であって、初期越位数と等しい。そして、初期正規化をして仮数部に入る数がちょうど１となるが、下記で説明するようにその時点で終了する。後者の場合は、電子計算機は許容桁数の制約を回避できないから、本プログラムとは無関係である。【０１１８】  請求項３などに記載のプログラムで行う演算は１０進法以外のｐ進法を用いるが、ｐ進法においての証明をするためには、上記の証明において、単に１０をｐに置き換えるのみでよい。ただし、数式１６の第三辺全体の値９はｐ−１と置き換える。例えば８進法においては、７と置き換える。ただし、段落番号「００３３」の段落で説明したように、、ｐは、ｐ進法においては１０と表記される。【０１１９】  １を真数とするとき、本プログラムの手段を用いるまでもなく、０と結果を表示する。そのとき以外でも、初期正規化をして仮数部に入る数がちょうど１となるとき、求める常用対数は整数である。加えて、必要に応じて切り下げ又は切り上げを行った影響もあって、例えば第五正規化をして仮数部に入る数がちょうど１となれば、段落番号「００１６」の段落で説明したように、その時点で下限、上限又は下限と上限の両方の算出を終了して小数点以下第五位までで終了する。【０１２０】  そして、一度でも切り上げを行って上限として算出したものにおいては、最も下位の位である小数点以下第五位に切り上げる。つまり、小数点以下第五位に入る数は、第五越位数でなく、それに１を加えた和とする。もし第五越位数が９であれば、小数点以下第四位に繰り上げる。もし下限と上限で同時に仮数部に入る数がちょうど１となり、かつそれまでの下限と上限の越位数で対応するものがそれぞれ一致していれば、そのとき、下限と上限で越位数は必ず異なる。