Wurzel 2 exakt ausrechnen

M.E.

Lt. Commander
Registriert
Jan. 2007
Beiträge
1.923
Hallo,

Ich möchte ein Programm mit C++ schreiben, das so ähnlich wie SuperPI sein soll, aber eben Wurzel zwei ausrechnen soll.

allerdings hört der rechner mit den Nachkommastellen sehr schnell auf, wenn man das Heron-Verfahren anwendet.

Ich hab auch schon in der math.h das gefunden:

sqrt(2)

aber da hören die Nachkommastellen auch sehr schnell auf.

Ich brauch ne ziemlic große Bitgröße oder? long (32bit) ist zu wenig, aber was größeres gibt es so ohne weiteres ja nicht...

Kann mir jemand einen Tipp geben?

MfG

M.E.
 
Hallo,

ich hab zwar keine Ahnung was SuperPI ist, wenn es Dir aber darum geht etwas auf möglichst viele Nachkommestellen auszurechnen, dann verwende doch sogenannte "Arbitrary Precision Libraries". Die gibt es zur Genüge im Internet, für die unterschiedlichsten Anforderungen. In meiner Diplomarbeit habe ich damals QD benutzt (gibt es hier). Aber da wird auch nur eine feste Anzahl von Nachkommastellen berechnet. Diese Anzahl ist zwar bedeutend höher als "double" oder "long double" , aber dennoch eben begrenzt.

Die Frage ist was Du am Ende genau erreichen willst.

Hoffe das hilft Dir etwas weiter.

Gruß
 
MUSS es in C++ geschrieben sein/werden?
 
Willst du damit wurzel 2 ausrechnen? wurzel 2 ist irrational und somit kann man es nicht "exakt" ausrechnen
 
Da er schrieb "wie SuperPI" wohl nicht, bzw eine bestimmte Anzahl Stellen und die Zeit messen, eine Art Benchmark also. Und dann ist wohl auch C++ sinnvoll.
 
hallo,
ja es muss c++ sein, weil ich das am besten beherrsche (neben HTML und css, die sich hierfür garnicht eignen).

@Spartaner117
genauso habe ich mir das gedacht, aber wie mache ich das?
Ich steh da irgendwie aufm schlauch....

@M.o.D
Ja, das weiß ich, ich will es ja auf z.B. 16K oder 1Mio stellen exakt haben.

Danke für die Hilfe bis jetzt

MfG

M.E.
 
Wie schon Angelslayer geschrieben hat, wird das nur mit der "arbitrary precision arithmetic"was. Eine Auswahl von Bibliotheken gibt es auf der englischen Wikipedia.
 
Das Projekt, dass du dir ausgesucht hast gehört auf jeden Fall schon mal zu den aufwendigeren.
Aber Respekt, dass du dich dran versuchst. Echt ein schönes Projekt.

Also ich würde die Idee mit den double Variablen auch vergessen. Lieber mit Strings arbeiten. Ist auf den ersten Blick zwar aufwendiger aber im Endeffekt die einzig vernünftige Methode für solange Zahlenketten. Dadurch bist du auch nicht nach hinten eingeschränkt. Dann auf jeden Fall auch mit dynamischen Arrays arbeiten(new & delete). Bei 1Mio sollte das zwar auch noch mit zusammenhängenden gehen, aber so haste das direkt vernünftig und kannst evt.l auch mehr Stellen berechnen.

Mein Tipp zum Einstieg ist auf jeden Fall erstmal das Motto "Back to the basics" anzuwenden.
Schau dir erstmal an wie man so ne Wurzel PER HAND ausrechnet.
Daraus kannse dir dann nen Algorithmus ableiten und den dann programmiertechnisch optimieren.

Vlt hast du ja jetzt zumindest nen Ansatz und wenn dann spezielle Problem auftauchen, kann man die ja noch besprechen.

Greetz
 
Zurück
Oben