einklich.net  > π

08. Apr. 2022

π auf 1 Milliarde Stellen

Warum?

Ein paar Stellen der Kreiszahl sollte man immer im Haus haben. Wer weiß, wann man das nächste Mal den Umfang des beobachtbaren Universums in Plancklängen berechnen muss. Für diesen größten möglichen Kreis mit der größten sinnvollen Präzision reichen übrigens 61 Dezimalstellen aus, bitte sehr (an der 62. Stelle kommt eine 9, also kannst du die 5 hinten gern auch auf 6 aufrunden):

3,1415926535897932384626433832795028841971693993751058209749445

Alles dahinter scheint daher eine rein sportliche Übung ohne direkten Nutzen zu sein. Oder? Nein, das ist schon etwas mehr als nur heiße Luft.

Weil auf meinem Webspace noch einige Gigabyte ungenutzt rumliegen, hab ich mal eines davon in Anspruch genommen und eine Milliarde Dezimalstellen zur allgemeinen Verwendung hochgeladen.

Und ran an die Ziffern!

Die Ausgabe von einer Milliarde Zeichen umfasst logischerweise 1 Milliarde Bytes, das sind 953,7 MiB (1 Mebibyte = 1024 Kibibyte à 1024 Byte).

π mit 1 Milliarde Nachkommastellen (mit der 3 und dem Komma also 1 000 000 002 Zeichen).

Empfohlenes Verfahren: Klick den Link mit rechts an und wähle „Speichern unter“.

Ansonsten wird dein Browser die Augen verdrehen, sich dann zwei GB Arbeitsspeicher krallen, eine Zeitlang rödeln und nach fertigem Download versuchen, eine Textdatei mit einer einzigen riesiglangen Zeile anzuzeigen. Bei mir schmiert Brave nach kurzer Zeit mit Fehlermeldung ab; Firefox beißt sich durch, braucht aber auch eine Viertelstunde und länger. Die letzten 100 Zeichen siehst du unten in der Statusmeldung von y-cruncher nochmal zur Kontrolle.

Und wo hast du die Stellen alle her?

Die Geschichte der Berechnung der Kreiszahl ist durchaus interessant. Archimedes begann damit, Kreise von innen und außen durch Vielecke anzunähern, deren Umfang sich leicht berechnen lässt, und die Kreiszahl damit „einzukesseln“. Das brauchen wir heute nicht mehr, wir haben numerische Verfahren, die ein Computer leicht durchführen kann, obwohl sie für Menschen unmöglich wären (man muss dafür unter anderem zwei riesige [and when I say riesig, I mean riesig!] Zahlen durcheinander dividieren). Mehr dazu auf Wikipedia.

Die Milliarde Stellen hier hat y-cruncher berechnet, mit untenstehender Meldung.

Und woher weiß man, dass das stimmt?

Man prüft einzelne berechnete Stellen (oder auch z.B. die letzten 100) mit einem anderen Berechnungsverfahren nach, mit dem sich (auf Umwegen) gezielt einzelne Stellen berechnen lassen – so was gibt’s. Dieses Verfahren braucht zwar viel mehr Zeit als das für die Hauptberechnung verwendete, aber für Stichproben ist es schnell genug. Solange nicht beide Verfahren denselben Fehler enthalten, können wir annehmen, dass das Ergebnis stimmt.

Computation Mode:     Ram Only
Multi-Threading:      Push Pool  ->  8 / ?  (randomization on)

Working Memory...  4.71 GiB  (spread: ?)
Twiddle Tables...   224 MiB  (locked, spread: ?)

Begin Computation:

Series CommonP2B3...  70,513,681 terms  (Expansion Factor = 2.699)
Time:    116.215 seconds  ( 1.937 minutes )                                    
Large Division...
Time:    5.803 seconds  ( 0.097 minutes )                                      
InvSqrt(10005)...
Time:    3.800 seconds  ( 0.063 minutes )                                      
Large Multiply...
Time:    2.566 seconds  ( 0.043 minutes )                                      

Pi:  128.384 seconds  ( 2.140 minutes )

Base Converting:
Time:    10.372 seconds  ( 0.173 minutes )                                     
Writing Decimal Digits:
Time:    7.641 seconds  ( 0.127 minutes )                                      

Total Computation Time:     138.757 seconds  ( 2.313 minutes )
Start-to-End Wall Time:     147.539 seconds  ( 2.459 minutes )

CPU Utilization:          737.94 %  +    0.71 % kernel overhead
Multi-core Efficiency:     92.24 %  +    0.09 % kernel overhead

Last Decimal Digits:  Pi
6434543524 2766553567 4357021939 6394581990 5483278746  :  999,999,950
7139868209 3196353628 2046127557 1517139511 5275045519  :  1,000,000,000

Spot Check: Good through 1,000,000,000

Version:              0.7.8.9507 (Linux/13-HSW ~ Airi)
Processor(s):         Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
Topology:             8 threads / 4 cores / 1 socket / 1 NUMA node
Usable Memory:        16,571,592,704 (15.4 GiB)
CPU Base Frequency:   3,591,643,968 Hz
		

… also in knapp zweieinhalb Minuten, auf einem leicht aufgemotzten Wald-und-Wiesen-Office-Desktop. Vor 30 Jahren hat ein Großrechner für 10 Mio. Stellen noch einen Tag benötigt. Der Rekord liegt (Stand März 2022) bei π·20 Billionen – übrigens mit derselben Software gerechnet, allerdings hat das drei Monate gedauert :)