En général c'est double précision pour tout le monde
Une nouvelle tendance pour les processeurs ou il y a une difference en terme de temps de calcul entre precision simple et precision double:
Effectuer une premiere estimation en precision simple, puis affiner en precision double.
es 80 bits du fpu ont du plomb dans l'aile puisque sur x86_64, tous les calculs se font en SSE2, cad en 64 bits maxi.
Au dela de cette demonstration douteuse:
IEEE precise non seulement un format de stockage de nombre flottans (simple, double), mais aussi une precision sur un certain nombre d'operations, incluant evidement multiplication, division, racine carree, mais aussi certaines fonctions comme les fonctions trigonometriques.
Comme les processeurs ne supportent generalement pas ces dernieres (et encore parfois meme pas la division), le resultat s'obtient par une serie de calcul (rappelez vous les developements limites, lagrange, polynomes de tchebychev....). Afin d'obtenir la precision specifiee par IEEE, il est necessaire d'utiliser une precision plus grande pour les calculs intermediaires. Ceci est le cas jusqu'au jours quelqu'un prouve qu'une telle precision n'est pas necessaire.
La racine carree et la division est generalement prouvee en etudiant la valeur maximale de l'erreur. Mathematiquement, on sait prouver pour la totalite des valeurs sauf certains cas limites. Ces cas limites sont verifies experimentalement.
Pour les autres, c'est plus du "Jusqu'a ce jour, en tenant compte des cas extremes identifies theoriquements, nous avons obtenu une erreur maximale de x. Il n'est pas impossible que l'on en ai manque dans la liste".
Il existe des possiblites ou on peut utiliser des valeurs avec moins de precision pour les calculs intermediare, mais cela necessite plus d'operations, et a la fin cela ne vaut pas le coup.
Dans le poste original: Comment s'écrit un code ? Par essais erreurs ? On doit évaluer "à la main" les fuites de précision et écrire l'algorithme en conséquence ?
Tout a fait. Une etude de l'erreur est effectuee. Mais auparavant, on effectue une etude de stabilite: quel est la variation du resultat si l'on ajoute sur l'une des donnees en entree une petite valeur (epsilon).
J'imagine que c'est la démarche des codes scientifiques pour éviter d'utiliser des nombres étendus plus lent.
Reussir a prouver l'implementation de son calcul, c'est deja pas mal. On repasse generalement plus tard pour reduire la precision.
[^] # Re: plop again
Posté par mdlh . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 5.
Une nouvelle tendance pour les processeurs ou il y a une difference en terme de temps de calcul entre precision simple et precision double:
Effectuer une premiere estimation en precision simple, puis affiner en precision double.
es 80 bits du fpu ont du plomb dans l'aile puisque sur x86_64, tous les calculs se font en SSE2, cad en 64 bits maxi.
Au dela de cette demonstration douteuse:
IEEE precise non seulement un format de stockage de nombre flottans (simple, double), mais aussi une precision sur un certain nombre d'operations, incluant evidement multiplication, division, racine carree, mais aussi certaines fonctions comme les fonctions trigonometriques.
Comme les processeurs ne supportent generalement pas ces dernieres (et encore parfois meme pas la division), le resultat s'obtient par une serie de calcul (rappelez vous les developements limites, lagrange, polynomes de tchebychev....). Afin d'obtenir la precision specifiee par IEEE, il est necessaire d'utiliser une precision plus grande pour les calculs intermediaires. Ceci est le cas jusqu'au jours quelqu'un prouve qu'une telle precision n'est pas necessaire.
La racine carree et la division est generalement prouvee en etudiant la valeur maximale de l'erreur. Mathematiquement, on sait prouver pour la totalite des valeurs sauf certains cas limites. Ces cas limites sont verifies experimentalement.
Pour les autres, c'est plus du "Jusqu'a ce jour, en tenant compte des cas extremes identifies theoriquements, nous avons obtenu une erreur maximale de x. Il n'est pas impossible que l'on en ai manque dans la liste".
Il existe des possiblites ou on peut utiliser des valeurs avec moins de precision pour les calculs intermediare, mais cela necessite plus d'operations, et a la fin cela ne vaut pas le coup.
Dans le poste original:
Comment s'écrit un code ? Par essais erreurs ? On doit évaluer "à la main" les fuites de précision et écrire l'algorithme en conséquence ?
Tout a fait. Une etude de l'erreur est effectuee. Mais auparavant, on effectue une etude de stabilite: quel est la variation du resultat si l'on ajoute sur l'une des donnees en entree une petite valeur (epsilon).
J'imagine que c'est la démarche des codes scientifiques pour éviter d'utiliser des nombres étendus plus lent.
Reussir a prouver l'implementation de son calcul, c'est deja pas mal. On repasse generalement plus tard pour reduire la precision.