Fixed point-problem
Postat: 4 maj 2011, 16:05:50
Godagens!
Jag håller på och optimerar en beräkningsloop jag har med fixed point där jag räknar ut normalen av 2st accelerationsvektorer.
Problemet är att svaret inte får plats i mitt fixed point tal när man kvadrerar talen:a och b kan vara upp till 4095 (2^12) (från sensorerna) vilket ger att deras kvadrater behöver minst 24bitar, medans jag bara har 13 bitar över till dem (decimal delen har 18 bitar och 1 bit till tecken, 32 bitar totalt).
Finns det något trick man kan göra för att få detta att fungera?
Jag funderar på att dividera allt med ett godtyckligt tal som jag sedan kan gångra med igen så här:för att skala om talet, men det borde finnas något bättre sätt att göra det på tycker jag.
För problemet här är om jag gör de för små så försvinner de när man tar kvadraten på de och är det förstora så får de inte plats.
Tack på förhand!
Mvh
Emil
Jag håller på och optimerar en beräkningsloop jag har med fixed point där jag räknar ut normalen av 2st accelerationsvektorer.
Problemet är att svaret inte får plats i mitt fixed point tal när man kvadrerar talen:
Kod: Markera allt
c = sqrt(a^2 + b^2)
Finns det något trick man kan göra för att få detta att fungera?
Jag funderar på att dividera allt med ett godtyckligt tal som jag sedan kan gångra med igen så här:
Kod: Markera allt
c = sqrt((a/d)^2 + (b/d)^2)*d
För problemet här är om jag gör de för små så försvinner de när man tar kvadraten på de och är det förstora så får de inte plats.

Tack på förhand!
Mvh
Emil