Un elaboratore presenta un underflow aritmetico nel caso in cui un'operazione aritmetica che utilizza variabili floating point generi un risultato più piccolo della sensibilità dell'elaboratore stesso. Ad esempio dividendo un numero a {\displaystyle a} (diverso da zero) per un valore b {\displaystyle b} molto grande si ottiene un valore c {\displaystyle c} molto piccolo; se c {\displaystyle c} è troppo piccolo la macchina non riesce a memorizzarlo correttamente e confonde il suo valore con zero.

Analisi del problema

Dato che le variabili floating point hanno una dimensione predefinita della mantissa, non è possibile memorizzarvi più di un determinato numero di cifre e in caso di sfondamento viene incrementato l'esponente. Ipotizzando una mantissa con cinque cifre significative. Il numero 3 , 1415 {\displaystyle 3,1415} verrebbe rappresentato nel seguente modo:

MANTISSA    ESPONENTE
a b c d e   
3 1 4 1 5   - 4

Ovvero come 31415×10−4

Il numero 125,250 verrebbe invece rappresentato come:

MANTISSA    ESPONENTE
a b c d e   
1 2 5 2 5   1

Sommando i due numeri, a causa della ridotta dimensione della mantissa (e portando i numeri allo stesso esponente) otteniamo il seguente allineamento:

MANTISSA                
a b c d e x x x x x
1 2 5 2 5          
          3 1 4 1 5
--------------------
1 2 5 2 5 - - - - -

Disponendo solo di cinque cifre sulla mantissa, l'intero numero 3 , 1415 {\displaystyle 3,1415} andrebbe perduto nella somma, causando un errore numerico che può propagarsi sensibilmente in caso di successive moltiplicazioni.

Contromisure e possibili soluzioni

Nei programmi si può, in certi casi, ovviare all'underflow aumentando la precisione di calcolo, passando da singola precisione (32 bit) a doppia (64 bit) o quadrupla (128 bit).

Durante l'analisi funzionale del programma è, inoltre, appropriato evitare di effettuare moltiplicazioni dopo la somma di numeri grandi con piccoli. I numeri grandi andrebbero divisi e i piccoli moltiplicati, tenendo ovviamente conto del processo numerico che si intende applicare.

Voci correlate

  • Overflow aritmetico
  • Zero macchina

Collegamenti esterni

  • (EN) Denis Howe, underflow, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • (EN) Approfondimento , su mathworks.co.uk.

Underflow Amica Aindow

Arithmetic underflow Semantic Scholar

Overflow and Underflow Conditions. Download Scientific Diagram

Underflow on Steam

Underflow on Steam