Re: problem with very small numbers - g95 versus gfortran



On May 28, 11:52 pm, "James Van Buskirk" <not_va...@xxxxxxxxxxx>
wrote:
"e p chandler" <e...@xxxxxxxx> wrote in messagenews:140c5865-b126-4610-bf49-1822ae651dba@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

C:\Users\epc\AppData\Local\Temp/ccErGX8Q.o:mega.f90:(.text+0xb0):
undefined refe
rence to `complex_'

Oops.  The COMPLEX intrinsic was a Craig Burley original, not
carried forward to g95.  Here is the standard-conforming variant:

C:\gcc_mingw64a\test\denormal>type mega.f90
program mega
   real(4) x4
   real(8) x8
   real(10) x10
   real pi

   pi = 4*atan(1.0)

   x4 = 2
   x4 = log(huge(x4))+log(x4)*1.1
   write(*,*) cos(cmplx(pi/4,x4,kind(x4)))
   x4 = log(huge(x4))
   write(*,*) cos(cmplx(pi/4,x4,kind(x4)))

   x8 = 2
   x8 = log(huge(x8))+log(x8)*1.1
   write(*,*) cos(cmplx(pi/4,x8,kind(x8)))
   x8 = log(huge(x8))
   write(*,*) cos(cmplx(pi/4,x8,kind(x8)))

   x10 = 2
   x10 = log(huge(x10))+log(x10)*1.1
   write(*,*) cos(cmplx(pi/4,x10,kind(x10)))
   x10 = log(huge(x10))
   write(*,*) cos(cmplx(pi/4,x10,kind(x10)))
   write(*,*) huge(x4)
   write(*,*) huge(x8)
   write(*,*) huge(x10)
end program mega

C:\gcc_mingw64a\test\denormal>x86_64-pc-mingw32-gfortran mega.f90 -omega

C:\gcc_mingw64a\test\denormal>mega
 (      +Infinity,      -Infinity)
 ( 1.20308013E+38,-1.20308013E+38)
 (                +Infinity,                -Infinity)
 ( 6.35580489185754273E+307,-6.35580516967861561E+307)
 (                    +Infinity,                    -Infinity)
 ( 4.20633594885755398476E+4931,-4.20633613272234874657E+4931)
  3.40282347E+38
  1.79769313486231571E+308
  1.18973149535723176502E+4932

--
write(*,*) transfer((/17.392111325966148d0,6.5794487871554595D-85, &
6.0134700243160014d-154/),(/'x'/)); end

OK. Here it goes with G95:

C:\Users\epc\temp>g95 mega.f90

C:\Users\epc\temp>a
(2.5788508E+38,-2.5788508E+38)
(1.2030801E+38,-1.2030801E+38)
(+Inf,-Inf)
(6.355804891857543E+307,-6.355805169678616E+307)
(+Inf,-Inf)
(4.2063359488591517347E+4931,-4.2063361327239468925E+4931)
3.4028235E+38
1.7976931348623157E+308
1.189731495357231765E+4932

C:\Users\epc\temp>

- e



.