diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-28 20:04:40 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-28 20:04:40 +0000 |
commit | e9389957ad71366e7db47450a43ed0d85ffcc610 (patch) | |
tree | 6c019cf873b129f993fd59f070c6f6e47c3df1ba /gcc/testsuite/gfortran.dg | |
parent | d3237426929c302bcab9d683353b041667b22488 (diff) | |
download | gcc-e9389957ad71366e7db47450a43ed0d85ffcc610.tar.gz |
2010-06-28 Tobias Burnus <burnus@net-b.de>
PR fortran/43298
* list_read.c (parse_real, read_real): Support NAN(alphanum).
2010-06-28 Tobias Burnus <burnus@net-b.de>
PR fortran/43298
* gfortran.dg/nan_6.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161510 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gfortran.dg')
-rw-r--r-- | gcc/testsuite/gfortran.dg/nan_6.f90 | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/nan_6.f90 b/gcc/testsuite/gfortran.dg/nan_6.f90 new file mode 100644 index 00000000000..8f0af294420 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/nan_6.f90 @@ -0,0 +1,99 @@ +! { dg-do run } +! { dg-add-options ieee } +! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } } +! +! List-directed part of PR fortran/43298 +! and follow up to PR fortran/34319. +! +! Check handling of "NAN(alphanum)" +! +character(len=200) :: str +real :: r +complex :: z + +! read_real: + +r = 1.0 +str = 'INfinity' ; read(str,*) r +if (r < 0 .or. r /= r*1.1) call abort() + +r = 1.0 +str = '-INF' ; read(str,*) r +if (r > 0 .or. r /= r*1.1) call abort() + +r = 1.0 +str = '+INF' ; read(str,*) r +if (r < 0 .or. r /= r*1.1) call abort() + +r = 1.0 +str = '-inFiniTY' ; read(str,*) r +if (r > 0 .or. r /= r*1.1) call abort() + +r = 1.0 +str = 'NAN' ; read(str,*) r +if (.not. isnan(r)) call abort() + +r = 1.0 +str = '-NAN' ; read(str,*) r +if (.not. isnan(r)) call abort() + +r = 1.0 +str = '+NAN' ; read(str,*) r +if (.not. isnan(r)) call abort() + +r = 1.0 +str = 'NAN(0x111)' ; read(str,*) r +if (.not. isnan(r)) call abort() + +r = 1.0 +str = '-NAN(123)' ; read(str,*) r +if (.not. isnan(r)) call abort() + +r = 1.0 +str = '+NAN(0xFFE)' ; read(str,*) r +if (.not. isnan(r)) call abort() + + +! parse_real + +z = cmplx(-2.0,-4.0) +str = '(0.0,INfinity)' ; read(str,*) z +if (aimag(z) < 0 .or. aimag(z) /= aimag(z)*1.1) call abort() + +z = cmplx(-2.0,-4.0) +str = '(-INF,0.0)' ; read(str,*) z +if (real(z) > 0 .or. real(z) /= real(z)*1.1) call abort() + +z = cmplx(-2.0,-4.0) +str = '(0.0,+INF)' ; read(str,*) z +if (aimag(z) < 0 .or. aimag(z) /= aimag(z)*1.1) call abort() + +z = cmplx(-2.0,-4.0) +str = '(-inFiniTY,0.0)' ; read(str,*) z +if (real(z) > 0 .or. real(z) /= real(z)*1.1) call abort() + +z = cmplx(-2.0,-4.0) +str = '(NAN,0.0)' ; read(str,*) z +if (.not. isnan(real(z))) call abort() + +z = cmplx(-2.0,-4.0) +str = '(0.0,-NAN)' ; read(str,*) z +if (.not. isnan(aimag(z))) call abort() + +z = cmplx(-2.0,-4.0) +str = '(+NAN,0.0)' ; read(str,*) z +if (.not. isnan(real(z))) call abort() + +z = cmplx(-2.0,-4.0) +str = '(NAN(0x111),0.0)' ; read(str,*) z +if (.not. isnan(real(z))) call abort() + +z = cmplx(-2.0,-4.0) +str = '(0.0,-NaN(123))' ; read(str,*) z +if (.not. isnan(aimag(z))) call abort() + +z = cmplx(-2.0,-4.0) +str = '(+nan(0xFFE),0.0)' ; read(str,*) z +if (.not. isnan(real(z))) call abort() + +end |