This post summarises a few runs that where made to compute many digits of Khinchin’s constant. We succeeded at repeating the previous record of a hundred thousand, in much less time, but failed at the million digit attempt.
BernMM: This implementation calculates the first zeta’s using David Harvey’s multi-modular Bernoulli algorithm. It switches to the power table method as soon as this becomes feasible. It is described in more detail in this post. Source: khinchin.bernmm.cpp. Requires GMP, MPFR, BernMM and NTL.
SCP: This implementation also employs the power table method for the first terms using the von Staudt-Clausen theorem and other trickery described in this post. Source: khinchin.SCP.cpp. Requires GMP and MPFR. And an unnecessary dependency on Boost.
All sources were compiled using g++ -ggdb -O3 -lrt -lpthreat.
These two algorithms were run at various levels of precision to evaluate their accuracy and performance. Timings were made using the <code>time</code> command. Gourdons attempt is included for completeness, but beware of the different (ten years older) hardware!
| Algorithm | Digits | Wall clock time | Prcessor time | Result |
|---|---|---|---|---|
| Gourdon’s | 110 028 | 22.4 hours | 22.4 hours¹ | K0 |
| SCP | 110 004 | 12.5 min | 12.0 min³ | K0 |
| BernMM | 110 004 | 33.5 min | 76.2 min² | K0 |
| SCP | 1 010 025 | 3.8 days | 3.8 days³ | K0 |
| BernMM | 1 000 023 | 4.5 days | 11.2 days² | K0 |
| SCP | 1 100 026 | 3.4 days | 3.4 days² | K0 |
| BernMM | 1 100 025 | 5.7 days | 14.4 days² | K0 |
| Gourdon’s | SCP | BernMM | |
| Gourdons | 110 028 | 110 000 | 110 000 |
| SCP | 110 000 | 110 004 | 110 004 |
| BernMM | 110 000 | 110 004 | 110 004 |
Everything checks out, we can successfully calculate a hundred thousand digits of in twelve minutes.
| BernMM 1M | BernMM 1M1 | SCP 1M | SCP 1M1 | |
| BernMM 1M | 1 000 023 | 540 634 | 863 449 | 453 476 |
| BernMM 1M1 | 540 634 | 1 100 025 | 540 634 | 453 476 |
| SCP 1M | 863 449 | 540 634 | 1 010 025 | 453 476 |
| SCP 1M1 | 453 476 | 453 476 | 453 476 | 1 100 026 |
This table show that there is something terribly wrong! Both algorithms are inconsistent with themselves and each other! From the table one can deduce that BernMM is accurate to 540 634 decimals and SCP to 453 476. But it seems that that SCP-1M1 is accutally less precise than SCP-1M! This means there is some sort of error accumulating in the algorithm, and this could potentially undermine the consistency check, so I’ll have to fix this.
However, 540 634 is still a world record!
(Originally posted on 2009-12-02)
Add comment