je viens pas souvent par la ...
mais je suis tombé sur un bout de code que j'arrive pas a comprendre![]()
contexte: calcul de la racine carrée inverse d'un reel par la methode de newton
la methode de newton, j'ai presque tout compris (vous aurez deviné que moi et les maths ... :S), mais le code se contente d'une seule iteration pour obtenir une valeur tres correcte.
la determination de yo (first guess) me laisse perplexe.
assez de blah blah, voila le code:
tiré du code source de quake3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) &i; y = y * ( threehalfs - ( x2 * y * y ) ); #ifndef Q3_VM #ifdef __linux__ assert( !isnan(y) ); #endif #endif return y; }
apres quelques recherches je suis tombé la dessus:
http://www.math.purdue.edu/~clomont/...03/InvSqrt.pdf
mais j'ai pas tout compris (me faudrais une cervelle).
donc j'aimerais savoir si vous aviez d'autres ressources sur le sujet. (rien trouvé d'autre de serieux sur google) histoire d'avoir plusieurs redactions differentes (j'espere comprendre quelque chose en croisant plusieurs docs)









Répondre avec citation

Partager