mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 10:54:07 +08:00
strtod_l.c (___STRTOF_INTERNAL): Fix exponent reading.
2012-12-03 Tobias Burnus <burnus@net-b.de> * strtod/strtod_l.c (___STRTOF_INTERNAL): Fix exponent reading. 2012-12-03 Tobias Burnus <burnus@net-b.de> * gfortran.dg/quad_3.f90: New. From-SVN: r194100
This commit is contained in:
parent
0ed3d24e39
commit
36402bb186
@ -1,3 +1,7 @@
|
||||
2012-12-03 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* gfortran.dg/quad_3.f90: New.
|
||||
|
||||
2012-12-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/54170
|
||||
|
27
gcc/testsuite/gfortran.dg/quad_3.f90
Normal file
27
gcc/testsuite/gfortran.dg/quad_3.f90
Normal file
@ -0,0 +1,27 @@
|
||||
! { dg-do run }
|
||||
!
|
||||
! I/O test for REAL(16)
|
||||
!
|
||||
! Contributed by Dominique d'Humieres
|
||||
!
|
||||
program test_qp
|
||||
use iso_fortran_env, only: real_kinds
|
||||
implicit none
|
||||
integer, parameter :: QP = real_kinds(ubound(real_kinds,dim=1))
|
||||
real(kind=qp) :: a,b(2), c
|
||||
integer :: exponent
|
||||
character(len=180) :: tmp
|
||||
|
||||
! Run this only with libquadmath; assume that all those systems
|
||||
! have also kind=10.
|
||||
if (size (real_kinds) >= 4 .and. real_kinds(3) == 10 .and. qp == 16) then
|
||||
exponent = 4000
|
||||
b(:) = huge (1.0_qp)/10.0_qp**exponent
|
||||
! print *, 'real(16) big value: ', b(1)
|
||||
write (tmp, *) b
|
||||
read (tmp, *) a, c
|
||||
! print *, 'same value read again: ', a, c
|
||||
! print *, 'difference: looks OK now ', a-b(1)
|
||||
if (a-b(1) /= 0.0_qp .or. c-b(1) /= 0.0_qp) call abort()
|
||||
end if
|
||||
end program test_qp
|
@ -1,3 +1,8 @@
|
||||
2012-12-03 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* strtod/strtod_l.c (___STRTOF_INTERNAL): Fix exponent
|
||||
reading.
|
||||
|
||||
2012-11-25 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR libquadmath/55462
|
||||
|
@ -1005,6 +1005,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group)
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
exponent *= 10;
|
||||
exponent += c - L_('0');
|
||||
|
||||
c = *++cp;
|
||||
}
|
||||
while (c >= L_('0') && c <= L_('9'));
|
||||
|
Loading…
Reference in New Issue
Block a user