Successivo: , Precedente: , Su: Calcolo con precisione arbitraria   [Contenuti][Indice]


16.2 Altre cose da sapere

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:

Accuratezza

L’accuratezza del calcolo sui numeri in virgola mobile indica di quanto si avvicina il calcolo al valore reale (calcolato con carta e penna).

Errore

La differenza tra quello che il risultato di un calcolo “dovrebbe dare” e quello che effettivamente dà. È meglio minimizzare l’errore quanto più possibile.

Esponente

L’ordine di grandezza di un valore; alcuni bit in un valore in virgola mobile contengono l’esponente.

Inf

Un valore speciale che rappresenta l’infinito. Le operazioni tra un qualsiasi numero e l’infinito danno infinito.

Mantissa

Un valore in virgola mobile è formato dalla mantissa moltiplicata per 10 alla potenza dell’esponente. Per esempio, in 1,2345e67, la mantissa è 1,2345.

Modalità di arrotondamento

Come i numeri vanno arrotondati, per eccesso o per difetto, quando necessario. Maggiori dettagli verranno forniti in seguito.

NaN

“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.

Normalizzato (formato)

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ù.

Precisione

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.

Stabilità

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.

NomeBit totaliPrecisioneEsponente minimoEsponente massimo
Singola3224-126+127
Doppia6453-1022+1023
Quadrupla128113-16382+16383

Tabella 16.3: Valori per i principali formati IEEE

NOTA: I numeri che descrivono la precisione includono la cifra 1 iniziale implicita, il che equivale ad avere un bit in più nella mantissa.


Note a piè di pagina

(103)

Grazie a Michael Brennan per questa descrizione, che abbiamo parafrasato, e per gli esempi.


Successivo: , Precedente: , Su: Calcolo con precisione arbitraria   [Contenuti][Indice]