Mattscheibe Geschrieben 8. November 2007 Geschrieben 8. November 2007 Hallo, für eine Echtzeit-Anwendung auf einem PowerPC verwende ich die pow()-Funktion. Bei Laufzeittests habe ich herausgefunden, dass das Programm um einiges schneller abläuft, wenn ich stattdessen exp(y*ln(x)) verwende. (etwa 25%) Hat jemand auch schon mal sowas beobachtet? Eigentlich müsste die pow()-Funktion doch genaus so umgesetzt werden und dann dürften sich keine Laufzeitunterschiede ergeben.
Klotzkopp Geschrieben 8. November 2007 Geschrieben 8. November 2007 Eigentlich müsste die pow()-Funktion doch genaus so umgesetzt werden Warum? Mathematisch gesehen ist das zwar dasselbe, aber durch die eingebaute Ungenauigkeit der Fließkommatypen sind die bei der exp/ln-Variante entstehenden Rundungsfehler größer als bei einer eigenen pow-Implementierung.
flashpixx Geschrieben 8. November 2007 Geschrieben 8. November 2007 Hallo, das klinkt jetzt wirklich interessant. Ich hätte jetzt getippt, dass exp() bzw ln() wesentlich langsamer sind, als pow() (jedenfalls so aus dem Bauch heraus). Schau Dir doch mal die Quellen von pow / exp / ln an. Wenn pow() intern rekursiv arbeitet, könnte das schon sein, ist aber nur eine Vermutung. Ich setze für meine mathematischen Berechnungen diese Lib ein Boost C++ Libraries Würde mich aber wirklich interessieren, warum das auf einem PPC so ist, habe ja selbst einen. Gruß Phil
Klotzkopp Geschrieben 8. November 2007 Geschrieben 8. November 2007 Würde mich aber wirklich interessieren, warum das auf einem PPC so ist, habe ja selbst einen.Das muss ja nicht generell so sein, sondern vielleicht nur bei dem Compiler, den Mattscheibe benutzt.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden