esempio per
se guardiamo i numeri in scala logaritmica sarebbero equispaziati.
In ogni intervallo ho numeri di macchina che hanno esponente e variano solo di mantissa.
Minimo Numero Rappresentabile:
Massimo Numero Rappresentabile:
Quanti sono i numeri di Macchina in Binario:
Rappresentazioni più comuni (Standard IEEE)
Memoria | |||||
---|---|---|---|---|---|
Precisione Singola | 2 | 24 | -125 | 128 | 32 |
Precisione doppia | 2 | 53 | -1021 | 1024 | 64 |
Ci potremmo chiedere come mai assume valori non ovvi (-125 invece di -128? ecc), questo perché alcuni valori per l’esponente sono considerati speciali, uno rappresenta , uno ed infine uno comunica che i numeri che stiamo analizzando sono [[#numeri-sottonormalizzati | Numeri Sottonormalizzati]]. |
La IEEE sta lavorando alla standardizzazione dei numeri reali in virgola mobile su 8 bit, ma è possibile che float8 abbia diverse versioni, con K = 3,4 o 5, quest’ultima sarebbe nell’interesse della comunità del machine learning.
Approssimazione
In genere ci viene fornito , in particolare ricadiamo in una di queste tre possibilità:
- : overflow
- : underflow
- : arrotondamento
Definiamo allora una funzione tale che: e
Troncamento Round-Down
vale la seguente disuguaglianza:
Troncamento Round-Up
Round-to-Nearest
vale quanto segue:
Precisazioni sui numeri in virgola mobile
- Errore Assoluto:
- Errore Relativo:
- Precisione di Macchina:
- single precision:
- double precision:
I numeri in virgola mobile garantiscono un errore relativo limitato in modo uniforme (salvo over/under-flow).
Implementazione
segno | mantissa | esponente | U | Memoria | |||||
---|---|---|---|---|---|---|---|---|---|
Precisione Singola | 2 | 24 | -125 | 128 | 1 | 23 | 8 | 32 | |
Precisione doppia | 2 | 53 | -1021 | 1024 | 1 | 52 | 11 | 64 | |
Precisione Quadrupla | 2 | 113 | -16381 | 16384 | 1 | 112 | 15 | 128 |
Numeri Sottonormalizzati
Per numeri compresi in , possiamo utilizzare la sottonormalizzazione, ovvero tramite un valore speciale di indichiamo alla macchina che il numero è sottonormalizzato, e questa lo intenderà diversamente:
significa che implicitamente e e si usano le restanti cifre della Mantissa.
Così facendo ottengo valori equispaziati fra e con distanza .
Notiamo però che così facendo, più ci avviciniamo allo e più aumenta l’errore relativo .