• [^] # Re: Calcul par intervalle

    Posté par (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.

    Dans la publication suivante, les auteurs de MPFI expliquent que si l'intervalle grossit trop, ils refont le calcul avec une précision supérieure (précision pour l'intervalle du résultat). Genre on calcule a + b avec une précision de 10 chiffres, si lle résultat est trop gros, on calcule avec 20 chiffres.
    http://www.cs.utep.edu/interval-comp/interval.02/revo.pdf

    Ceci n'est possible qu'en utilisant une bibliothèque (MPFR) offrant une précision variable. Les flottants IEEE ont une précision fixe (32, 64, 80 bits).

    Le papier explique également que MPFI marche parce que MPFR réalise un arrondi exact : calculer 1 - 9e-10 avec une précision de 4 chiffres donne 0,999 et non pas 1,000 comme le fait Mapple IntPack (c'est un exemple simplifié pour illustrer le problème d'arrondi)... Si j'ai bien compris IntPack utilise les nombres IEEE et pas une bibliothèque du type MPFR à précision variable justement.

    Extrait du papier : « It can be noticed that the rule of thumb “to get more digits, one has to increase the computing precision by roughly the same number of digits” can fail, for instance when computing a square root or more generally a 1/n-th power close to 0. However, the rule of thumb becomes in such cases “to get α more digits, one has to increase the computing precision by roughly nα digits”. In other words, in most cases an increase in the computing precision yields an improved accuracy on the results. »