AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fließkomma-Überlauf

Ein Thema von Neutral General · begonnen am 23. Nov 2009 · letzter Beitrag vom 23. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Fließkomma-Überlauf

  Alt 23. Nov 2009, 13:20
Hi,

Ich berechne gerade etwas, im wahrsten Sinne des Wortes, "größeres". Dabei wird eine Zahl in jeder Iteration quadriert. Das funktioniert bisher 12 Iterationen lang, bis ich nen Gleitkomma-Überlauf bekomme.
Allerdings wäre es notwendig bis zu 20 Iterationen hinzubekommen. Ich verwende schon den Datentyp Extended.

Hat jemand einen Tipp?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 13:38
Zitat von Neutral General:
Hat jemand einen Tipp?
Wenn die verfügbaren Zahlensysteme nicht ausreichen:

- Werte so scalieren, daß sie reinpassen
(PS: Extendet kann zwar theoretisch Zahlen mit ~300 Stellen vorm Komma berechnen, aber nur die ersten 18-19 Stellen sind gültig ... der Rest ist undefiniert)

- oder ein anderes Zahlensystem verwenden (BigInt und Co.)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 13:39
Riecht sehr nach einem Fraktalprogramm.

Sowohl die Mathematik als auch die vorgegebenen Grenzen des Datentypes Extended kannst Du nicht überlisten. Entweder, die Ausgangszahl passend begrenzen (so daß auch bis zu 20 Quadrierungen nicht überlaufen) oder vor jeder Quadrierung prüfen, ob die Basis die Größe der Quadrdatwurzel der größten darstellbaren Extendedzahl erreicht oder gar überschritten hat. Alternativ könnte (?) auch die Konstruktion try-except-finally einen Überlauf abfangen?!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 13:50
Zitat von Delphi-Laie:
Riecht sehr nach einem Fraktalprogramm.
Hast eine gute Nase

Naja ich hab das Problem mit etwas Logik in den Griff bekommen
Ich muss ja die Zahlen, die schon aus der Mandelbrotmenge rausgeflogen sind nicht weiter quadrieren. Spart Rechenzeit und verhindert Überläufe

(Sieht übrigens schon ganz nett aus - siehe Anhang)
Miniaturansicht angehängter Grafiken
mandelbrot_825.jpg  
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 13:55
Hallo NeutralGeneral,

wie wäre eine getrennte Betrachtung von Exponent und Mantisse. Da du bei jeder Iteration eine quadrierung durchführst, weißt du ja das der Exponent sich quasi verdoppel (10^2 -> 10^4 -> 10^8). Ergo bräuchtest du "nur" am Anfang deiner Iteration die Zahl in Exponent und Mantisse zerlegen und die Ergebnisse einzeln berechnen -> Mantisse Quadrieren und Exponent *2. Aus der Ergebnis-Mantisse wieder eine Mantisse und Exponentenzerlegung und den ErgebnisExponenten mit dem anderen Exponenten verheiraten.

Soweit die Theorie

Ich hoffe, das kann dir Helfen.

Greez, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 14:30
Beim ganz normalen Mandelbrot Fraktal kannst du einen Wert wegschmeissen sobald er bei einem Iterationsschritt die Länge 2 hat - dieser wird nie konvergieren/orbiten, sondern immer flüchten. Damit solltest du nie Komponenten >2 bekommen, und bist mit Extended mehr als gut bedient .

Was anderes ist es dann wenn du sehr weit rein zoomst. Dann erkennt man ab irgendwann dass mehrere Pixel auf den selben Wert gemapped werden, da die Präzision nicht mehr reicht. Ab dann hilft echt nur noch die Verwendung einer Großzahl-Unit, da skalierte Werte sich ja nicht mehr korrekt verhalten würden.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 14:37
Zitat von Medium:
Beim ganz normalen Mandelbrot Fraktal kannst du einen Wert wegschmeissen sobald er bei einem Iterationsschritt die Länge 2 hat - dieser wird nie konvergieren/orbiten, sondern immer flüchten. Damit solltest du nie Komponenten >2 bekommen, und bist mit Extended mehr als gut bedient .
Das ist mir ja, wie oben schon erwähnt, auch eben eingefallen

Zitat von Medium:
Was anderes ist es dann wenn du sehr weit rein zoomst. Dann erkennt man ab irgendwann dass mehrere Pixel auf den selben Wert gemapped werden, da die Präzision nicht mehr reicht. Ab dann hilft echt nur noch die Verwendung einer Großzahl-Unit, da skalierte Werte sich ja nicht mehr korrekt verhalten würden.
Ja das habe ich mir auch überlegt... Wie viele Nachkommastellen kann Extended? bzw. wie gut ist die Genauigkeit?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 14:38
Zitat von himitsu:
nur die ersten 18-19 Stellen sind gültig
Auch nachzulesen in der OH

Edit: Das heisst, dass du ab ca. 1.000.000.000.000.000.000-fachem Zoom Klötzchen zu sehen bekommst (hab ich mit meinem Mandelbrot-Rumspiel-Test-Prog auch schon mal gesehen). Klingt erstmal nach "da kommt ja nie einer hin", aber gerade die tiefen Zooms sind ja erst der interessante Teil!

Edit2: Eventuell auch schon etwas eher, da die Iterationen ja dann auch langsam ungenau werden. Schwer das genau anzugeben.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 14:55
Ja gut..

Ich machs ja nur mal aus Spaß/Interesse. Der Zoom reicht mir fürs erste. Notfalls kann ich immernoch umsteigen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Fließkomma-Überlauf

  Alt 23. Nov 2009, 15:11
Die Mühe hab ich mir auch nicht mehr gemacht So ein Mandelbrötchen gehört ja irgendwie zu den Dingen, die jeder Programmierer mal in seinem Leben gebaut haben sollte - wie Hallo Welt, nur ein paar Jahre später. Hab damals auch nur meiner "Pflicht" genüge getan
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz