Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

PI

Werbeanzeige

1

03.11.2011, 15:49

PI

Hallo Leute! Gemäß Ramanujan kann man PI mit dieser Formel berechnen:
§\frac{1}{\pi}=\frac{2\sqrt{2}}{9801} \sum^\infty_{k=0} \frac{(4k)!(1103+26390k)}{(k!)^4 396^{4k}}§
Nun werfen sich mir 2 Fragen auf.
1 - Eigentlich rechnet man doch "nur" §\sum^\infty_{k=0} \frac{(4k)!(1103+26390k)}{(k!)^4 396^{4k}}§ und multipliziert das Ergebnis, welches man so ziemlich nie komplett erhalten wird, mit §\frac{2\sqrt{2}}{9801}§ multipliziert, dadurch erhält man dann, je nachdem wie früh man aufhört, mehr oder weniger genau §\frac{1}{\pi}§.
Oder täusche ich mich da?

2 - Wie berechnen gewisse Leute denn bitte PI am Computer auf weiß ich wie viele Millionen Stellen genau aus? Mir ist bislang leider kein Wert bekannt, der so genau sein kann.
Oder auch in die andere Richtung: Primzahlen. Wie kommen Leute darauf, eine Primzahl wie §2^{32.582.657}-1§ zu berechnen. Welchen Datentyp nimmt man denn bitte für so eine Zahl?!? :cursing:

MfG und danke im Voraus,
Check

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

2

03.11.2011, 16:05

das dürfte für dich interessatn sein ;)
http://bellard.org/pi/pi2700e9/pipcrecord.pdf

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

03.11.2011, 16:13

Dafür benutzt man Libraries wie diese: http://gmplib.org/
Die erlauben dir das Rechnen mit beliebig großen Zahlen. Eine Zahl nimmt dann eben nicht 32 oder 64 Bits ein, sondern z.B. 1 KB, oder halt so viel wie du willst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

03.11.2011, 16:17

Es gibt eine Formel mit der man die n-te Stelle von §\pi§ direkt berechnen kann http://en.wikipedia.org/wiki/Bailey-Borwein-Plouffe_formula
;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (03.11.2011, 16:23)


5

03.11.2011, 16:23

Okay, das alles hat mir schon sehr geholfen!! Großes Danke! ;)
Doch gibt es so etwas wie gmplip auch "direkt" für Windows?
Und noch viel interessanter: Wie arbeitet das denn? Wie kann man sich das vorstellen, wie teilt genau dies dem Wert statt 64B eben gerade eine beliebige Größe zu?

MfG
Check

EDIT: @Dot: Man wird immer wieder überrascht. 8|

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

03.11.2011, 16:32

Im Prinzip rechnen diese Libraries so, wie du auch auf Papier rechnen würdest. Da hast du ja auch keine Begrenzung was die Länge der Zahlen angeht, es dauert halt nur länger. Die Libraries rechnen nur eben binär und mit besseren Algorithmen. Aber da steckt keine Magie hinter. Natürlich ist es langsamer als wenn die CPU direkt mit kleinen Zahlen rechnet, weil das in Hardware verdrahtet ist.

7

03.11.2011, 18:43

Also ein "human´sche Imitation"?
Wenn das nichts wirklich großes sein sollte, abgesehen jetzt mal von den Rechenoperationen, so ließe sich das doch irgendwie selbst schreiben. Gibt es eine OpenSource-Unterstützung dafür?
gmplip hat bei mir eine Datei ohne Endung im Inhalt und ich muss mir dann Morgen nochmal die Dokumentation näher durchlesen. :)

MfG
Check

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

8

03.11.2011, 20:22

ja, sowas lässt sich selbst schreiben
für die Berufsschule hatte ich das schonmal gemacht (mit einer kleinen Auswertung einer Eingabe in der Konsole)
allerdings war meine Lösung bestimmt nicht so Ressourcenschonend, wie andere (ich habe die Zahlen einfach als Strings gespeichert und damit gearbeitet ;D)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

9

03.11.2011, 20:26

Wäre jetzt auch so meine Idee für so etwas. :S

MfG
Check

idontknow

unregistriert

10

03.11.2011, 23:10

Naja im Prinzip musst nur X Byte allokieren und dann eben die Rechenoperationen auf Bit-Ebene selber implementieren. Wäre zumindest meine Idee/Ansatz. Bin mir nur nicht ganz sicher wie du auf die Bytes > 4 zugreifen kannst, theoretisch musst du es ja in einen validen Typ "casten" damit eine Bit-Operation ausgeführt werden kann, oder geht das in dem Fall direkt auf void*?. Andere Idee wäre natürlich das ganze als Array eines Typs zu interpretieren und dann auf die n-te Stelle zugreifen, vorzugsweise natürlich als char (weil 1 Byte). Das wäre zumindest mein Ansatz den ich probieren würde, wenn ich sowas selber implementieren würde.

Werbeanzeige