1 ! Program to test intrinsic functions as actual arguments
3 ! Please keep the content of this file in sync with gfortran.dg/specifics_1.f90
4 subroutine test_c(fn
, val
, res
)
8 if (diff(fn(val
),res
)) STOP 1
13 diff
= (abs(a
- b
) .gt
. 0.00001)
17 subroutine test_z(fn
, val
, res
)
19 double complex val
, res
21 if (diff(fn(val
),res
)) STOP 2
26 diff
= (abs(a
- b
) .gt
. 0.00001)
30 subroutine test_cabs(fn
, val
, res
)
34 if (diff(fn(val
),res
)) STOP 3
39 diff
= (abs(a
- b
) .gt
. 0.00001)
43 subroutine test_cdabs(fn
, val
, res
)
44 double precision fn
, res
47 if (diff(fn(val
),res
)) STOP 4
52 diff
= (abs(a
- b
) .gt
. 0.00001)
56 subroutine test_r(fn
, val
, res
)
60 if (diff(fn(val
), res
)) STOP 5
65 diff
= (abs(a
- b
) .gt
. 0.00001)
69 subroutine test_d(fn
, val
, res
)
71 double precision val
, res
73 if (diff(fn(val
), res
)) STOP 6
78 diff
= (abs(a
- b
) .gt
. 0.00001d0)
82 subroutine test_r2(fn
, val1
, val2
, res
)
86 if (diff(fn(val1
, val2
), res
)) STOP 7
91 diff
= (abs(a
- b
) .gt
. 0.00001)
95 subroutine test_d2(fn
, val1
, val2
, res
)
97 double precision val1
, val2
, res
99 if (diff(fn(val1
, val2
), res
)) STOP 8
102 double precision a
, b
104 diff
= (abs(a
- b
) .gt
. 0.00001d0)
108 subroutine test_dprod(fn
)
110 if (abs (fn (2.0, 3.0) - 6d0) .gt
. 0.00001) STOP 9
113 subroutine test_nint(fn
,val
,res
)
116 if (res
.ne
. fn(val
)) STOP 10
119 subroutine test_idnint(fn
,val
,res
)
122 if (res
.ne
. fn(val
)) STOP 11
125 subroutine test_idim(fn
,val1
,val2
,res
)
126 integer fn
, res
, val1
, val2
127 if (res
.ne
. fn(val1
,val2
)) STOP 12
130 subroutine test_iabs(fn
,val
,res
)
132 if (res
.ne
. fn(val
)) STOP 13
135 subroutine test_len(fn
,val
,res
)
138 if (res
.ne
. fn(val
)) STOP 14
141 subroutine test_index(fn
,val1
,val2
,res
)
143 character(len
=*) val1
, val2
144 if (fn(val1
,val2
) .ne
. res
) STOP 15
229 call test_r (abs
, -1.0, abs(-1.0))
230 call test_r (aint
, 1.7, aint(1.7))
231 call test_r (anint
, 1.7, anint(1.7))
232 call test_r (acos
, 0.5, acos(0.5))
233 call test_r (acosh
, 1.5, acosh(1.5))
234 call test_r (asin
, 0.5, asin(0.5))
235 call test_r (asinh
, 0.5, asinh(0.5))
236 call test_r (atan
, 0.5, atan(0.5))
237 call test_r (atanh
, 0.5, atanh(0.5))
238 call test_r (cos
, 1.0, cos(1.0))
239 call test_r (sin
, 1.0, sin(1.0))
240 call test_r (tan
, 1.0, tan(1.0))
241 call test_r (cosh
, 1.0, cosh(1.0))
242 call test_r (sinh
, 1.0, sinh(1.0))
243 call test_r (tanh
, 1.0, tanh(1.0))
244 call test_r (alog
, 2.0, alog(2.0))
245 call test_r (alog10
, 2.0, alog10(2.0))
246 call test_r (exp
, 1.0, exp(1.0))
247 call test_r2 (sign
, 1.0, -2.0, sign(1.0, -2.0))
248 call test_r2 (amod
, 3.5, 2.0, amod(3.5, 2.0))
250 call test_d (dabs
, -1d0, abs(-1d0))
251 call test_d (dint
, 1.7d0, 1d0)
252 call test_d (dnint
, 1.7d0, 2d0)
253 call test_d (dacos
, 0.5d0, dacos(0.5d0))
254 call test_d (dacosh
, 1.5d0, dacosh(1.5d0))
255 call test_d (dasin
, 0.5d0, dasin(0.5d0))
256 call test_d (dasinh
, 0.5d0, dasinh(0.5d0))
257 call test_d (datan
, 0.5d0, datan(0.5d0))
258 call test_d (datanh
, 0.5d0, datanh(0.5d0))
259 call test_d (dcos
, 1d0, dcos(1d0))
260 call test_d (dsin
, 1d0, dsin(1d0))
261 call test_d (dtan
, 1d0, dtan(1d0))
262 call test_d (dcosh
, 1d0, dcosh(1d0))
263 call test_d (dsinh
, 1d0, dsinh(1d0))
264 call test_d (dtanh
, 1d0, dtanh(1d0))
265 call test_d (dlog
, 2d0, dlog(2d0))
266 call test_d (dlog10
, 2d0, dlog10(2d0))
267 call test_d (dexp
, 1d0, dexp(1d0))
268 call test_d2 (dsign
, 1d0, -2d0, sign(1d0, -2d0))
269 call test_d2 (dmod
, 3.5d0, 2d0, dmod(3.5d0, 2d0))
271 call test_dprod (dprod
)
273 call test_c (conjg
, (1.2,-4.), conjg((1.2,-4.)))
274 call test_c (ccos
, (1.2,-4.), ccos((1.2,-4.)))
275 call test_c (cexp
, (1.2,-4.), cexp((1.2,-4.)))
276 call test_c (clog
, (1.2,-4.), clog((1.2,-4.)))
277 call test_c (csin
, (1.2,-4.), csin((1.2,-4.)))
278 call test_c (csqrt
, (1.2,-4.), csqrt((1.2,-4.)))
280 call test_z (dconjg
, (1.2d0,-4.d0
), dconjg((1.2d0,-4.d0
)))
281 call test_z (cdcos
, (1.2d0,-4.d0
), cdcos((1.2d0,-4.d0
)))
282 call test_z (zcos
, (1.2d0,-4.d0
), zcos((1.2d0,-4.d0
)))
283 call test_z (cdexp
, (1.2d0,-4.d0
), cdexp((1.2d0,-4.d0
)))
284 call test_z (zexp
, (1.2d0,-4.d0
), zexp((1.2d0,-4.d0
)))
285 call test_z (cdlog
, (1.2d0,-4.d0
), cdlog((1.2d0,-4.d0
)))
286 call test_z (zlog
, (1.2d0,-4.d0
), zlog((1.2d0,-4.d0
)))
287 call test_z (cdsin
, (1.2d0,-4.d0
), cdsin((1.2d0,-4.d0
)))
288 call test_z (zsin
, (1.2d0,-4.d0
), zsin((1.2d0,-4.d0
)))
289 call test_z (cdsqrt
, (1.2d0,-4.d0
), cdsqrt((1.2d0,-4.d0
)))
290 call test_z (zsqrt
, (1.2d0,-4.d0
), zsqrt((1.2d0,-4.d0
)))
292 call test_cabs (cabs
, (1.2,-4.), cabs((1.2,-4.)))
293 call test_cdabs (cdabs
, (1.2d0,-4.d0
), cdabs((1.2d0,-4.d0
)))
294 call test_cdabs (zabs
, (1.2d0,-4.d0
), zabs((1.2d0,-4.d0
)))
295 call test_cabs (aimag
, (1.2,-4.), aimag((1.2,-4.)))
296 call test_cdabs (dimag
, (1.2d0,-4.d0
), dimag((1.2d0,-4.d0
)))
298 call test_nint (nint
, -1.2, nint(-1.2))
299 call test_idnint (idnint
, -1.2d0, idnint(-1.2d0))
300 call test_idim (isign
, -42, 17, isign(-42, 17))
301 call test_idim (idim
, -42, 17, idim(-42,17))
302 call test_idim (idim
, 42, 17, idim(42,17))
303 call test_r2 (dim
, 1.2, -4., dim(1.2, -4.))
304 call test_d2 (ddim
, 1.2d0, -4.d0
, ddim(1.2d0, -4.d0
))
305 call test_iabs (iabs
, -7, iabs(-7))
306 call test_idim (mod
, 5, 2, mod(5,2))
307 call test_len (len
, "foobar", len("foobar"))
308 call test_index (index
, "foobarfoobar", "bar", index("foobarfoobar","bar"))