(57)【要約】【課題】従来の対数演算処理方式によるＬＳＩの回路やＤＳＰ用ファームウェアのサイズよりも小さい回路規模あるいはファームウェアサイズで、効率よく対数演算処理が実行できる対数演算処理方式を提供する。【解決手段】入力値Ｘに対する任意の底ａの対数の演算値が、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、この範囲内の全ての実数値は、この範囲をｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表され、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）が、ｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）の値に等しいことを利用して、入力値Ｘと、（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）とをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、算出した値ｎを用いて入力値Ｘに対する対数の演算値（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とからなる。【選択図】        図３
2004164417.tif 000002
【特許請求の範囲】
【請求項１】
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する演算処理方法において、
前記演算値は、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られたステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表されるものであり、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）は、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、
入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、
前記算出した値ｎを用いて入力値Ｘに対する底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順と
からなることを特徴とする対数演算処理方法。
【請求項２】
前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める手順をさらに有することを特徴とする請求項１記載の対数演算処理方法。
【請求項３】
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する対数演算処理装置において、
前記演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値が、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐが、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、
入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する第１の手段と、
前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める第２の手段と
を有することを特徴とする対数演算処理装置。
【請求項４】
前記第１の手段が前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める第３の手段をさらに有することを特徴とする請求項３記載の対数演算処理装置。
【請求項５】
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表され、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）が、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、
入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、
前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順と
をコンピュータに実行させるための対数演算処理プログラム。
【請求項６】
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐは、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、
入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する手順と、
前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順と
をコンピュータに実行させるための対数演算処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ通信システム等において実行される対数演算を演算処理装置やソフトウェアを用いて処理する対数演算処理方式に関する。データ通信における対数演算処理としては、例えば、通信回線の保守、管理、運用パラメータの１つである回線減衰量の算出時に回線送受信端の電力比を対数演算処理するものが挙げられる。本発明は、このような対数演算処理を行う対数演算処理方法および装置に関するものである。
【０００２】
【従来の技術】
一般に、対数関数は、０から無限大の入力値Ｘに対して、その計算値は、負の無限大から正の無限大の値をとりうる。この特性により、ある入力値Ｘの対数演算値を算出する場合、その値を求める範囲として、下限値Ｌｍｉｎと、上限値Ｌｍａｘとが定められる。
【０００３】
なお、この定めた範囲のすべての値は、この範囲をｎ等分に区切ったステップ幅Ｌｓｔｐの刻みと、下限値Ｌｍｉｎにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）であらわすことができる。対数値は、下限値以下の値のときはＬｍｉｎに、上限値以上の値のときはＬｍａｘに固定されるものと仮定する。
【０００４】
従来からよく知られている対数演算処理方式は、対数演算値をＬ、入力値をＸとして、次式（１）のように定義する。
【０００５】
【数１】
2004164417.tif 000003
上式（１）の常用対数演算は、その処理としてａ，ｂを任意定数とし、その底をａ、真数をｂとした一般化された対数Ｌｏｇａ（Ｘ）の定義式（２）
【０００６】
【数２】
2004164417.tif 000004
において、ａ＝１０、ｂ＝ｅを代入することにより、次式（３）が得られる。
【０００７】
【数３】
2004164417.tif 000005
上式（１）の常用対数演算は、この式（３）に従って演算処理を実行することで得られる。ここで定数Ｌｏｇ（１０）の値は定数として与えるものとすると、Ｌｏｇ１０（Ｘ）の演算処理としては、Ｌｏｇ（Ｘ）の値を導出する演算処理と、その算出値をＬｏｇ（１０）の値で割る２つの処理にて構成される。
【０００８】
ここで、Ｌｏｇ（Ｘ）の値を導出する演算処理方式については、従来より級数展開による方式が一般的に知られている。この従来の級数展開による対数演算処理方式は、次式（４）にしたがって演算処理を実行するものである。
【０００９】
【数４】
2004164417.tif 000006
なお、本発明に関連する従来の技術として、特開昭６１−７２３３５号公報には、はさみ打ち近似法を利用した対数演算処理方式が示されている。
【００１０】
【特許文献１】
特開昭６１−７２３３５号公報
【００１１】
【発明が解決しようとする課題】
この従来の対数演算処理方式の場合、上式（４）の級数展開による対数演算処理には浮動小数点演算による除算演算が含まれるため、この処理方式を演算処理装置に適用してＬＳＩなどのハードウェアを製作する場合に、除算器と浮動小数点演算処理装置が必要になる。このため、ＬＳＩの回路規模が大きくなってしまうという問題があった。
【００１２】
上記した問題点は、この従来の対数演算処理方式をソフトウェアで実現する場合においても同様である。図１に、上式（４）の級数展開による対数演算処理をＣ言語で記述したプログラムコード１０を示す。
【００１３】
図１のプログラムコード１０をＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）用ファームウェアとしてコンパイルした場合、浮動小数点演算による除算演算の処理のため、コンパイル後のファームウェアのサイズが非常に大きくなるという問題があった。この問題は、ＬＳＩ化した演算処理装置においては、ＬＳＩの面積の増大、ソフトウェア化した場合においては、ＤＳＰ用ファームウェアを格納するメモリ容量の増大を招くことになり、コストを増加させるという課題があった。
【００１４】
本発明は、上記の点に鑑みてなされたものであり、従来の対数演算処理方式によるＬＳＩの回路やＤＳＰ用ファームウェアのサイズよりも小さい回路規模あるいはファームウェアサイズで、効率よく対数演算処理が実行できる対数演算処理方式を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記課題を解決するため、請求項１に記載した発明は、入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する演算処理方法において、前記演算値は、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られたステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表されるものであり、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）は、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とからなることを特徴とする。
【００１６】
請求項２に記載した発明は、請求項１記載の対数演算処理方法において、前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める手順をさらに有することを特徴とする。
【００１７】
上記課題を解決するため、請求項３に記載した発明は、入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する対数演算処理装置において、前記演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値が、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐが、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する第１の手段と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める第２の手段とを有することを特徴とする。
【００１８】
請求項４に記載した発明は、請求項３記載の対数演算処理装置において、前記第１の手段が前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める第３の手段をさらに有することを特徴とする。
【００１９】
また、上記課題を解決するため、請求項５に記載した発明は、対数演算処理プログラムが、入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表され、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）が、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とをコンピュータに実行させることを特徴とする。
【００２０】
また、上記課題を解決するため、請求項６に記載した発明は、コンピュータ読み取り可能な記録媒体が、入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐは、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とをコンピュータに実行させるための対数演算処理プログラムを記録したことを特徴とする。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
【００２２】
従来方式の課題であるＬＳＩの回路規模やファームウェアサイズの増加の問題は、浮動小数点演算による除算演算の処理を含む級数展開による方式を用いていたことが主な原因と考えられる。
【００２３】
本発明の対数演算処理方式では、除算を使用しないものとし、使用する演算は、演算器としては比較的小さく構築できる加算、乗算、ビットシフト、データ比較器のみとする（条件１）。また、本発明の対数演算処理方式には、浮動小数点演算を使用しないものとし、浮動小数点演算は、固定小数点演算により代替する（条件２）。
【００２４】
以上の条件１及び条件２を満足する対数演算処理方式であれば、従来方式の課題を解決することが可能であり、その結果として、従来方式の場合よりも小さなＬＳＩ面積あるいはファームウェアサイズで効率よく対数演算処理を実行することができる。
【００２５】
まず、対数演算処理方式について考察を行う。前述の対数演算値Ｌの仮定から、Ｌは、その求める範囲の下限値Ｌｍｉｎと、この範囲をｎ等分に区切ったステップ幅Ｌｓｔｐとを用いて、次式（５）のように表すことができる。
【００２６】
【数５】
2004164417.tif 000007
ここで、ｎは正の整数である。
【００２７】
さらに、Ｌｍｉｎ、Ｌｓｔｐの対数演算結果を逆算して得られる入力値Ｘの値をそれぞれＸｍｉｎ、Ｘｓｔｐとすると、
【００２８】
【数６】
2004164417.tif 000008
【００２９】
【数７】
2004164417.tif 000009
が得られる。この式（６）及び式（７）を式（５）に代入すると、次式（８）が得られる。
【００３０】
【数８】
2004164417.tif 000010
上式（８）に式（１）を代入して整理すると、次式（９）が得られる。
【００３１】
【数９】
2004164417.tif 000011
各辺を比較すれば、次式（１０）の関係が得られる。
【００３２】
【数１０】
2004164417.tif 000012
図２は、上式（１０）の関係をまとめたものであり、本発明の対数演算処理方式の基本原理を説明するための図である。
【００３３】
図２から明らかなように、一定のステップ幅Ｌｓｔｐでｎ等分された範囲のすべての値を、その下限値Ｌｍｉｎにステップ幅をｎ回加算した値（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）で表すことができる。
【００３４】
対数演算の計算値Ｌは、下限値の対数演算の逆算から得られる値Ｘｍｉｎに、ステップ幅の対数演算の逆数から得られる値Ｘｓｔｐをｎ回累乗した値の掛け算（Ｘｍｉｎ＊（Ｘｓｔｐ）ｎ）の対数をとったものに等しいことがわかる。よって、入力データＸの対数演算結果は、Ｘと（Ｘｍｉｎ＊（Ｘｓｔｐ）ｎ）とのデータ比較によって、上式（１０）を満たすｎの値を算出して、この算出したｎについて（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を算出したものであることがわかる。
【００３５】
以上の対数演算処理は、加算、乗算、データ比較のみで構成することができ、除算を含んでいないため、前述の条件１を満足するものと言うことができる。
【００３６】
次に、本発明の対数演算処理方式の具体的な処理手順について、図３を用いて説明する。図３は、本発明の一実施形態に係る対数演算処理方法を実行するための演算処理シーケンスを説明するためのフロー図である。
【００３７】
図３に示したように、この実施形態の演算処理シーケンスが開始されると、まずステップＳ１０において、内部変数の定義を行う。具体的には、入力データＸを内部変数へ受け渡す内部テンポラリ変数ｘｉｎの定義と入力データＸの代入、（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）の値を一時的に保存する変数ｘｒｅｆの定義、対数演算値を格納する変数Ｌの定義、及び下限値を表す定数Ｌｍｉｎ（ｉ）の設定を行う。
【００３８】
次に、ステップＳ２０において、最大ｎ回必要となる、入力データＸと（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）とのデータ比較の回数を減らすために、予め選んだ複数の点の（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）の値と入力データＸとのデータ比較を荒く行い、その比較結果から入力データＸの該当範囲を限定する（ステップＳ２１）。入力データＸの該当範囲が限定された後、限定範囲に応じた初期値を変数ｘｒｅｆおよび変数Ｌに代入する（ステップＳ２２）。
【００３９】
次に、ステップＳ３０において対数演算処理を行う。上式（１０）を満たす条件ｘｒｅｆ＞＝ｘｉｎが真となるまで、対数演算処理を繰り返し実行するループ（ステップＳ３１−Ｓ３４）によって、変数ｘｒｅｆにｘｓｔｐをループ回数ｎ回乗算し、変数ＬにＬｓｔｐをｎ回加算する。
【００４０】
ステップＳ３０が完了すると、ステップＳ４０において、ループの繰り返しによって得られる演算データＸの対数演算の計算値Ｌ＝（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を出力して、図３の演算処理シーケンスが終了する。
【００４１】
この実施形態の対数演算処理方法では、以上のような処理手順で、対数演算値Ｌを算出するため演算処理が行われるが、式（１）の対数演算値Ｌの定義からわかるように、この実施形態では、底を１０とした常用対数に１０を掛けた演算処理を行うのみである。
【００４２】
しかしながら、本発明の対数演算処理方式には、式（２）に示された一般化された対数Ｌｏｇａ（Ｘ）の演算処理についても、上述の式を次のように修正することで適用することが可能となる。
【００４３】
すなわち、対数演算結果を次式（１１）のように定義する。
【００４４】
【数１１】
2004164417.tif 000013
この式（１１）を式（１）に代入すると，次式（１２）が得られる。
【００４５】
【数１２】
2004164417.tif 000014
式（１）は、底を１０とした常用対数の演算処理となる。さらに、Ｌｍｉｎ、ＬｓｔｐとＸｍｉｎ、Ｘｓｔｐとの関係式は次のようになる。
【００４６】
【数１３】
2004164417.tif 000015
上式（１３）のＬｍｉｎ、Ｌｓｔｐをそれぞれ、Ｙｍｉｎ、Ｙｓｔｐに置き換えれば、上述の実施形態の対数演算処理方法の適用が可能となる。
【００４７】
そして、式（２）で定義される一般化された対数Ｌｏｇａ（Ｘ）については、式（２）のｂ＝１０、底ａは任意の変数とすると、次式（１４）が成り立つ。
【００４８】
【数１４】
2004164417.tif 000016
したがって、上述の実施形態の対数演算処理方法を適用した常用対数演算Ｌｏｇ１０（Ｘ）の演算処理が可能であれば、一般化された対数Ｌｏｇａ（Ｘ）の演算処理もできることになる。すなわち、本発明の対数演算処理方式は、一般化された対数Ｌｏｇａ（Ｘ）の演算についても適用可能であることがわかる。
【００４９】
次に、上述の条件２として挙げた固定小数点演算について説明する。
【００５０】
デジタルシグナルプロセッサ（ＤＳＰ）では、実数計算を実行する演算法として、浮動小数点演算と固定小数点演算の２つの方法がある。しかし、一般的に、実数計算のＤＳＰ用ファームウェアは、固定小数点演算によるものの方が、浮動小数点演算によるものよりも、実行時間が短く、ファームウェアサイズも小さくなる。
【００５１】
これは、固定小数点演算は、小数点以下の実数値を、整数値として扱えるためで、その理由は、そのフォーマットとして、ｋビット長データのなかにｑビット目と（ｑ＋１）ビット目の間に小数点位置を仮想するためである。実際に、小数点位置を仮想して、小数点以下の実数値をあらわした例を図４に示す。
【００５２】
図４には、実数値１．２５を１６ビットＱ８フォーマットに変換した例が示してある。１６ビットＱ８フォーマットでは、１６ビット長のデータの中のビット８とビット７の間に小数点位置を想定して実数値をあらわしている。最上位のビット１５は符号ビットであり、符号ビットが０のときは正の実数、符号ビットが１のときは負の実数を表すものと定義する。
【００５３】
図４から明らかなように、実数値１．２５は、１６ビットＱ８フォーマットでは整数値３２０とあらわされ、小数点以下の実数値を整数値として扱うことができることがわかる。
【００５４】
また、図４から分かるように、固定小数点演算では、取扱うビットの長さに限りがあるため、１種類のＱフォーマットで扱える値の範囲に制限がある。１６ビットＱ８フォーマットの例では、正の値は６３．９９６０９３７５（＝（２１４−１）＊２−８）〜０の範囲であり、負の値は−０．００３９０６２５（＝−２−８）〜−６３．９９６０９３７５（＝−（２１４−１）＊２−８）の範囲に制限される。絶対値は最小で２−８＝０．００３９０６２５、最大で（２１４−１）＊２−８＝６３．９９６０９３７５が扱える値の範囲の制限となる。
【００５５】
ここで、最小の絶対値については、この値が小数点以下で扱える精度の最小値となることに注意が必要である。なお、扱える値の最大値を大きくする場合は、仮想小数点位置をＬＳＢ側へ、小数点以下の精度を高く取りたい場合には、仮想小数点位置をＭＳＢ側へ移動する処理により可能となる。
【００５６】
以上に説明したように、本発明の対数演算処理方式によれば、従来の方式の場合より小さなＤＳＰ用ファームウェアのサイズで、対数演算処理が実行できる。本発明の対数演算処理方式は、従来の方式よりもＤＳＰ搭載のメモリ（ＲＡＭ）の容量を小さくすることができる。本発明の対数演算処理方式は、固定小数点演算を用い、かつ除算器を使用しないため、演算処理装置などハードウェアに適用した場合、小さな回路規模でのハードウェア化が容易に実現できる。したがって、本発明の対数演算処理方式を用いてＬＳＩ化された対数演算処理装置は、除算器は必要としないため、従来のものよりも小さな実装面積で実現でき、その製造コストも削減できる。
【００５７】
次に、本発明の対数演算処理方式を適用した演算処理装置の具体的な実施例を図５を用いて説明する。
【００５８】
図５は、本発明の一実施形態に係る対数演算処理装置を示す。図５に示した対数演算処理装置は、図３の処理シーケンスにしたがって構成されている。
【００５９】
図５の対数演算処理装置において、入力データＸは、入力ポート１０より入力データ格納レジスタ１１（ｘｉｎ）に格納され、このｘｉｎは、ｘｉｎ（入力データＸ）の該当範囲を限定するため、定数格納レジスタ１５よりロードされる内部変数ｘｒｅｆの初期値とデータ比較器１２においてデータ比較され、ｘｉｎ＜ｘｒｅｆが真となるまで、データ比較を繰返し実行する。この比較回数は、比較回数値格納レジスタ１２−１に格納されたカウンタ値ｉにより示され、データ比較を実行するごとに１インクリメントされる。定数格納レジスタ１５よりロードされる内部変数ｘｒｅｆの値は範囲限定用変数格納レジスタ１６にも格納される。
【００６０】
内部変数ｘｒｅｆは、８ビット左シフタ１４により８ビット左シフトされる。ｘｉｎ＜ｘｒｅｆが真となると、データ比較は完了する。この完了は、データ比較器１２から出力される比較完了信号により、定数格納レジスタ１５に通知される。定数格納レジスタ１５は、比較完了信号を受取ると、そのときのカウンタ値ｉの値により選ばれる内部変数ｘｒｅｆの初期値ｘｍｉｎ［ｉ］及び変数Ｌの初期値Ｌｍｉｎ［ｉ］をそれぞれ、対数演算処理に用いられる、ｘｍｉｎ＊（ｘｓｔｐ）ｎ変数格納レジスタ１８及び対数演算値格納レジスタ１７（Ｌ）に書き込む。
【００６１】
また、データ比較器１２から出力される比較完了信号は、データ比較器１３にも通知される。データ比較器１３は、比較完了信号を受取ると、入力データ格納レジスタ１１（ｘｉｎ）の値と、定数格納レジスタ１５よりロードされたｘｍｉｎ＊（ｘｓｔｐ）ｎ変数格納レジスタ１８の値とのデータ比較を開始する。このデータ比較器１３も、先のデータ比較器１２と同様に、ｘｉｎ＞＝ｘｒｅｆが真となるまで、データ比較を繰返し実行する。
【００６２】
この比較回数は、比較回数値格納レジスタ１３−１に格納されたカウンタ値ｎにより示され、データ比較を実行するごとに１インクリメントされる。同時に、ｘｍｉｎ＊（ｘｓｔｐ）ｎ変数格納レジスタ１８の値には、乗算器１９によりｘｓｔｐが乗算され、対数演算値レジスタＬの値には、加算器２０によりＬｓｔｐが加算される。
【００６３】
ｘｉｎ＞＝ｘｒｅｆが真となると、データ比較は完了する。この完了は、データ比較器１３から出力される比較完了信号を用いて、対数演算値格納レジスタ１７、乗算器１９および加算器２０にそれぞれ通知される。そして、対数演算値格納レジスタ１７は、対数演算処理値Ｌを出力ポート３０に出力して、対数演算処理装置はすべての演算処理を終了する。
【００６４】
次に、本発明の対数演算処理方式を適用したコンピュータプログラムについて図６を用いて具体的に説明する。図６に示した対数演算処理プログラム１００は、図３の処理シーケンスにしたがって構成されている。
【００６５】
図６の対数演算処理プログラム１００において、入力データＸは、関数Ｌｏｇ１０（Ｘ）の引数として、内部変数ｘｉｎに格納され、この変数ｘｉｎは、ｘｉｎの該当範囲を限定するため、ステップＳ２１において、内部変数ｘｒｅｆの初期値とデータ比較され、ｘｉｎ＜ｘｒｅｆが真となるまでデータ比較を繰返す。この比較回数は内部変数ｉにより示され、データ比較を実行するごとに１インクリメントされ、内部変数ｘｒｅｆは８ビット左シフトされる。
【００６６】
ｘｉｎ＜ｘｒｅｆが真となると、ステップＳ２１は終了し、ステップＳ２２へ移行する。ステップＳ２２においては、ステップＳ２１で確定した内部変数ｉの値により、内部変数ｘｒｅｆの初期値ｘｍｉｎ［ｉ］および変数Ｌの初期値Ｌｍｉｎ［ｉ］を決定する。
【００６７】
このステップＳ２２で決定した変数ｘｒｅｆおよび変数Ｌを用いて、ステップＳ３０の対数演算処理を行う。ステップＳ３０においては、入力データｘｉｎと内部変数ｘｒｅｆとのデータ比較をｘｉｎ＞＝ｘｒｅｆが真となるまで繰返し実行し、先のデータ比較と同様に、この比較回数を示す変数ｎは比較ごとに１インクリメントされる。同時に、変数ｘｍｉｎ＊（ｘｓｔｐ）ｎ＝ｘｒｅｆにｘｓｔｐを乗算し、対数演算値格納レジスタＬ＝Ｌｍｉｎ＋ｎ＊ＬｓｔｐにＬｓｔｐが加算される。
【００６８】
ｘｉｎ＞＝ｘｒｅｆが真となると、ステップＳ３０は終了し、関数Ｌｏｇ１０の返却値として、対数演算処理値である変数Ｌの値を返して全ての対数演算処理を終了する。
【００６９】
（付記１）
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する演算処理方法において、前記演算値は、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られたステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表されるものであり、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）は、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とからなることを特徴とする対数演算処理方法。
【００７０】
（付記２）
前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める手順をさらに有することを特徴とする付記１記載の対数演算処理方法。
【００７１】
（付記３）
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値を算出する対数演算処理装置において、前記演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値が、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐが、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する第１の手段と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める第２の手段とを有することを特徴とする対数演算処理装置。
【００７２】
（付記４）
前記第１の手段が前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める第３の手段をさらに有することを特徴とする付記３記載の対数演算処理装置。
【００７３】
（付記５）
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、前記範囲をｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）により表され、この（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）が、底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較して入力値Ｘに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とをコンピュータに実行させるための対数演算処理プログラム。
【００７４】
（付記６）
入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値が、ある任意定数の下限値Ｌｍｉｎと上限値Ｌｍａｘで区切られた範囲から求まる値で、かつ、前記範囲内の全ての実数値は、ｎ等分して区切られるステップ幅Ｌｓｔｐの刻みと、前記下限値Ｌｍｉｎとにより、Ｌｍｉｎ＋ｎ＊Ｌｓｔｐにより表すことができるものであり、この演算値をすべてあらわせられるＬｍｉｎ＋ｎ＊Ｌｓｔｐは、前記底ａをＬｍｉｎ乗した任意定数ｘｍｉｎと、前記底ａをＬｓｔｐ乗じた任意定数ｘｓｔｐの値をｌｏｇａ（ｘｍｉｎ＊（ｘｓｔｐ）ｎ）した値に等しいことを利用して、入力値Ｘと、前記ｘｍｉｎ＊（ｘｓｔｐ）ｎとをデータ比較してＸに該当するｎの値を算出する手順と、前記算出した値ｎを用いて入力値Ｘに対する任意の底ａの対数ｌｏｇａ（Ｘ）の演算値となる（Ｌｍｉｎ＋ｎ＊Ｌｓｔｐ）を求める手順とをコンピュータに実行させるための対数演算処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【００７５】
（付記７）
前記対数演算処理プログラムが、前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める手順をさらに有することを特徴とする付記５記載の対数演算処理プログラム。
【００７６】
（付記８）
前記対数演算処理プログラムが、前記データ比較を行う前に、演算値の算出範囲から、あらかじめ選んだ複数の点の値と入力値Ｘとのデータ比較を行うことにより、演算値の算出範囲を狭め、前記データ比較の比較回数を少なくし、かつ、対数演算の累積誤差を所定の範囲内に収める手順をさらに有することを特徴とする付記６記載のコンピュータ読み取り可能な記録媒体。
【００７７】
【発明の効果】
以上説明したように、本発明の対数演算処理方式によれば、従来の方式よりもＬＳＩの面積ならびに小さなファームサイズで、対数演算処理を実行できる処理方式ならびに演算処理装置の提供が可能となる。また、本発明の対数演算処理方式では、実行時間短縮のため、処理の中で実行される内部変数と演算データとのデータ比較の回数を少なくする手段、ならびに処理の中で計算結果の切上げを行うために生じる誤差を要求精度内に収める手段の提供も可能としている。また、本発明の対数演算処理方式を用いることで、コストの低減および処理時間の短縮に寄与することができる。
【００７８】
【図面の簡単な説明】
【図１】従来の級数展開による対数演算処理方式を説明するための図である。
【図２】本発明の対数演算処理方式の基本原理を説明するための図である。
【図３】本発明の一実施形態に係る対数演算処理方法を実行するための演算処理シーケンスを説明するためのフロー図である。
【図４】実数値の１６ビットＱ８フォーマットへの変換方法を説明するための図である。
【図５】本発明の一実施形態に係る対数演算処理装置を示すブロック図である。
【図６】本発明の対数演算処理方式を適用したコンピュータプログラムの一例を示す図である。
【符号の説明】
１０  入力ポート
１１  入力データ格納レジスタ
１２  データ比較器１
１３  データ比較器２
１４  ８ビット左シフタ
１５  定数格納レジスタ
１６  範囲限定用変数格納レジスタ
１７  対数演算値格納レジスタ
１８  変数格納レジスタ
１９  乗算器
２０  加算器
３０  出力ポート
【図１】
2004164417.tif 000017
【図２】
2004164417.tif 000018
【図３】
2004164417.tif 000019
【図４】
2004164417.tif 000020
【図５】
2004164417.tif 000021
【図６】
2004164417.tif 000022