OSDN Git Service

2006-09-07 Feng Wang <fengwang@nudt.edu.cn>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.fortran-torture / execute / intrinsic_set_exponent.f90
index d29cf53..6f934e5 100644 (file)
@@ -4,10 +4,11 @@ program test_set_exponent
   call test_real4()
   call test_real8()
 end
+
 subroutine test_real4()
-  real x,y
-  integer i,n
-  equivalence(x,i)
+  real*4 x,y
+  integer*4 i,n
+  equivalence(x, i)
 
   n = -148
   x = 1024.0
@@ -20,7 +21,8 @@ subroutine test_real4()
   if (exponent (y) .ne. n) call abort()
 
   n = 128
-  i = o'00037777777'
+  i = 8388607
+  x = transfer (i, x) ! z'007fffff' Positive denormalized floating-point.
   y = set_exponent (x, n)
   if (exponent (y) .ne. n) call abort()
 
@@ -36,7 +38,8 @@ subroutine test_real4()
   if (exponent (y) .ne. n) call abort()
 
   n = 128
-  i = o'20037777777'
+  i = -2139095041
+  x = transfer (i, x) ! z'807fffff' Negative denormalized floating-point.
   y = set_exponent (x, n)
   if (exponent (y) .ne. n) call abort()
 
@@ -45,7 +48,7 @@ end
 subroutine test_real8()
   implicit none
   real*8 x, y
-  integer*8 i, n, low
+  integer*8 i, n
   equivalence(x, i)
 
   n = -1073
@@ -60,19 +63,14 @@ subroutine test_real8()
   if (exponent (y) .ne. n) call abort()
 
   n = 1024
-  low = z'ffffffff'
-  i = z'000fffff' 
-  i = ishft (i, 32) + low !'000fffffffffffff'
+  i = 4503599627370495_8
+  x = transfer (i, x) !z'000fffffffffffff' Positive denormalized floating-point.
   y = set_exponent (x, n)
-  low = z'fffffffe'
-  i = z'7fefffff' 
-  i = ishft (i, 32) + low
   if (exponent (y) .ne. n) call abort()
 
   n = -1073
   x = -1024.0
   y = set_exponent (x, n)
-  low = z'00000001'
   if ((y .ne. 0.0) .and. (exponent (y) .ne. n)) call abort()
 
   n = 8
@@ -82,10 +80,8 @@ subroutine test_real8()
   if (exponent (y) .ne. n) call abort()
 
   n = 1024
-  low = z'ffffffff'
-  i = z'800fffff' 
-  i = ishft (i, 32) + low !z'800fffffffffffff'
+  i = -9218868437227405313_8
+  x = transfer (i, x)!z'800fffffffffffff' Negative denormalized floating-point.
   y = set_exponent (x, n)
   if (exponent (y) .ne. n) call abort()
-
 end