ホーム ] 実行時間計測ラブラリ ] EXIF情報ライブラリ ] 文字式演算 ] クイックソートライブラリ ] 多倍長演算ライブラリ ] 多倍長演算ライブラリU ] 画像処理ライブラリ ]

上へ
多倍長語の構造
プログラミング仕様
インストール
ユーティリティ
数学定数システム
四則演算
数学関数

多倍長演算ライブラリU(CompactPrecision)

技術解説/数学定数システム

最終更新日:2007/04/26 新規

●概要

 桁数が少ないので、実行時に算出できるシステムにしている。

●方式

 実行時に都度算出するのではなく、未算出であれば演算して求める方式になっている。一度算出した定数はバイナリファイルとして特定のフォルダに保存され、次回からは、そのファイルから読み込まれる。

定数参照要求があると、以下の処理が暗黙的に行われる。

・定数はメモリにあるか?

・あれば、そのコピーを返す。

・なければ、バイナリファイルを探す。

・バイナリファイルがあれば、それを読込み、定数とする。

・なければ、定数生成メソッドで算出し、バイナリファイルとして保存する。

明示的に予め準備しておくには、SetUpCompact メソッドを最初に実行すれば良い。

●定数参照

 プロパティで参照できるが、そのままでは、たとえば、ユーザが、A = PI とし、後、A.SetValue(XX) などとすると、内部にあるPI まで変化してしまう。これでは不都合なので、プロパティを返すときは、

 Return m_PI.Clone

として、内部にあるインスタンスPI を直接渡さなく、インスタンスのコピーを返している。

●定数生成

 数学定数は、その精度を4096桁まで保証するため、内部では、一時的に8192桁にして演算している。

○e

 求める桁数が比較的少ないので、直接級数で求めている。e = Σ(1/k!) である。マシンによるが1秒前後の時間が掛かる。

○π

 求める桁数が比較的少ないので、マチンの公式で求めている。マシンによるが1秒前後の時間が掛かる。

○ln10

 級数でそのまま演算するとかなり時間が掛かるので、差分法で求めている。初期値のln10 近似値[ln10]は組込み関数では15桁なので、XP関数電卓で求めた32桁の値を採用している。

 途中で現れる、e[ln10]の演算は、[ln10]を1億分の1し、級数で算出して、1億乗して求めている。マシンによるが数秒の時間が掛かる。