[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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,


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

      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)

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: