Bug FPU sur XP2800+ FSB333 ???

Bug FPU sur XP2800+ FSB333 ??? - Carte mère - Hardware

Marsh Posté le 05-07-2004 à 02:37:15    

Bonjour a tous,
 
Je viens d'avoir une drole de surprise Sous Excel 2003 Fr;
en tapant le formule suivante:=39-37,8-1,2
j'obtiens les resultat 2,88658E-15 au lieu de 0 ... bug excel ou CPU ??
Pouvez-vous essayer sur vos machine ??
Merci par avance

Reply

Marsh Posté le 05-07-2004 à 02:37:15   

Reply

Marsh Posté le 05-07-2004 à 05:12:48    

Put1 zarb ton pb
j'ai le mm pb "resultat 2,88658E-15 au lieu de 0" sa sent le gros bugs à plein nez
p4 + excel 2002

Reply

Marsh Posté le 05-07-2004 à 05:25:50    

je parlais  d"un bug de programmation :fou:  
si le pb venait du cpu le resultat serait+ aléaroire et encore la ram y est souvent pour quelque chose ...
 
ps: c'est une honte pour M$, excel leur soft de compta est buggé :ouch:  :kaola:


Message édité par hybridtheory2 le 05-07-2004 à 05:27:06
Reply

Marsh Posté le 05-07-2004 à 06:07:19    

Tiens, c'est drôle, ça le fait aussi sous google si tu tapes l'opération en recherche: il t'affiche l'option calculette qui donne le même résultat louche. C'est un truc connu? y a une astuce ou c'est vraiment un sale bug exclusif? :)


Message édité par Tatsuya le 05-07-2004 à 06:07:35
Reply

Marsh Posté le 05-07-2004 à 12:45:53    

Je ne sais pas ... En tout cas c'est vraiement par hazard que j'ai decouvert ce blem.

Reply

Marsh Posté le 05-07-2004 à 13:37:38    

pareil pour =39-37,3-1,7
en format standard seulement (c'est une histoire d'arrondi en virgule flottante). Certains nombres décimaux en base 10 ne peuvent pas etre écris (sans perte) en base 2.


---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 13:44:27    

M^ême problème avec Excel2003 +p4c 2.6 donc je pense pa que ca vienne du proco.. Grosoft a du ns pondre encore un programme buggé jusqu'à la moelle (ca me rappele windows Me ça)

Reply

Marsh Posté le 05-07-2004 à 14:20:41    

en format standard seulement
 Qu'es ce que tu veux dire par là?
 
(c'est une histoire d'arrondi en virgule flottante).  
 c'est quoi cette sombre histoire d'arrondie, c'est ultra simple comme calcul là :pt1cable: nos procos sont capables de traitrer des calculs en virgule flottante en double precision  
 
Certains nombres décimaux en base 10 ne peuvent pas etre écris (sans perte) en base 2.
  :heink:  quoi 39-37,3-1,7  :lol:  
prend n'importe quel calculette tu verras :whistle:  
par contre si tu me dis que c'est liée au language de programmation utilisé, c'est limite plus crédible


Message édité par hybridtheory2 le 05-07-2004 à 14:21:33
Reply

Marsh Posté le 05-07-2004 à 14:37:22    

Au put1 les gars j'ai trops les boules
j'ai sortie le Python 2.3.3 (language de programmation)
mm topo = 2.886579864025407e-015
 deja pour lui 39-37.3 = 1.7000000000000028

Reply

Marsh Posté le 05-07-2004 à 14:47:01    

je parle du format de cellule standard d'excel.
Certains types de donnée flottant sont stockés matériellement sous la forme Mantissse + 2 puissance Exposant. Ca n'a rien d'un bug vous me faites rire !


Message édité par jc the great le 05-07-2004 à 14:49:44

---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 14:47:01   

Reply

Marsh Posté le 05-07-2004 à 15:01:28    

Z'avez essayé ça :
-37,3-1,7+39
 
et là ça fait bien 0.
Marrant non ???
 
Edit :
Par contre :
-37,3+39-1,7 -> 2,88658E-15 comme 39-37,3-1,7.
Astonishing not ???


Message édité par umbre_tombetoile le 05-07-2004 à 15:03:09
Reply

Marsh Posté le 05-07-2004 à 15:10:45    

jc the great : si tu choisis format de cellule nombre et que tu tape 30 décimale de précisions c ce résultat qu'on obtient ... c bizarre quand meme cette opération


---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 15:12:25    

Je viens d'essayer avec Star Office 5.2 et je n'ai pas d'erreur, 0 tjs meme avec 20 décimales...


---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 15:24:20    

une jolie aussi:=10^15 -37,2 -10^15 = ... -37.25 !! ca fait une erreur de  0.05 quand meme ...
 
edit: une autre: =1234567890123456789 ca devient =1234567890123450000


Message édité par jc the great le 05-07-2004 à 15:28:33

---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 15:25:46    

Lacrimosa a écrit :

jc the great : si tu choisis format de cellule nombre et que tu tape 30 décimale de précisions c ce résultat qu'on obtient ... c bizarre quand meme cette opération


 
je comprends pas ce que tu dis. quel résultat ? avec quels opérations ?


