2017-02-22 7 views
0

Gibt es Gleitkommazahlen, die mehr Ziffern nach dem Dezimalpunkt speichern als double in C++ (oder irgendeine Alternative, die double mehr Ziffern speichert)? Ich habe gelesen, dass long double ist vielleicht genauer.C++ doppelt mehr Genauigkeit/Genauigkeit

In meinem Programm können wir in das Mandelbrot-Set hineinzoomen, aber nach etwas Zoom wird das Bild verpixelt. Ich denke, das liegt daran, dass die Länge zwischen zwei komplexen Zahlen, die zwei benachbarten Pixeln zugeordnet sind, geringer ist als die Differenz zwischen zwei aufeinanderfolgenden Werten von Double. Im Programm habe ich lange doppelt verwendet.

Wenn es wichtig ist, dann ist der Prozessor meines Computers Intel® Core ™ i3 CPU M 380 @ 2.53GHz × 4, der Computer ist 64 Bit, das Betriebssystem ist Ubuntu und der Compiler ist gcc.

the pixelated Mandelbrot set

+1

Lesen Sie die Blogposts dieses Kerls auf Fractals: https://randomascii.wordpress.com/category/fractals/ –

+0

'long double' ist genauer, wenn es länger als' double' ist, auf dem es nicht ist viele Plattformen. Überprüfen Sie mit 'sizeof'. Die Intel FPU berechnet in 80 Bits. – EJP

+0

Das Mandelbrot-Set ist nicht berechenbar. Das bedeutet, dass Ihr Computer bei einigen Zooms aufgibt, unabhängig von Iterationen oder Präzision. Aber Sie können zu 80-Bit-Doppelzimmer gehen oder sogar Ihre eigenen Routinen in Software schreiben., –

Antwort

1

Sie sollten wie boost.multiprecision oder sogar GMP einen Blick auf Drittanbieter-Bibliotheken nehmen.

Sie können es auch "von Hand" tun, aber das wäre eine Menge Arbeit. Sie müssten Zahlen als String-Repräsentation behalten und die arithmetischen Operationen manuell durchführen.

+0

Danke für die Antworten! Ich werde sie überprüfen. String-Darstellung scheint interessant zu sein. Ich weiß, wie Addition und Subtraktion funktionieren, aber Multiplikation und Division sind für mich unbekannt. Und wenn ich sie wüsste, könnte ich andere Funktionen mit Taylor-Serien, z.B. sin, cos, x^y ... (Ich weiß, dass ich diese Funktionen in meinem Programm nicht benötige). Logarithmus ist eine Frage für mich, weil seine Reihe innerhalb von 1 Radius konvergiert. – csekri

+0

Wenn du Lust hast, es mit der Hand zu machen, mach weiter, du wirst viel lernen! – Telokis