Roberto Rosoni wrote:
...
> Solo non concordo con te su questo punto, almeno con il F77 di Digital.
>>Le costanti non sono solo quelle dei parameter. Se hai un' istruzione
>>come :
>>a = 2.0 * acos ( -1.0 )
>>hai 2 costanti: 2.0 e -1.0 . Queste sono del kind di default (32 bit in
>>genere) quindi non puoi aspettarti per a un' approssimazione a 2 Pi
>>migliore di una a 7 cifre significative. Nel Fortran 77 uno era
>>obbligato a modificare le costanti in 2.0D0 e -1.0D0 per dire che
>>andavano considerate a 64 bit.
> Se fai:
> DOUBLE PRECISION PI
> PI = DACOS (-1.)
>
> In PI ti trovi pi greco a 64 bit. Anzi sono convinto che accada anche se usi
> ACOS() perch� il compilatore vede che deve caricare un doppiaprecisione e
> sceglie la giusta mathfunc.
Non esattamente. Se usi DACOS (nome specifico) lo standard del f77 (che
e' in rete all' URL:
http://www.fortran.com/fortran/F77_std/rjcnf0001.html )
l' argomento DEVE essere in doppia precisione (ed il mio compilatore
hp/ex-compaq/ex-digital segnala correttamente errore se cerco di metter
un argomento in singola ad acos).
Se usi il nome generico (ACOS) la regola e' che le function chiamate col
nome generico calcolano il risultato nella precisione dell' argomento.
Se poi questo viene assegnato ad una variabile in doppia, i bit in piu'
non hanno nessun obbligo di essere esatti.
Prova a fare un miniprogramma cosi':
double precision aa
aa=acos(-1.0)
print*,aa,acos(-1.0D0)
e guarda cosa vien fuori.
> Inoltre -1. e -1.D0 hanno lo stesso esponente e la stessa mantissa binaria:
> nel secondo hai solo 32 zeri in pi� nella mantissa, irrilevanti quindi come
> argomento di input alla funzione.
Se l' argomento e' -1.0 concordo. Ma se fosse il risultato di un
calcolo in cui p. es. hai moltiplicato 0.1 per 10 non sarebbe piu' vero :-(
anche su questo una sperimentazione diretta vale 1000 post sul NG :-)
> Non so con quelle barzellette che erano i compilatori IBM dei /370, ma con
> quelli Digital (GRANDE Digital!) era cos�.
Beh, i compilatori digital (ma ora la stessa tecnologia e' finita in
quelli Intel !!) erano e sono dei gran bei compilatori. Pero' ti
assicuro che, barzellette o storie dell' orrore a parte neanche i
compilatori dei 370 scherzavano, almeno quanto a robustezza....
Ciao
Giorgio
Received on Wed Apr 30 2003 - 10:19:09 CEST