---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 15:29:42    

je veux dire si on laisse le format standard de excell on obitent la version avec E15, si on passe en format cellule nbr, on a 0.00 mais si on passse en nbr précision 30 décimales, on a bien le 0.00...02886... mais pas quand on le fait dans le classeur star office, c étrange quand meme, non?
 
Sinon excell ou star office se plante dans ton autre exemple...
 
EDIT mais pas dans le dernier que tu as édité si on précise avant la précision


Message édité par Lacrimosa le 05-07-2004 à 15:32:30

---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 15:59:06    

Pour représenter la valeur 13.5 en décimal c'est :
1*10^1 + 3*10^0 + 5*10^-1
 
(l'exposant de la base de calcul est négatif à droite de la virgule)
 
Pour représenter la valeur 13.5 en binaire 1101.1 :
1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 + 1*2^-1
 
(l'exposant de la base de calcul est négatif à droite de la virgule)
 
Pour 13.5 la représentation décimal et binaire est exacte.
 
Maintenant essaie cette décomposition pour 13.3 ! tu verras que ca n'est possible qu'en approximation.
1101.01001...(13.28125...) etc
 
edited pour les maux de crane ;)


Message édité par jc the great le 05-07-2004 à 16:10:23

---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 16:00:06    

jc the great a écrit :

13.5 c'est :
1*10^1 + 3*10^0 + 5*10^-1
 
en binaire 1101.1 :
1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 1*2^-1
 
la ca tombe juste. Maintenant essaie cette décomposition pour 13.3 ! tu verras que ca n'est possible qu'en approximation.
1101.01001...etc


 
J'ai un mal de tronche moi  :(  :( .....

Reply

Marsh Posté le 05-07-2004 à 16:05:48    

Ca n'explique pas pouruqoi Star office ne se plante pas et bien excell


---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 16:12:27    

double la mantisse et star office se plantera aussi.
Peut etre que StarOffice n'a pas les memes types par défaut qu'Excel, pourquoi auraient ils les memes d'abord ... ?


---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 16:16:08    

que veux tu dire par double la mantisses? (lol dsl d'etre aussi inculte)


---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 16:24:09    

je veux dire, augmente le nombre de chiffre significatif dans tes calculs.
12345678901234567890123456789/5*5 par exemple. on devrait bien finir par le faire craquer aussi le SO !
Si ca se trouve staroffice utilise des types de donnée très large ou dynamique et dans ce cas on ne pourra pas mettre en défaut staroffice de manière simple.


---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 05-07-2004 à 16:24:14    

HybridTheory2 a écrit :

en format standard seulement
 Qu'es ce que tu veux dire par là?
 
(c'est une histoire d'arrondi en virgule flottante).  
 c'est quoi cette sombre histoire d'arrondie, c'est ultra simple comme calcul là :pt1cable: nos procos sont capables de traitrer des calculs en virgule flottante en double precision  
 
Certains nombres décimaux en base 10 ne peuvent pas etre écris (sans perte) en base 2.
  :heink:  quoi 39-37,3-1,7  :lol:  
prend n'importe quel calculette tu verras :whistle:  
par contre si tu me dis que c'est liée au language de programmation utilisé, c'est limite plus crédible


 
C'est lié au mode FPU plutot...

Reply

Marsh Posté le 05-07-2004 à 16:32:25    

Bon enfin on dira ce qu'on voudra c quand meme etrange ce calcul qui parait ultra simple a premeire vue...


---------------
Une faible lumière de bougie lutte dehors devant ma porte et réchauffe ma petite étincelle de vie.
Reply

Marsh Posté le 05-07-2004 à 16:36:42    

C'est clair, peu importe l'explication derrière ça, ça reste quand même un bug abérant pour l'utilisateur. C'est vraiment un calcul de base!

Reply

Marsh Posté le 05-07-2004 à 16:43:12    

:sarcastic:
:hello:


Message édité par jc the great le 05-07-2004 à 16:43:47

---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 06-07-2004 à 02:36:27    

Tatsuya a écrit :

C'est clair, peu importe l'explication derrière ça, ça reste quand même un bug abérant pour l'utilisateur. C'est vraiment un calcul de base!


C'est clair ...  :fou:  
En tout cas, cela fait un peu peur pour des calculs bcq plus compliques .... :heink:

Reply

Marsh Posté le 06-07-2004 à 09:09:10    

Tatsuya a écrit :

C'est clair, peu importe l'explication derrière ça, ça reste quand même un bug abérant pour l'utilisateur. C'est vraiment un calcul de base!


 
C'est pas lié à Excel mais à la gestion de la FPU par le CPU. Pour accélérer les choses, ils utilisent des FPU limitées en taille et donc limitées en précision.
 
C'est tout, y a rien d'original...
 
Ca fait des années que c'est connu, et on ne peut rien faire. Ce n'est pas un bug mais une erreur d'arrondi.
 
La preuve :
 
=39-37.9-1.1 renvoie 0.


Message édité par Tetedeiench le 06-07-2004 à 09:10:36
Reply

Marsh Posté le 07-07-2004 à 02:48:32    

Non, ce n'est pas normal. Travaillant dans le domaine de la micro-elec (Mon titre Msc IC Design Engineer), je suis parfaitement au courrant du probleme dont tu parle. On pourrait parler de bug dans le cas ou ce phenomene existerait sur une seule plate-forme, mais dans ce cas precis l'erreur se produit sur Intel & AMD.
La base de raisonnement de jc the great est correct, mais ne tiens pas face a mon probleme pour plusieurs raison:
1/ 39 est un nombre entier, donc tres facile a ecrire en binaire
2/ 37.80 & 1.20 sont certe des nombres a virgule, mais ils sont pair et fini !!! Donc cela ne pose aucun probleme pour les ecrire en binaire.
Donc le probleme est ailleurs.

Reply

Marsh Posté le 07-07-2004 à 03:24:13    

En tout cas, avec Open Office Calc, =(39-37,8-1,2) renvoie 0 et =(39-37,9-1,1) renvoie 0 aussi.
 
(sur un Athlon XP 1800+)

Reply

Marsh Posté le 07-07-2004 à 05:12:16    

Je trouve ca très bizarre même si je comprend pourquoi cela donne ce résultat (et même dans google :P )  Pour un grand logiciel comme excel il y aurai pu avoir un léger effort, même si en numérique ca marche bien.

Reply

Marsh Posté le 07-07-2004 à 10:46:03    

Raxor a écrit :

Non, ce n'est pas normal. Travaillant dans le domaine de la micro-elec (Mon titre Msc IC Design Engineer), je suis parfaitement au courrant du probleme dont tu parle. On pourrait parler de bug dans le cas ou ce phenomene existerait sur une seule plate-forme, mais dans ce cas precis l'erreur se produit sur Intel & AMD.
La base de raisonnement de jc the great est correct, mais ne tiens pas face a mon probleme pour plusieurs raison:
1/ 39 est un nombre entier, donc tres facile a ecrire en binaire
2/ 37.80 & 1.20 sont certe des nombres a virgule, mais ils sont pair et fini !!! Donc cela ne pose aucun probleme pour les ecrire en binaire. fais le avec 13.3, on est tout ouï !!
Donc le probleme est ailleurs.


 
1/ un calcul impliquant des nombres décimaux et des entiers va travailler sur des flottants, sinon des résultats intermédiaires sont faux
2/ ils ne sont finis qu'en base dix. la décomposition que j'ai faite, vous ne l'avez pas lue ?
Les processeurs stockent les infos en binaire.
Comment écris tu de maniere finie 13.3 en binaire ?!!
 
ce nombre ne peux pas s'écrire de maniere finie en base 2.
Tu peux élargir tes types sur toutes ta mémoire vive le probleme resurgira de toutes les facons.


Message édité par jc the great le 07-07-2004 à 10:47:54

---------------
"L'autodidacte, qui dans la vie, est parti de zéro pour n'arriver à rien dans l'existence, n'a de merci à dire à personne." (Pierre Dac)
Reply

Marsh Posté le 08-07-2004 à 01:10:13    

1/ Sur les projets que j'ai travaille, on gerait les flottants de la facon suivante:
ex pour 11.75:
... 32 16 8 4 2 1   1/2 1/4 1/8 1/16 ...
...  0  0 1 0 1 1    1   1   0   0   ...
Donc tout nombre flottant mutliple de 2, peux s'ecrire de maniere fini ....
 
Euuuh .... Mmmm... Dis-moi on ne serait pas d'accord tout les deux ??? Je viens de relire ton post. Dans ton example tu sites le case de 13.3 ... J'avais mal lu ..
Mais tu es d'accord pour dire que 37.8 et 1.2 sont des ecrivable de facon fini en binaire ?? Et que le resultat obtenu est aberant ??
 
 

Reply

Marsh Posté le 08-07-2004 à 03:11:34    

Oui il peuvent s'écrire de facon fini, mais pas en simple précision comme le format de excel a l'air de faire et en double précision le chiffre peut etre fini alors le résultat est juste, j'ai la flemme de calculer combien donne 1.2 et 37.8 en binaire.
 
Et depuis quand 11.75 est une multiple de deux ?

Reply

Marsh Posté le 08-07-2004 à 10:10:34    

Pour les conversions : http://perso.univ-lr.fr/pcourtel/h [...] iee754.htm.
Pour convertir en flottant il faut d'abord l'écrire sous la forme 0.X*10^Y on ecrit Y en binaire (entier en complément vrai) sur 8 ou 11 bits,c'est l'exposant, ensuite on écrit X sous forme de somme de puissance négative de 2 (0.5+0.25+etc ....) comme ça va forcément commencer par un 0 on l'enlève ça donne la mantisse sur 23 ou 52 bits et ya plus qu'à rajouter le signe donc ça fait 32 ou 64 bits.

Reply

Marsh Posté le 11-07-2004 à 00:38:16    

Bref.... en conclusion c'est un bug hallucinant de Excel.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed