25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

80 Tipi ed espressioni<br />

SET_EXPONENT(X,I)<br />

Restituisce quel numero la cui parte decimale coincide con quella di X ed il cui esponente è pari<br />

ad I. Se X è pari a zero, anche la funzione ha valore nullo.<br />

L’argomento X deve essere di tipo REAL mentre l’argomento I deve essere di tipo INTEGER.<br />

<strong>Il</strong> risultato della funzione ha lo stesso tipo di X.<br />

SPACING(X)<br />

Restituisce la spaziatura assoluta dei numeri prossimi a X nel modello utilizzato per la rappresentazione<br />

di X. Tale valore è pari a b e−p , secondo il modello di rappresentazione dei numeri<br />

reali precedentemente definito. Se questo valore risulta fuori range, viene fornito il valore della<br />

funzione TINY(X).<br />

La funzione e il suo argomento hanno tipo REAL e il medesimo parametro di kind.<br />

<strong>Il</strong> risultato di questa funzione è utile per stabilire un criterio di convergenza indipendente dal<br />

processore. Ad esempio, lo scarto massimo ammissibile per una procedura iterativa potrebbe<br />

essere imposto pari a dieci volte la spaziatura minima rappresentabile.<br />

TINY(X)<br />

Restituisce il più piccolo numero positivo dello stesso tipo e kind di X. <strong>Il</strong> valore fornito è pari<br />

a b emin−1 in cui b ed emin sono stati precedentemente definiti. L’argomento della funzione deve<br />

essere di tipo REAL ed il valore fornito ha stesso tipo e kind dell’argomento.<br />

<strong>Il</strong> seguente programma ha lo scopo di interrogare il processore riguardo i parametri relativa<br />

alla rappresentazione di macchina di oggetto di tipo intero o reale. <strong>Il</strong> programma è, al tempo<br />

stesso, un utile esempio per imparare a conoscere le procedure intrinseche analizzate in questa<br />

sezione.<br />

PROGRAM parametri<br />

IMPLICIT NONE<br />

INTEGER, PARAMETER :: i=1<br />

REAL(KIND(1.E0)), PARAMETER :: r1=1.0<br />

REAL(KIND(1.D0)), PARAMETER :: r2=1.0<br />

!<br />

WRITE(*,*) " Tipo INTEGER di default "<br />

WRITE(*,*) " Kind: ", KIND(i)<br />

WRITE(*,*) " No di Cifre: ", DIGITS(i)<br />

WRITE(*,*) " Base: ", RADIX(i)<br />

WRITE(*,*) " Range di esponenti: ", RANGE(i)<br />

WRITE(*,*) " Massimo valore: ", HUGE(i)<br />

WRITE(*,*) " N. di bit occupati: ", BIT_SIZE(i)<br />

WRITE(*,*)<br />

WRITE(*,*) " Tipo REAL in singola precisione "

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!