|
多倍長演算ライブラリU(CompactPrecision) |
|
目次 |
| 最終更新日:2007/04/26 新規 |
●概要
MegaPrecision は VB.NET
での多倍長演算の最高峰を目指すものであるが、実用的かと言われると疑問がある。そこで、実験や研究で実用できる範囲の高精度な科学計算ツールを目的にしたVB.NET 多倍長ライブラリ CompactPrecision
をついでに開発した。精度としては4096桁で、公称精度は4000桁としている。
●主な特徴
- 多倍長語 CompactLong
は、構造体ではなくクラスにした。これにて、無駄なインスタンスのコピーがなくなり、終始参照で演算できる。
- 語長は固定となっている。これにて、配列の再生成を極力避けることができ、実行中のメモリ消費を抑えた。
- 精度は固定であるが、コンパイル時に変更できる。
- 数学原理はMegaPrecision とほぼ同じ。
- FFT
数千桁でも乗算は、やはりFFT乗算の方が早いので、FFT乗算と逆数除算機能は持たせている。しかし、CompactPrecision
は精度が高々数千桁なので、400万桁まで扱えるFFTライブラリは重過ぎる。今回、CompactFFT
なる小規模なFFTライブラリを開発した。初期化にて、データ数 2L のL を指定できるようにした。 CompactPrecision
では、L = 13 としている。これにて、Sinテーブルなどは従来の百分の1になっている。新機能
線形畳込みを付加し、Radix8(1億進数) 入力、Radix8
出力ができるようにした。
●多倍長語 CompactLongの構造
1億進数のBCD
による浮動小数点方式である。基本的に、MegaLong と同じであるが、仮数部は、固定長のInteger配列で構成され、また指数部をLong
にしたので、扱えるオーダは格段に広がった。公称精度+拡張精度からなる。
●実行モジュール
必要な各dll と、試験用ユーティリティソフトを提供している。これにて、自分でプログラミングができる。
ダウンロード
●技術解説
技術的には、ほぼMegaPrecision
と同じであるが、必要に応じて以下に解説している。
○数学定数システム
桁数が少ないので、実行時に算出できるシステムにしている。
○数値変換
○四則演算
仮数部の配列が固定長なので、MegaPrecision
と若干異なる。
○数学関数
MegaPrecision とほぼ同じであるが、桁数が短い分、高速化にこだわる必要はない。
|