Come rilevare l'overflow di precisione della mantissa in GMP, prima o dopo che ciò accada?
Domanda
La domanda che intendevo porre riguardava la mantissa, non la esponente , e ha molto a che fare con la domanda che ho posto all'inizio della settimana riguardo a " mancante " cifre sulla somma di due float negativi.
Dato che la mantissa ha una precisione variabile, come si fa a sapere se si è traboccato dall'attuale impostazione di precisione della mantissa? Oppure, dal punto di vista proattivo, come si può sapere se è probabile un overflow di precisione della mantissa?
Cordiali saluti, Bruce.
Soluzione
Esistono alcuni metodi numerici per vedere se perderai la precisione, ma la linea di fondo è che devi capire meglio la definizione di precisione.
-4939600281397002,2812
e
-4939600281397002,2812000000000000
NON sono lo stesso numero.
Quando aggiungi
-2234,6016114467412141
e
-4939600281397002,2812
insieme, l'output corretto avrà solo 20 cifre di precisione, perché le 12 cifre aggiuntive nel numero più piccolo sono prive di significato dato che le 12 cifre di dimensioni simili nel numero più grande sono sconosciute . Puoi implicare che sono zero, ma in tal caso devi dichiararli esplicitamente come tali e utilizzare un sistema di numerazione in grado di gestirlo - il computer non è bravo a comprendere le intenzioni implicite.
Per quanto riguarda il rilevamento di questo problema, tutto quello che devi fare è scoprire se hanno lo stesso esponente (supponendo una mantissa normalizzata +/- 1 o un equivalente binario simile). Se non sono normalizzati, è necessario normalizzarli per il confronto o utilizzare un confronto leggermente più complesso con l'esponente.
Precisione e accuratezza non sono la stessa cosa ...
-Adam