Algorithmus gesucht
-
Hi,
ich suche irgendeinen möglichst rechenintensiven Algorithmus, dessen Operationen vor allem aus +, -, *, /, von Fließkommazahlen besteht. Am besten sowas wie
double foo(double input1, double input2) { // Rechne unglaublich viel Quatsch }
Jemand was anzubieten?
-
cooky451 schrieb:
rechenintensiven
Zweck?
-
Matrizenmultiplikation?
Soll das alles in eine Cache-Line passen oder willst du viele Misses haben? Was willst du messen?
-
double result = 1; for (double d = 0; d < 10e12; d += 1.02) result *= input1 / input2 - input1 + d; return result;
?
-
double foo(double input1, double input2) { if(input1 - input2 == 0) // Glück return 0; return foo(input1 * input2 + input1 - input1 / input2, input1 * input2); }
Keine Ahnung ob das terminiert
-
Die meiste Zeit sollte wirklich für die Rechenoperationen draufgehen. Also möglichst keine Cache-Misses.
@SeppJ
Das tendiert bei mir sofort zu -#INF/#INF, das sollte möglichst nicht passieren. (Hätte ich vielleicht dazuschreiben sollen.)@pyhax
Wie oben erwähnt sollen die Rechenoperationen teuer sein, bei der Funktion wird ja eher die Zeit gemessen die ein Funktionsaufruf braucht.Edit: Und es ist keine Voraussetzung, dass nur Fließkommaoperationen verwendet werden. Es sollte nur den größten Teil der Laufzeit bestimmen.
-
Berechne doch PI auf x stellen genauigkeit
-
Ich glaube da kann ich auch mit long double als Rückgabewert einpacken. :p
Edit: Allerdings.. vielleicht ist das egal. Mal testen.
-
Oder du schreibst ein Programm was ein Euler Problem Brute-Force löst. ( http://projecteuler.net/problems )
-
Hm.. ziemlich viel Integer Kram da. Hast du an ein bestimmtes Problem gedacht?
-
cooky451 schrieb:
Hm.. ziemlich viel Integer Kram da. Hast du an ein bestimmtes Problem gedacht?
Oops, stimmt. Du wolltest ja floating point
Oder du generierst dir eine Liste von zufälligen Double werten und machst danach einfach irgendwas mit denen, z.B. input1 + input2 * input 1 - input2 / input1; oder was auch immer.
-
pyhax schrieb:
zufälligen Double werten
Ich will auch nicht die Geschwindigkeit von rand() messen.
-
cooky451 schrieb:
@SeppJ
Das tendiert bei mir sofort zu -#INF/#INF, das sollte möglichst nicht passieren. (Hätte ich vielleicht dazuschreiben sollen.)result += input1; result *= 0.9; result -= input2; result /= 1.1;
bleibt hübsch beisammen.
-
Normalverteilung ist sehr rechenintensiv
-
Du kannst auch ausrechnen. Die Wurzel natürlich mit dem Heronverfahren bestimmen. Konvergiert laut Wolframalpha zu ungefähr -0.60489864
-
Irgendwie hast du noch nicht dargelegt, warum du built-in Operationen benchmarken willst. Ich wuerde einfach ins Manual schauen und die Takte fuer jede Operation lesen.
-
@SeppJ Ich hatte zwar an etwas Stilvolleres gedacht, aber das reicht völlig, danke.
-
cooky451 schrieb:
@SeppJ Ich hatte zwar an etwas Stilvolleres gedacht, aber das reicht völlig, danke.
Du hast ausdrücklich "unglaublich viel Quatsch" bestellt. Damit kenne ich mich aus
-
Was stilvolles: http://de.wikipedia.org/wiki/Lorenz-Attraktor bleibt auch huebsch zusammen