Successivo: Funzionalità MPFR, Precedente: Aritmetica del computer, Su: Calcolo con precisione arbitraria [Contenuti][Indice]
Il resto di questo capitolo usa un certo numero di termini. Di seguito vengono date alcune definizioni informali che dovrebbero essere utili per la lettura di questo documento:
L’accuratezza del calcolo sui numeri in virgola mobile indica di quanto si avvicina il calcolo al valore reale (calcolato con carta e penna).
La differenza tra quello che il risultato di un calcolo “dovrebbe dare” e quello che effettivamente dà. È meglio minimizzare l’errore quanto più possibile.
L’ordine di grandezza di un valore; alcuni bit in un valore in virgola mobile contengono l’esponente.
Un valore speciale che rappresenta l’infinito. Le operazioni tra un qualsiasi numero e l’infinito danno infinito.
Un valore in virgola mobile è formato dalla mantissa moltiplicata per 10
alla potenza dell’esponente. Per esempio, in 1,2345e67
,
la mantissa è 1,2345
.
Come i numeri vanno arrotondati, per eccesso o per difetto, quando necessario. Maggiori dettagli verranno forniti in seguito.
“Not a number” (Non un Numero).103 Un
valore speciale che risulta da un calcolo che non ha risposta come numero
reale. In tal caso, i programmi possono o ricevere un’eccezione di virgola
mobile, o restituire NaN
come risultato. Lo standard IEEE 754
consiglia che i sistemi restituiscano NaN
. Alcuni esempi:
sqrt(-1)
La radice quadrata di -1 ha senso nell’insieme dei numeri complessi,
ma non nell’insieme dei numeri reali,
per cui il risultato è NaN
.
log(-8)
Il logaritmo di -8 è fuori dal dominio di log()
,
per cui il risultato è NaN
.
Come la mantissa (vedi oltre in questa lista) è usualmente memorizzata. Il valore viene aggiustato in modo che il primo bit sia sempre uno, e in questo modo l’uno iniziale è supposto presente (per come viene generato il numero), ma non è memorizzato fisicamente. Questo fornisce un bit di precisione in più.
Il numero di bit usati per rappresentare un numero in virgola mobile. Più sono i bit, e maggiore è l’intervallo di cifre che si possono rappresentare. Le precisioni binaria e decimale sono legate in modo approssimativo, secondo la formula:
prec = 3.322 * dps
Qui, prec indica la precisione binaria (misurata in bit) e dps (abbreviazione di "decimal places") indica le cifre decimali.
Dall’articolo di Wikipedia sulla stabilità numerica: “I calcoli per i quali si può dimostrare che non amplificano gli errori di approssimazione sono chiamati numericamente stabili.”
Si veda l’articolo di Wikipedia su accuratezza e precisione per maggiori informazioni su questi due termini.
Sui computer moderni, l’unità di calcolo in virgola mobile usa la
rappresentazione e le operazioni definite dallo standard IEEE 754.
Tre dei tipi definiti nello standard IEEE 754 sono:
32-bit singola precisione,
64-bit doppia precisione e
128-bit quadrupla precisione.
Lo standard specifica anche formati a precisione estesa
per consentire una maggiore precisione e campi di variazione degli esponenti
più ampi. (awk
usa solo il formato a 64-bit doppia precisione.)
Tabella 16.3 elenca la precisione e i valori di campo dell’esponente per i principali formati binari IEEE 754.
Nome | Bit totali | Precisione | Esponente minimo | Esponente massimo |
---|---|---|---|---|
Singola | 32 | 24 | -126 | +127 |
Doppia | 64 | 53 | -1022 | +1023 |
Quadrupla | 128 | 113 | -16382 | +16383 |
NOTA: I numeri che descrivono la precisione includono la cifra 1 iniziale implicita, il che equivale ad avere un bit in più nella mantissa.
Grazie a Michael Brennan per questa descrizione, che abbiamo parafrasato, e per gli esempi.
Successivo: Funzionalità MPFR, Precedente: Aritmetica del computer, Su: Calcolo con precisione arbitraria [Contenuti][Indice]