ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
関数共通仕様
システム変数
定数
符号変換
関係演算
丸め演算
加減算
乗算
除算/逆数
整数除算/剰余算
平方根/立方根
階乗算
指数関数
対数関数
三角関数
逆三角関数
双曲線関数
逆双曲線関数
階乗評価関数
級数評価関数
ニュートン評価関数
演算時間評価関数

UltraMath

関数共通仕様

最終更新日:2006/06/10

●関数形式

○標準形式

 与えられた変数(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は、以降の演算で新しい精度になるので、桁落ちなどに注意。

UltraMath.Precision() As Integer:64以上の8の倍数の正整数

 大きいほど、演算速度は遅くなるので、目的にあった精度にすることが肝要。乗除算では、必要に応じてPrecision までの値が保存される。

●定数の仕組み

○参照

 数学関数では、定数(π、e、ln10など) が、内部で必要となる。この時、定数は指定された精度のものが必要となるが、その都度算出すると膨大な時間が掛かってしまい、現実的でない。そこで、ここでは、必要な定数は予め最大精度(100万桁程度)で保有して、必要に応じて、その精度を切り出して使用する方式としている。元になるデータを原始定数と言うことにし、バイナリ形式で保有している。

  • デフォールト:2000桁の定数
  • 精度指定    :精度プロパティPrecisionが設定されると、その精度にて、定数を切り出す。

○生成

 定数は必要に応じてUltraPrecisionユーティリティにて生成できる。