Salut !!
J'optimise actuellement mon programme graphique (un "jeu" ou plutot test coding) en réécrivant toutes les fonctions mathématiques usuelles avec les optimisations possibles du processeur.
Ainsi, j'en suis a la 3DNow !. Je viens de terminer ma fonction exponentielle. Cependant, je n'obtiens pas une excellente précision
Voici mon code :
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
21
22
23
24
25
26
27 float exp(int Power) { float Res; _asm{ femms //initialisation des variables mov Res,0 movq mm0, [fExp] mov eax,1 //debut de la boucle calcexp: pfmul mm0,[fExp] inc eax cmp eax, Power jne calcexp movq [Res], mm0 femms } return Res; }=> c'est un code C++ dans lequel est inséré de l'asm.#define Exp1 2.71828182845f // e^1
....
float fExp = Exp1;
Sauriez vous donc pourquoi la précision laisse quelque peu a désirer (J'en ai une de l'ordre de 10^-4 avec la derniere décimale arrondi) ?
merci[/quote]
Partager