Note ipersintetiche di LPC: i numeri di macchina, singola precisione, opzione bias, chopping, rounding.

Note ipersintetiche di LPC: i numeri di macchina, singola precisione, opzione bias, chopping, rounding.

Note:

Il seguente file presenta gli appunti personali, al momento non rivisitati od ampliati, della seconda lezione di Laboratorio di Programmazione e Calcolo. Potrebbero esser presenti refusi od affermazioni incorrette.

-Tra i separatori [-x——-x-] ci sono aggiunte personali, tratte dal web, inserite per chiarire alcune definizioni a livello tecnico. 


La macchina assegna ad ogni numero reale una certa mantissa a seconda dello spazio dedicato e le rappresentazioni in essa non risultano esser continue, ossia esse sono discrete a causa delle approssimazioni dato che è impossibile rappresentare un numero reale con uno spazio in bit limitato. Ciò comporta errori di calcolo.

numeri di macchina sono la rappresentazione interna dei numeri all’interno di un computer. Ogni sistema informatico utilizza una certa quantità di bit – ad esempio 32, 64, 128 bit – per rappresentare i numeri. A seconda della quantità di bit disponibili, si possono rappresentare differenti gamme di numeri e precisioni.

Per rappresentare i numeri di macchina si utilizza il sistema floating point normalizzato $mathbb{F}(β,t,L,U)$ ove $β geq 2$ rappresenta la base, $t$ il numero di cifre significative, $L<0$ il minimo valore dell’esponente ed $U>0$ il massimo valore dell’esponente.

L’insieme è definito come: $mathbb{F}(β,t,L,U)$={$x in mathbb{R}, x neq 0, x = pm (0.a_1a_2…a_t}-{[β]} cdot β^e$} $cup$ {$0, Inf, NaN$}, ove $0leq a_i leq β-1, a_1>0, L leq e leq U$.

La normalizzazione è introdotta grazie alla limitazione su $a_1$, la quale garantisce l’unicità di rappresentazione, 0 ha una rappresentazione a parte, ed implica $β^{t-1} leq m leq β^t -1$. Infatti $m=β^{t-1}$ se $a_1=1$ ed i restanti $a_i$ risultano esser nulli ed $m=β^t-1 $ se tutti gli $a_i$ risultano pari a $β-1$.

$mathbb{F}(β,t,L,U) subset Q$ dato che, ad esempio, i numeri periodici od irrazionali non vengono rappresentati perfettamente.

Esempio: $t=4$ , mantissa minima $m=1000_{[β]}$.

Se $β=10$ allora $m=10^3$, se $β=2$ allora $m=2^3$.

