g77 issues
The purpose is to compute the following expression:
enfer= 1.3058750148074976d0
entmp = 0.093822912209640966d0
enpct = -2.2021424321973448d0
tfermi = 1.0d0/(dexp((enpct-enfer)/entmp)+1.0d0)
The problem is the following. With a small test programm, the result is
always correct, on any platform with any compiler. If I take the tfermi
line and copy it into a bigger programm, then the results are false. This
happens on x86 with g77. On alpha it seems to be OK, both with fort and
g77. The results are again different if, on x86, Portland's pgf77 is used.
Are there any known issues with dexp ? It's very hard to reproduce this
since it happens only in big programms, even if those variables are
hardcoded !!
I have tested this both on the local cluster and on testdrive at
compaq(RedHat). The results were exactly the same (alpha<->alpha,
x86<->x86)
Regards,
Ionut
PS command line: g77 -g -pg -o programm *.f
PPS gcc -v:
Reading specs from /usr/lib/gcc-lib/alpha-linux/2.95.3/specs
gcc version 2.95.3 20010315 (Debian release)
PPS I made another test. In the big programm I have defined a function
fermi2:
**************************************
real*8 function fermi2(enpc)
implicit real*8 (a-h,o-z)
common /list4/enfer,entmp
tmp = 1.0d0/(dexp((enpc-enfer)/entmp)+1.0d0)
print*,'tmp_fermi2(',enpc,')=',tmp
fermi2=tmp
return
end
*******************************
and computed the following expression:
aux22= 1.0d0-fermi2(enpct)
The output was:
on x86:
tmp_fermi2( -2.20214243)= 1.
aux22= 1.11022302E-16 !! should have been 0. !!
on alpha:
tmp_fermi2( -2.20214243)= 1.
aux22= 0.
***************
* Ionut Georgescu
* http://www.physik.tu-cottbus.de/~george/
* ICQ: 38973105
* "In Windows you can do everything Microsoft wants you to do; in Unix you
* can do anything the computer is able to do."
Reply to: