On 19 May 2003 03:06:19 -0700, bojensen_99@yahoo.dk (Bo Jensen) wrote:
(Bemærk: Jeg er *ikke* matematik-kyndig)
>pow(x,2)
== x*x
>result/=sqrt(x)
Prøv med sqrt((float)x). Undersøg & test din compilers muligheder for
optimering & profilering - har du f.eks. husket at vælge fast-math?
En opslagstabel for f(x) er kun anvendelig hvis x let & hurtigt kan
omdannes til et passende lille heltal.
Typisk vil nedbrydning & optimering af den overordnede algoritme give
*meget* bedre resultat end optimering af en lille detalje. Muligheder
for optimering af din mikroskopiske kodestump afhænger meget af hvad x
er. Måske kan du helt undgå sqrt() og divisioner?
F.eks. kan result/=sqrt() mig bekendt omsættes til result*=1/sqrt(x),
hvilket er interessant fordi 1/sqrt() typisk er en *del* af
sqrt()-algoritmer.
>det må være lavet før, nogen forslag til hvor ?
http://www.azillionmonkeys.com/qed/sqroot.html
Se hastigheder nederst - 10 clock cycles? Svært at gøre bedre.
Ellers er her måske noget:
http://www.programmersheaven.com/zone3/mh173.htm
(nederst: Mathematics, General Code)
/Peder Skyt