Se $x in mathbb{F}(β,t,L,U)$ e non in {0, Inf, NaN}, allora per $|x|=m cdot β^{e-t}$ si ha $x_{min}=β^{L-1}=β^{t-1}β^{L-t}leq m cdot β^{e-t} leq (β^t-1)β^{U-t}=β^U(1-β^{-t}=x_{MAX}$

Si ha un overflow con conseguente interruzione di esecuzione quando il numero inserito in macchina risulta esser maggiore in modulo di $x_{MAX}$, la codifica è Inf.

Si ha un underflow quando il numero inserito in macchina risulta esser minore in modulo di $x_{min}$, tale approssimazione viene gestita dal sistema tramite approssimazione e non interruzione.

NaN significa Not a Number e corrisponde alle forme indeterminate riscontrate nel calcolo dei limiti in analisi.

Fissati Nt, in un sistema floating point  si hanno N-t-1 bit per l’esponente con segno.

Esempio: Se si ha un byte a disposizione per la rappresentazione in fp in base 2, si potrebbe scegliere di avere una mantissa ed esponente di tre cifre adoperando poi i due bit per i rispettivi segni. In tal caso si ha come mantissa massima $111_{[2]}=7$ $rightarrow L=-7, U=7$.

SINGOLA PRECISIONE E DOPPIA PRECISIONE PER LA RAPPRESENTAZIONE BINARIA β=2 

Lo standard IEEE, Institute of Electrical and Electronic Engeneers, prescrive N=32bit=4byte (t=23bit + 8bit per l’esponente) per la singola precisione ed N=64bit=8byte (t=52bit + 11bit per l’esponente) per la doppia precisione.

-x———x-

cosa si intende per BIAS:

Nel contesto della rappresentazione flottante, come il formato IEEE 754, il bias è utilizzato per rappresentare gli esponenti dei numeri in modo che possano includere valori negativi. Il bias è una tecnica per semplificare la rappresentazione di numeri con segno e permette di includere sia valori positivi che negativi in un formato standardizzato.

Esempio:

Rappresentazione dell’esponente: Supponiamo di avere un formato di rappresentazione a virgola mobile che utilizza 8 bit per l’esponente. Se vogliamo rappresentare esponenti che vanno da -127 a +128, possiamo utilizzare un bias di 127. In questo modo:

     -Un esponente di 0 sarà rappresentato come (127) (0 + 127).

     -Un esponente di -1 sarà rappresentato come (126) (-1 + 127).

      -Un esponente di +1 sarà rappresentato come (128) (+1 + 127).

Vantaggi: Utilizzando il bias, possiamo rappresentare esponenti con valori negativi senza dover utilizzare bit aggiuntivi per segnare il segno dell’esponente.

Applicazioni: Il concetto di bias è utilizzato non solo nelle rappresentazioni a virgola mobile, ma può essere utilizzato anche nella codifica di altre strutture dati, come per esempio nelle codifiche di interi.

-x—————x-

La singola precisione in C++ viene di norma utilizzata per le variabili di tipo float.

Poiché sono disponibili 8bit per l’esponente si potrebbe utilizzare un bit per il segno e sette bit per il numero in modo da ottenere $0 leq |e| leq 127$ ricavando le limitazioni L=-127 ed U=127. Per risparmiare la doppia rappresentazione dello 0, ossia il $(-1)^s$, si possono utilizzare tutti gli 8 bit per il numero ed ottenere $0 leq |E| leq 2^8-1$ definendo tramite bias b=127 l’equazione e=E-b; ciò comporta L=-127 ed U=128.

La doppia precisione in C++ viene di norma utilizzata per le variabili di tipo double.

Con gli 11bit a disposizione per l’esponente si ha $0 leq E leq 2^{11} -1$. Dunque con bias b=1023 si ottiene L=-1023 ed U=1024.

Per L ed U non vi è alcuno standard universalmente riconosciuto, in generale si predilige l’opzione bias.

In $mathbb{F}(2,23,-127,128), x_{min}=2^{-128} approx 2.9 cdot 10^{-39}$ ed $x_{MAX}=2^{128} approx 3.4 cdot 10^{38}$.

In $mathbb{F}(2,52,-1023,1024), x_{min}=2^{-1024} approx 5.6 cdot 10^{-309}$ ed $x_{MAX}=2^{1024} approx 1.8 cdot 10^{308}$.

 

APPROSSIMAZIONE PER TRONCAMENTO (CHOPPING) ED ARROTONDAMENTO(ROUNDING).

$mathbb{F}$ è un sottoinsieme di Q, e dunque di R. Non tutti i numeri razionali ed irrazionali sono rappresentabili completamente tramite la memoria a disposizione del sistema.

Si definisce l’applicazione $fl: R rightarrow F(β,t,L,U)$,

I numeri con modulo maggiore di $x_{MAX}$ vengono posti uguali a $pm Inf$ mentr quelli con modulo minore di $x_{min}$ uguali a 0.

Se $x=pm (0.a_1a_2…a_p)_{[β]} cdot β^e$, ove $p leq t$ ed $e in[L,U]$, allora $fl(x)=x$, ossia è rappresentato così come è dato che è presente anche in F.

Se $x=pm (0.a_1a_2…a_ta_{t+1}…)_{[β]} cdot β^e$, ove $e in[L,U]$, allora la rappresentazione dipende dal sistema in uso. Esistono due sistemi di approssimazione: il chopping ed il rounding.

Chopping: $fl(x)=pm(0.a_1…a_t){[β]} cdot β^e$.

Rounding: agisce come il chopping se e solo se $a_{t+1}<β/2$, altrimenti arrotonda $|x|$ al suo successivo numero di macchina.

 

ESERCIZIO:

Posto β=2 e t=3, come viene rappresentato $x_{[2]}=(0.0001111)_{[2]}$ in chopping? In rounding? [Soluzione in base-10: 14/128, 16/128]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

SOS Matematica

4.6
SCARICA