Hallo Leute, ich muss/möchte mit meinem 8-Bit Atmel pow() nutzen. Aber die Funktion ist natürlich sau langsam, ca 7000 Zyklen. Gibt es irgendwie eine schnellere Alternative, die mir trotzdem bis auf zwei Nachkommastellen genau rechnet? Danke Gruß Stef
Das kommt drauf an. Wie sieht denn dein Exponent aus? pow( x, 2 ) ist ja nichts anderes als x*x und pow( x, 3) ist nichts anderes als x*x*x hast du einen ganzzahligen Exponenten, dann kannst du einfach mal die entsprechenden Multiplikationen ausrollen. ein sqrt( x ) würde ich aus dem Bauch heraus auch mal als schneller einschätzen als ein pow( x, 0.5 )
Du musst schon genauere Angaben machen, sonst können wir die ja nix passendes vorschlagen. Welchen Wertebereich und welche Genauigkeit haben deine Eingangsparameter x,y für pow(x,y)? Und was ist dein Anwendungsfall? Sehr oft stellt sich bei Performancesachen heraus, dass das Problem einfach nur ungeschickt angegangen wurde.
ui, danke für die schnellen Antworten Es muss die Formel umgesetzt werden: y = k * x^exp Werte im Intervall [von; bis] k = 16.37 (double) exp = 0.39 (doube) x = [0; 249] (eignetlich int, aber muss wohl auf double umgewandelt werden) Genauigkeit mindestens 2 Nachkommastellen Die Formel muss etwa 1000 mal pro Sekunde gerechnet werden, was den Prozessor (16MHz) schon gut auslastet Marco M. schrieb: > Du musst schon genauere Angaben machen, sonst können wir die ja nix > passendes vorschlagen. Welchen Wertebereich und welche Genauigkeit haben > deine Eingangsparameter x,y für pow(x,y)? Und was ist dein > Anwendungsfall? Sehr oft stellt sich bei Performancesachen heraus, dass > das Problem einfach nur ungeschickt angegangen wurde. Aber ich liebe dieses Forum so sehr, weil mir so oft schon Ideen und Lösungen eingefallen sind, NACHDEM ich ne Frage formuliert und gepostet habe :-) Mir ist gerade klar geworden, das k und exp ja zur Laufzeit konstant sind, deshalb kann ich ja eigentlich x^exp für alle 250 Möglichkeiten im Voraus berechnen und muss "nur" noch *k rechnen. Und diese Multiplikation kann man sicher auf "Integer*Interer" umformen und trotzdem meine gewünschte Genauigkeit zu behalten.
ich bin blöd, ich kann ja ALLES im Voraus berechnen und abspeichern... man bin ich doof
Cheater schrieb: > ich bin blöd, ich kann ja ALLES im Voraus berechnen und abspeichern... > man bin ich doof In irgendeinem Buch las ich, dass es an einer Uni in Amerika einen Teddy gab, dem die Studenten zuerst ihr Problem vortragen mussten, bevor sie damit zum Prof durften. Wenn man sich sein Problem vergegenwärtigt, dann findet man oft selbst die Lösung.
Das ist auch schon anderen aufgefallen: http://de.wikisource.org/wiki/Ueber_die_allm%C3%A4hliche_Verfertigung_der_Gedanken_beim_Reden
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.