ホーム ] TIPS ] ソフトウェア実験室 ]

上へ
ビットマップの処理速度
色変換速度
数式演算速度
冪乗演算速度
検索速度
文字列処理速度
文字列/数値処理速度
CPU演算速度
TicksとPerformance Counter
文字の数値化
数値化文字の再現
数値化文字の補間
補間の効果
ネイピア数
ネイピア数2
指数関数近似値
級数の収束速度1
級数の収束速度2
級数の精度
逆三角関数を求める
算術幾何平均でπを求める
全フォルダ列挙
ビットマップとメモリリソース
配列とメモリリソース

ソフトウェア実験室

ネイピア数2

最終更新:2007/02/11  新規

●概要

 多倍長演算ライブラリ CompactPrecision の演算性能と正確性を検査するためにユーティリティとして作成したプログラムで、オイラーの定義式により生成した e と、級数で生成した e との一致度を計測するものがある。その結果を紹介する。

●定義

 プログラムでは、 

 ( 1 + 1/Y)Y

の演算式で、Y = 10X とし、 X を、5 〜 2000 まで変化させている。102000 乗では、2000桁まで正しい e が求められると期待できる。

●結果

 下表が得られた。期待通り、X桁まで正しい e が算出できた。

定数とは、級数でもとめた4096桁の正しい e のこと。差(誤差)の指数が即ち一致した桁数となる。

●使用したコード

Dim One As New CompactLong(1)
Dim Dec As New CompactLong(10)
Dim X As New CompactLong(0)
Dim Y As New CompactLong(0)

X.SetValue(桁数)                                 '欲しい桁数をCompactLong値にする
Y = IPower(Dec, X)                               '10X を算出(この場合は、実際には演算はなく、指数部の調整のみとなる)
Y = IPower(Add(One, Recipro(Y)), Y)         '( 1 + 1/Y)Y

IPower(A, B) は、任意の実数 A を、整数B 乗する関数である。この場合、B はものすごく大きな数なので、CompactLongの整数を用いている。冪乗演算は、二進展開法で行っているので、短い時間で、102000 乗を演算できている。

ものすごく大きな数の冪乗なので、演算精度はかなり悪くなる。4096桁精度の多倍長語では、102050 乗程度が限界となる。