summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.fortran-torture/execute/math.f90
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gfortran.fortran-torture/execute/math.f90
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gfortran.fortran-torture/execute/math.f90')
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/math.f90100
1 files changed, 100 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/math.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/math.f90
new file mode 100644
index 000000000..c21da09da
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/math.f90
@@ -0,0 +1,100 @@
+! Program to test mathematical intrinsics
+subroutine dotest (n, val4, val8, known)
+ implicit none
+ real(kind=4) val4, known
+ real(kind=8) val8
+ integer n
+
+ if (abs (val4 - known) .gt. 0.001) call abort
+ if (abs (real (val8, kind=4) - known) .gt. 0.001) call abort
+end subroutine
+
+subroutine dotestc (n, val4, val8, known)
+ implicit none
+ complex(kind=4) val4, known
+ complex(kind=8) val8
+ integer n
+ if (abs (val4 - known) .gt. 0.001) call abort
+ if (abs (cmplx (val8, kind=4) - known) .gt. 0.001) call abort
+end subroutine
+
+program testmath
+ implicit none
+ real(kind=4) r, two4, half4
+ real(kind=8) q, two8, half8
+ complex(kind=4) cr
+ complex(kind=8) cq
+ external dotest, dotestc
+
+ two4 = 2.0
+ two8 = 2.0_8
+ half4 = 0.5
+ half8 = 0.5_8
+ r = sin (two4)
+ q = sin (two8)
+ call dotest (1, r, q, 0.9093)
+ r = cos (two4)
+ q = cos (two8)
+ call dotest (2, r, q, -0.4161)
+ r = tan (two4)
+ q = tan (two8)
+ call dotest (3, r, q, -2.1850)
+ r = asin (half4)
+ q = asin (half8)
+ call dotest (4, r, q, 0.5234)
+ r = acos (half4)
+ q = acos (half8)
+ call dotest (5, r, q, 1.0472)
+ r = atan (half4)
+ q = atan (half8)
+ call dotest (6, r, q, 0.4636)
+ r = atan2 (two4, half4)
+ q = atan2 (two8, half8)
+ call dotest (7, r, q, 1.3258)
+ r = exp (two4)
+ q = exp (two8)
+ call dotest (8, r, q, 7.3891)
+ r = log (two4)
+ q = log (two8)
+ call dotest (9, r, q, 0.6931)
+ r = log10 (two4)
+ q = log10 (two8)
+ call dotest (10, r, q, 0.3010)
+ r = sinh (two4)
+ q = sinh (two8)
+ call dotest (11, r, q, 3.6269)
+ r = cosh (two4)
+ q = cosh (two8)
+ call dotest (12, r, q, 3.7622)
+ r = tanh (two4)
+ q = tanh (two8)
+ call dotest (13, r, q, 0.9640)
+ r = sqrt (two4)
+ q = sqrt (two8)
+ call dotest (14, r, q, 1.4142)
+
+ r = atan2 (0.0, 1.0)
+ q = atan2 (0.0_8, 1.0_8)
+ call dotest (15, r, q, 0.0)
+ r = atan2 (-1.0, 1.0)
+ q = atan2 (-1.0_8, 1.0_8)
+ call dotest (16, r, q, -0.7854)
+ r = atan2 (0.0, -1.0)
+ q = atan2 (0.0_8, -1.0_8)
+ call dotest (17, r, q, 3.1416)
+ r = atan2 (-1.0, -1.0)
+ q = atan2 (-1.0_8, -1.0_8)
+ call dotest (18, r, q, -2.3562)
+ r = atan2 (1.0, 0.0)
+ q = atan2 (1.0_8, 0.0_8)
+ call dotest (19, r, q, 1.5708)
+ r = atan2 (-1.0, 0.0)
+ q = atan2 (-1.0_8, 0.0_8)
+ call dotest (20, r, q, -1.5708)
+
+ cr = log ((-1.0, -1.0))
+ cq = log ((-1.0_8, -1.0_8))
+ call dotestc (21, cr, cq, (0.3466, -2.3562))
+
+end program
+