On 2005-02-28 08:44:10 +0100, i_manuel wrote:
> >>>>Cellule A1, inscrire : "0,2"
> >>>>Cellule A2, inscrire : "= 11*A1 - 2"
> >>>>Recopier la cellule A2 vers le bas et observer ...
> >>>>
> >>>>Dans le m�me genre, une activit� qui m'�tais d�j� arriv�e en 
> >>>>cours :
> >>>>Cellule A1, inscrire : "-1"
> >>>>Cellule A2, inscrire : "= A1 + 0,1"
> >>>>Recopier la cellule A2 vers le bas et observer ...
> pour la premi�re, an A18 ob obtient 86 environ
> pour la seconde A11 n'affiche pas 0 (sauf openoffice)

Ah, d'accord, je n'avais pas compris qu'il fallait r�p�ter l'op�ration.
Bon, le comportement que tu observes n'est pas un bug. Il s'agit juste
de propagation d'erreurs d'arrondi. Comme il y a une cancellation[*] �
chaque �tape, on arrive vite � un r�sultat qui n'a plus aucun sens.

[*] Supposons pour simplifier que l'on ait un syst�me avec 15 chiffres
binaires (bits). 2,2 - 2 s'�crit en binaire:

      10.0011001100110
    - 10.0000000000000
    ------------------
       0.0011001100110

dont les chiffres significatifs sont 11001100110, i.e. on n'a plus
que 11 chiffres significatifs (4 chiffres ont �t� "cancell�s" dans
la soustraction). Autrement dit, l'erreur relative devient beaucoup
plus importante.

Sous Linux/x86, les calculs interm�diaires se font en pr�cision
�tendue et le r�sultat final est arrondi en double pr�cision, si bien
qu'il n'y a pas de probl�me avec le premier test (attention, c'est un
cas particulier, la pr�cision �tendue ne permet pas toujours de cacher
les erreurs d'arrondi, et l'inverse peut m�me se produire).

Pour le second test, si X et Y sont diff�rents mais *tr�s* proches,
OpenOffice renvoie 0 pour X - Y (cf un de mes messages pr�c�dents
mentionnant le code source d'OpenOffice). Je pense que �a explique
qu'OpenOffice renvoie 0 pour A11.

-- 
Vincent Lef�vre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à