Precedente Indice Successivo



Minr



Scopo: calcolo del minimo numero positivo rappresentabile in un sistema aritmetico floating-point
Specifiche: real function minr()
Descrizione: Background del problema

L'importanza della conoscenza del minimo numero positivo rappresentabile di un sistema floating-point, risiede nel fatto che esso ci fornisce un'indicazione della soglia oltre la quale un numero può generare una situazione di underflow, venendo in alcuni casi approssimato con 0 e provocando numerosi e inaspettati errori.

Descrizione dell'algoritmo

L'algoritmo consta di un unico ciclo nel quale una variabile, con valore iniziale pari ad 1, è divisa per 2 fino ad ottenere una situazione di underflow. Il valore precedente l'ultima divisione rappresenta il minimo numero rappresentabile denormalizzato, cioè con mantissa shiftata a destra di t-1 posizioni, dove t è la precisione del sistema aritmetico. Il numero effettivo è ottenuto mediante un'operazione di shift left che equivale alla moltiplicazione per 2^(t-1) ovvero alla divisione per 2^(1-t) = 2 * b , dove b rappresenta l'epsilon macchina.

Raccomandazioni d'uso

nessuna.

Bibliografia: [1], [2]
Parametri di I/O: input: - nessuno

output:

minr - di tipo reale, minimo numero positivo rappresentabile.

Indicatori d'errore: nessuno.
Routines ausiliarie: eps, funzione reale, epsilon macchina.
Tempo di esecuzione: complessità asintotica lineare O(n), in funzione del numero di bit n della rappresentazione di un numero reale in singola precisione.
Memoria richiesta: nessun array allocato in memoria.
Accuratezza fornita: dipendente dalla precisione del sistema aritmetico della macchina.
Esempio di programma chiamante: Program minrd

C programma dimostrativo della funzione minr

real minr

external minr

print*,'Esempio di utilizzo della funzione minr'
print*
write(*,'(1X,A,E14.7)')'Minimo numero positivo rappresentabile = ',minr()

end





Precedente Indice Successivo