[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,
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: