Perte de l'Associativité de l'Addition





                    (1.10 + 3.30) + 5.50 = 9.900000 = 0x411E6666
                                                  #            #

est différent de :



                    1.10 + (3.30 + 5.50) = 9.900001 = 0x411E6667
                                                  #            #



Les calculs sont effectués en simple précision (c'est-à-dire sur 32 bits et ce afin de simplifier l'édition hexa-décimale des résultats ci-dessous) sur un PC Linux à l'aide du programme suivant (où la fonction 'ADD' est destinée à forcer l'ordre des additions) :



                    float     ADD(x,y)
                    float     x,y;
                              {
                              return(x+y);
                              }

main() { float A=1.1,B=3.3,C=5.5; float X,Y;
X=ADD(ADD(A,B),C); Y=ADD(A,ADD(B,C));
printf("\n (%f x %f) x %f = %f\n",A,B,C,X); printf("\n %f x (%f x %f) = %f\n",A,B,C,Y); }



Voici, au passage, un exemple de résultats obtenus en double précision (c'est-à-dire sur 64 bits) :



                    (1.11 + 3.33) + 5.50 = 9.940000000000001 = 0x4023E147AE147AE2
                                                           #                    #

est différent de :



                    1.11 + (3.33 + 5.50) = 9.940000000000000 = 0x4023E147AE147AE1
                                                           #                    #












Jean-François COLONNA
www.lactamme.polytechnique.fr
jean-francois.colonna@polytechnique.edu
CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641, Ecole Polytechnique, CNRS, 91128 Palaiseau Cedex, France
france telecom, France Telecom R&D

[Site Map, Help and Search [Plan du Site, Aide et Recherche]]
[The Y2K bug [Le bug de l'an 2000]]
[Croyez-vous que les Nombres Réels existent dans un ordinateur et que les calculs flottants sont sûrs ?]
[N'oubliez pas de visiter Une Machine Virtuelle à Explorer l'Espace-Temps où vous trouverez plusieurs milliers d'images et d'animations à la frontière de l'Art et de la Science]
(Site WWW CMAP28 : cette page a été créée le 17/10/2003 et mise à jour le 03/11/2018 12:03:37 -CET-)



Copyright (c) Jean-François Colonna, 2003-2018.
Copyright (c) France Telecom R&D and CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2003-2018.