Bug FPU sur XP2800+ FSB333 ??? - Carte mère - Hardware
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
Marsh Posté le 05-07-2004 à 05:25:50
je parlais d"un bug de programmation
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é
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?
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.
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.
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)
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à 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.
quoi 39-37,3-1,7
prend n'importe quel calculette tu verras
par contre si tu me dis que c'est liée au language de programmation utilisé, c'est limite plus crédible
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
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 !
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 ???
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
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...
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
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 ?
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
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
Marsh Posté le 05-07-2004 à 16:00:06
jc the great a écrit : 13.5 c'est : |
J'ai un mal de tronche moi .....
Marsh Posté le 05-07-2004 à 16:05:48
Ca n'explique pas pouruqoi Star office ne se plante pas et bien excell
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 ... ?
Marsh Posté le 05-07-2004 à 16:16:08
que veux tu dire par double la mantisses? (lol dsl d'etre aussi inculte)
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.
Marsh Posté le 05-07-2004 à 16:24:14
HybridTheory2 a écrit : en format standard seulement |
C'est lié au mode FPU plutot...
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...
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!
Marsh Posté le 05-07-2004 à 16:43:12
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 ...
En tout cas, cela fait un peu peur pour des calculs bcq plus compliques ....
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.
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.
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+)
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 ) Pour un grand logiciel comme excel il y aurai pu avoir un léger effort, même si en numérique ca marche bien.
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. |
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.
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 ??
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 ?
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.
Marsh Posté le 11-07-2004 à 00:38:16
Bref.... en conclusion c'est un bug hallucinant de Excel.
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