Calcul rapide d'une gaussienne.
Bonjour,
je calcule une valeur gaussienne de la manière suivante :
Code:
1 2 3 4 5
|
private double gaussian(double x, double y, double sig)
{
return Math.exp(-(x*x+y*y)/(2*sig*sig)) / (2.0*Math.PI*sig*sig) ;
} |
Seulement cette fonction est appelées des millions de fois, donc je souhaiterai savoir s'il n'y a pas un moyen plus rapide de faire le calcul. Bon à vrai dire je serai surpris que oui.
J'avais pensé à :
- pré-calculer des valeurs, mais les paramètres x, y et sig sont TRES variables.
- faire des approximations car si x et y sont grands, le résultat est quasi nul.
Merci par avance...
PS : quelle est la complexité de la fonction Math.exp() ?
En gros, est elle très gourmande en terme de CPU ?