Kehrwert im DSP

OP #1957181
Lesenswert?

Ok, vielleich blöd gefragt.
Ich möchte die Division vermeiden und mochte durch z.B. ein Bitshifting 
oder Änderung der Bitreinfolge den Kehrwert einer Zahl bilden, wenn das 
möglich ist, und dann diese multiplizieren.
Erhoffe mir eine Zeitersparnis, durch weniger Rechenoperationen.

Philipp
Gast #1957236
Lesenswert?

Philipp M. schrieb:
> Erhoffe mir eine Zeitersparnis, durch weniger Rechenoperationen.

Das klingt wieder nach Optimierungsrennen mit dem Compiler.
Aber so als Vorschlag:
Statt
a / b
rechnest du
a * (c / d)
wobei c / d = 1 / b (zumindest ungefähr)
Durch geschickte Wahl von d lässt sich die Division dann durch 
rechtsschieben ersetzen (Potenz von 2).
:-)
#1957249
Lesenswert?

Ich denke mal daß die Division (von was eigentlich) im Compiler schon 
recht optimal umgesetzt worden ist (Speziallösungen siehe die vorherigen 
Posts)
Ich denke daß Du da nicht viel rausholen kannst.
Das Bottleneck ist meistens nicht da wo man es vermutet :-)
Viel Erfolg beim Suchen.
Admin Persönliche Seite #1958081
Lesenswert?

Udo Schmitt schrieb:
> Ich denke mal daß die Division (von was eigentlich) im Compiler schon
> recht optimal umgesetzt worden ist

Das Problem ist dass sich der Compiler exakt an den C-Standard halten 
muss, und dadurch in seiner Optimierung eingeschränkt ist.

Manche DSPs haben Befehle für Logarithmus/Exponentialfunktion (mit 
eingeschränkter Genauigkeit), damit lässt sich ein Kehrwert effizient 
berechnen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren