Bonjour,
Je code actuellement un petit moteur 3D et j'ai un petit souci, j'aimerai optimiser les fonctions de bases ( cos, sin, sqrt, etc ...)
Je pensais utiliser les développements limités avec pour cos la fameuse formule :
cos(x) = 1 - x^2 / 2! + x^4 /4! + ... + (-1)^n (x^2n / 2n!) + x^2n+1 E(x)
or voila, j'ai quand même voulu savoir comment les autres faisait pour ce calcule , que ça soit chez NVIDIA (le sdk) ou sur d'autres sites, je trouve le code suivant :
Code :
- float fast_cos(const float val)
- {
- float fASqr = val*val;
- float fResult = -2.605e-07f;
- fResult *= fASqr;
- fResult += 2.47609e-05f;
- fResult *= fASqr;
- fResult -= 1.3888397e-03f;
- fResult *= fASqr;
- fResult += 4.16666418e-02f;
- fResult *= fASqr;
- fResult -= 4.999999963e-01f;
- fResult *= fASqr;
- fResult += 1.0f;
- return fResult;
- }
|
Les coéficients du polynome ne correspondent pas (excatement) et j'aimerai comprendre pourquoi, si il s'agit d'une approximation mathèmatique et quelle est elle ? (je ne suis qu'en première année de licence math/info)
Merci pour toute vos réponses !!!!