/* (2*n-1)*(2*n-1)MAX_NOW_NUMBER) {
fputc('\n',stderr);
fputs("ごめんなさい、このソフトの限界を超えました。\n",stderr);
fputs("今まで時間を無駄に頂いてしまい、申し訳ありません。\n",stderr);
fputs("心から深くお詫び申し上げます。\n",stderr);
free(pi);
free(now);
return 1;
}
if(nowNumber<=MAX_MUL) {
firstNonZero=mulLongInt(now,(2*nowNumber-1)*(2*nowNumber-1),calcMemory,firstNonZero);
} else {
firstNonZero=mulLongInt(now,2*nowNumber-1,calcMemory,firstNonZero);
firstNonZero=mulLongInt(now,2*nowNumber-1,calcMemory,firstNonZero);
}
if(nowNumber<=MAX_DIV) {
firstNonZero=divLongInt(now,(4*nowNumber)*(4*nowNumber+2),calcMemory,firstNonZero);
} else {
firstNonZero=divLongInt(now,4*nowNumber,calcMemory,firstNonZero);
firstNonZero=divLongInt(now,4*nowNumber+2,calcMemory,firstNonZero);
}
nowNumber++;
updateProgress(firstNonZero);
if(nowNumber%100==0) {
nowTime=timeGetTime();
usedTime+=nowTime-prevTime;
prevTime=nowTime;
}
/* 中断セーブ */
/* 略 */
}
usedTime+=timeGetTime()-prevTime;
fputc('\n',stderr);
ん…遅い。
10万桁の計算に1分49秒もかかってしまった。
自然対数の底なら、10万桁を6秒で計算できる。
やはりπは美しい分計算しにくいのか。
いや、違う。
試しに、スーパーπと比較してみる。
スーパーπと同じ桁数の131072桁を計算すると…
スーパーπ:0分2秒
自作プログラム:4分20秒
なんと130倍もの時間がかかっている
これは遅い。遅すぎる。なぜだ。収束が速いはずなのに。