Bonjour,
j'ai post� hier pensant avoir un pb dans mon programme et en fait cela ne vient pas de moi.
Voil� j'ai cod� une appli C/C++ sur snowleopard avec Xcode et tout marchait pour le mieux.
En recondant le tout sous visual C++, bizarre, r�sultats aberrants.
En affinant mes recherches, j'ai finalement vu l'endroit ou cela coin�ait mais aucune id�e pour r�soudre le probl�me.
Alors voila, j'ai une fonction simple, appelons la f d�finie comme suit dans mo programme sous Xcode
Les fonction C99 et donc 'erf' n'�tant pas prises en charge sous VC++, je fais appel � boost, et la fonction reste la m�me � part que j'appelle boost::math::erf
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 double f(double x){ return 0.5*(1-erf(x/sqrt(2))) }
Passons ensuite au r�sultats.
La fonction erf est une fonction d�finie sur tout R comme le montre
http://fr.wikipedia.org/wiki/Fichier:Erf_plot.svg
D�clarons
double a = -37.1326;
double b = -8.26506;
double ra = f(a);
double rb = f(b);
f(a) et f(b) sont donc tr�s proches de 1
Si je fais des printf("%e", ra) et printf("%e",rb)
je vais voir s'afficher sur la console 1.000000e+00 sous Xcode et VC++
Maintenant, faisons la diff�rence
double dif = f(a)-f(b);
et printf("%e",dif);
Sous Xcode on obtient 1.11022e-16, sous VC++ on obtient 0.000000e+000
VC++ m'enl�ve donc toute pr�cision en faisant la diff�rence. Mais d'un autre c�t�, pourquoi Xcode m'enl�ve-t-il �galement la pr�cision sur l'affichage s�par� de f(a) et f(b) et m'affiche quelquechose de correct pour la diff�rence.
Toujours est-il que je dois avoir cette pr�cision et que je n'ai pas la solution � ce pb
Merci a celui qui m'apportera une aide![]()
Partager