|
|
●関数形式 ○標準形式 与えられた変数(1ないし2個のオペランド)を演算し、結果をUltraLongで戻すFunctionになっている。一般には、 Function Ope(A, B) As UltraLong となる。 ○引数 引数のA、Bは、基本的にUltraLong型、数値型、文字列型の全てが利用可能であるが、AがUltraLong、BがInteger、Long、String、UltraLongの場合はオーバーロードがあり、型変換の手続きが省略されるので、速度の点でやや有利。一般に、A、B とも、UltraLongにて許されたObjectと同じ。 ●基本方式 ○演算 四則演算は桁数により、古典的手法とFFT乗算や逆数除算を使い分けている。いずれも、仮数部の演算(Integer配列どうしの演算)に指数部の調整を行う方式となっている。従って、有効桁は最大限活用され、無駄な演算がなくなっている。 ○正規化 全ての演算結果は、必ず正規化され保存される。中間結果は保持しない。 ○有効桁数 UltraMathのプロパティとして提供されている。デフォールトでは2,000桁となっている。始めに設定するのが望ましい。途中で変更しても良いが、それまでの結果のUltraLongは、以降の演算で新しい精度になるので、桁落ちなどに注意。
大きいほど、演算速度は遅くなるので、目的にあった精度にすることが肝要。乗除算では、必要に応じてPrecision までの値が保存される。 ●定数の仕組み ○参照 数学関数では、定数(π、e、ln10など) が、内部で必要となる。この時、定数は指定された精度のものが必要となるが、その都度算出すると膨大な時間が掛かってしまい、現実的でない。そこで、ここでは、必要な定数は予め最大精度(100万桁程度)で保有して、必要に応じて、その精度を切り出して使用する方式としている。元になるデータを原始定数と言うことにし、バイナリ形式で保有している。
○生成 定数は必要に応じてUltraPrecisionユーティリティにて生成できる。 |