DBL_EPSILON/std :: numeric_limits :: epsilon me donnera la plus petite valeur qui fera la différence lors de l'ajout d'un seul.Quand utiliser DBL_EPSILON/epsilon
J'ai de la difficulté à comprendre comment appliquer ces connaissances à quelque chose d'utile.
L'epsilon est beaucoup plus grand que la plus petite valeur que l'ordinateur peut gérer, donc il semblerait comme une supposition correcte qu'il est sûr d'utiliser des valeurs plus petites que epsilon?
Le rapport entre les valeurs avec lesquelles je travaille doit-il être inférieur à 1/epsilon?
'approximately_equal' ne fonctionnera pas correctement pour de très grandes valeurs, puisque la taille de l'intervalle entre la valeur représentable actuelle et la plus proche suivante dans un double change avec l'amplitude (parce que l'exposant change). Pour ce faire, il faudrait recalculer un epsilon contextuellement précis en fonction de la valeur comparée. – numist
@numist, en multipliant epsilon par 'max (fabs)' devrait donner la bonne grandeur, et l'argument ulp permet de donner des informations contextuelles sur l'erreur relative déjà accumulée. Si vous pensez toujours qu'il y a un problème, pourriez-vous en préciser la source? – AProgrammer
Epsilon n'est pas proportionnel de façon continue. Avec le codage IEEE, epsilon est proportionnel à une valeur de manière discrète sur la base 2. http://stackoverflow.com/questions/5064377/c-comparing-two-floating-point-values/35536839#35536839 –