2009-01-23 29 views
1

La question que je signifiait demander préoccupé par la mantisse, pas le exponent, et a beaucoup à voir avec la question que je posais plus tôt dans la semaine concernant "missing" digits on the sum of two negative floats.Comment détecter le dépassement de la précision d'une mantisse dans GMP, avant ou après?

Étant donné que la mantisse a une précision variable, comment peut-on dire si on a débordé le réglage de précision actuel de la mantisse? Ou, du côté proactif, comment peut-on dire si le dépassement de la précision de la mantisse est probable?

Cordialement, Bruce.

Répondre

2

Il existe quelques méthodes numériques pour voir si vous allez perdre de la précision, mais l'essentiel est que vous devez mieux comprendre la définition de la précision.

-4939600281397002,2812

et

-4939600281397002,2812000000000000

sont pas le même nombre.

Lorsque vous ajoutez

-2234,6016114467412141

et

-4939600281397002,2812

ensemble, la bonne sortien'aura 20 chiffres de précision, parce que les 12 autres chiffres du les plus petits nombres sont dénués de sens étant donné que les 12 chiffres de même taille dans le plus grand nombre sont inconnu Vous pouvez supposer qu'ils sont nuls, mais si c'est le cas, vous devez les déclarer explicitement comme tels et utiliser un système de numérotation capable de les gérer - l'ordinateur n'est pas doué pour comprendre les intentions implicites.

En ce qui concerne la détection de ce problème, tout ce que vous avez à faire est de savoir s'ils ont le même exposant (en supposant une mantisse normalisée +/- 1 ou un équivalent binaire similaire). Si elles ne sont pas normalisées, vous devrez les normaliser pour les comparer ou utiliser une comparaison légèrement plus complexe avec l'exposant.

de précision et la précision ne sont pas la même chose ...

-Adam