Wie kann man sqrt am schnellsten berechnen?



  • float sqrtf(float);
    double sqrt(double);
    

    Die beiden Funktionen sollten verdammt schnell sein, zumindest schneller als irgendwelche Bithacks. (Wozu gibts die FPU?)



  • Mr. N schrieb:

    float sqrtf(float);
    double sqrt(double);
    

    Die beiden Funktionen sollten verdammt schnell sein, zumindest schneller als irgendwelche Bithacks. (Wozu gibts die FPU?)

    Weißt du wie schnell die FPU von AT91 oder TI MSP ist? 😡



  • Zdravko schrieb:

    Mr. N schrieb:

    float sqrtf(float);
    double sqrt(double);
    

    Die beiden Funktionen sollten verdammt schnell sein, zumindest schneller als irgendwelche Bithacks. (Wozu gibts die FPU?)

    Weißt du wie schnell die FPU von AT91 oder TI MSP ist? 😡

    Nö. Woher soll ich das wissen? Haben die überhaupt eine? Wenn nicht, wird das Standard-sqrt ja wohl per Bibliothek sein, und vermutlich wird die Bibliothek sogar recht gut sein.

    Aber du kannst ja Benchmarks machen und vergleichen.



  • Mr. N schrieb:

    Zdravko schrieb:

    Mr. N schrieb:

    float sqrtf(float);
    double sqrt(double);
    

    Die beiden Funktionen sollten verdammt schnell sein, zumindest schneller als irgendwelche Bithacks. (Wozu gibts die FPU?)

    Weißt du wie schnell die FPU von AT91 oder TI MSP ist? 😡

    Nö. Woher soll ich das wissen? Haben die überhaupt eine?

    haben sie nicht. 🙂
    ich würde dem op ja zu festkommaarithmetik raten, mit floats tut er sich keinen gefallen.
    bei AT91SAM7's isses noch machbar, die haben genug power (ARM7), aber 'nem MSP430 würde ich das nicht zumuten wollen. der ist selbst mit C++ überfordert. assembler oder C schmecken ihm am besten 😉



  • Wenn die keine FPU haben, wie können die dann überhaupt Floatwerte verarbeiten ? Softwaregesteuert ?



  • am besten ist immer um die langsamen instructions drumrum zu kommen, sqrt kann man sehr oft umgehen. vielleicht sagst du uns ja den zusammenhang in dem du sqrt nutzt (code?) und vielleicht hat dann jemand nen tip wie du ohne sqrt auskommst.



  • hardwarelooser schrieb:

    Wenn die keine FPU haben, wie können die dann überhaupt Floatwerte verarbeiten ? Softwaregesteuert ?

    ja, wird alles per software gemacht und ist natürlich dementsprechend langsam...



  • rapso schrieb:

    am besten ist immer um die langsamen instructions drumrum zu kommen, sqrt kann man sehr oft umgehen. vielleicht sagst du uns ja den zusammenhang in dem du sqrt nutzt (code?) und vielleicht hat dann jemand nen tip wie du ohne sqrt auskommst.

    Falls es dir entgangen ist, es sind schon 2 brauchbare Lösungen ohne sqrt vorgestellt worden.

    pale dog schrieb:

    ja, wird alles per software gemacht und ist natürlich dementsprechend langsam...

    Die Berechnungen finden doch im Arbeitsspeicher statt, das ist doch sauschnell.



  • hardwarelooser schrieb:

    pale dog schrieb:

    ja, wird alles per software gemacht und ist natürlich dementsprechend langsam...

    Die Berechnungen finden doch im Arbeitsspeicher statt, das ist doch sauschnell.

    im vergleich zu einer reinen hardwarelösung ist software saulangsam. jeder maschinenbefehl braucht zeit und das läppert sich zusammen. auf eine FPU muss man zwar auch etwas warten, aber nur sehr wenige taktzyklen, z.b. 4
    --> http://www.ece.northwestern.edu/~ismail/courses/c92/fpu/index.html



  • pale dog schrieb:

    --> http://www.ece.northwestern.edu/~ismail/courses/c92/fpu/index.html

    Das ist doch eine Softwarelösung oder ?



  • hardwarelooser schrieb:

    pale dog schrieb:

    --> http://www.ece.northwestern.edu/~ismail/courses/c92/fpu/index.html

    Das ist doch eine Softwarelösung oder ?

    jein 😉
    verilog ist eine hardware-beschreibungssprache. damit werden sogenannte fpga's konfiguriert.
    --> http://de.wikipedia.org/wiki/FPGA
    diese bestehen aus einem haufen von logikschaltkreisen, deren zusammenspiel mit z.b. verilog-code festgelegt wird. heraus kommt dabei ein hardware-baustein (in dem fall eine FPU).
    🙂


Anmelden zum Antworten