-
-
Erfahrener Benutzer
Roboter Genie
Eine Division ließe sich sogar noch sparen, indem man einfach mit 1024 (=2^10) arbeitet. 1024 reicht, da i nur im Intervall ]0; 1024] liegen kann.
(2048 geht natürlich auch, dann ist der Shift eben 11)
((1024L<<10)/(long)i-1024)*63+512)>>10;
((1024L<<11)/(long)i-204
*63+1024)>>10;
Wenn man jetzt noch die Multiplikation mit 64 statt mit 63 durchführt:
((1024L<<10)/(long)i-1024)<<6+512)>>10;
wird es noch etwas kompakter (und schneller). Der Fehler, der durch die Ersetzung von 63 durch 64 entsteht bleibt immer unter 1.59%, was weniger als die Toleranz der Widerstände ist
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen