Hallo, ich möcht im DSP dividieren. Das brauch aber mehrere Rechenschritte, daher wollt ich fragen ob und wie ich den Kehrwert in C programmieren kann? Philipp
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
Du könntest alle Kehrwerte in einer Lookup-Tabelle speichern. Anders geht's glaube ich nicht.
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). :-)
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.
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.
Vielen Dank für die Anregungen. Werd mal ein bisien ausprobieren. Sitz aber grad noch an einem anderem Problem.
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.