This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/24685] New: real(10) formatted input is broken for huge values
- From: "jblomqvi at cc dot hut dot fi" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Nov 2005 19:34:12 -0000
- Subject: [Bug libfortran/24685] New: real(10) formatted input is broken for huge values
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Seems that the parsing routines cannot deal with big values:
! { dg-do run }
! { dg-require-effective-target fortran_large_real }
program huge_real10_formatted
! This should be kind=10 on systems that support it
integer, parameter :: k = selected_real_kind (precision (0.0_8) + 1)
real(kind=k) :: a,b(2), c
character(len=180) :: tmp
! Test real(k) scalar and array formatted IO with big value
b(:) = huge (1.0_k)/2
print *, 'real(10) big value: ', b(1)
write (tmp, *) b
read (tmp, *) a, c
print *, 'same value read again: ', a
print *, 'difference: ', a-b(1)
! Test with really big value
b(:) = huge (1.0_k)
print *, 'huge value: ', b(1)
write (tmp, *) b
read (tmp, *) a, c ! This is line 19
print *, "We don't get this far!"
if (a /= b(1)) call abort ()
if (c /= b(2)) call abort ()
end program huge_real10_formatted
Running this produces:
real(10) big value: 5.948657476786159E+4931
same value read again: 5.948657476786159E+4931
difference: 1.751052108159553E+4915
huge value: 1.189731495357232E+4932
At line 19 of file huge_real10_formatted.f90
Fortran runtime error: Range error during floating point read
Looking at the difference, there also seems to be some problem with
arithmetic..
--
Summary: real(10) formatted input is broken for huge values
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jblomqvi at cc dot hut dot fi
GCC host triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24685