]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gfortran.dg/bessel_7.f90
Remove Cell Broadband Engine SPU targets
[thirdparty/gcc.git] / gcc / testsuite / gfortran.dg / bessel_7.f90
CommitLineData
2f2aeda9 1! { dg-do run { xfail *-*-mingw* } }
7656526e 2! { dg-add-options ieee }
47b99694
TB
3!
4! PR fortran/36158
5! PR fortran/33197
6!
5e690fe3
KT
7! For mingw targets this test is disabled as the MS implementation
8! of BESSEL_YN(n,x) has different results. It returns NAN rather than
9! -INF for "x=0.0" and all "n".
10!
47b99694
TB
11! Run-time tests for transformations BESSEL_YN
12!
13implicit none
14real,parameter :: values(*) = [0.0, 0.5, 1.0, 0.9, 1.8,2.0,3.0,4.0,4.25,8.0,34.53, 475.78]
15real,parameter :: myeps(size(values)) = epsilon(0.0) &
d20cd506 16 * [2, 3, 4, 5, 8, 2, 13, 6, 7, 6, 36, 168 ]
47b99694
TB
17! The following is sufficient for me - the values above are a bit
18! more tolerant
19! * [0, 0, 0, 3, 3, 0, 9, 0, 2, 1, 22, 130 ]
20integer,parameter :: nit(size(values)) = &
8af7a073 21 [100, 100, 100, 25, 15, 100, 10, 31, 7, 100, 7, 25 ]
47b99694
TB
22integer, parameter :: Nmax = 100
23real :: rec(0:Nmax), lib(0:Nmax)
24integer :: i
25
26do i = 1, ubound(values,dim=1)
4c6e913c 27 call compare(values(i), myeps(i), nit(i), 6*epsilon(0.0))
47b99694
TB
28end do
29
30contains
31
32subroutine compare(X, myeps, nit, myeps2)
33
34integer :: i, nit
35real X, myeps, myeps2
36
37rec = BESSEL_YN(0, Nmax, X)
38lib = [ (BESSEL_YN(i, X), i=0,Nmax) ]
39
60f22d5d 40!print *, 'YN for X = ', X, ' -- Epsilon = ',epsilon(x)
47b99694 41do i = 0, Nmax
60f22d5d
TB
42! print '(i2,2e17.9,e12.2,f14.10,2l3)', i, rec(i), lib(i), &
43! rec(i)-lib(i), ((rec(i)-lib(i))/rec(i))/epsilon(x), &
44! i > nit .or. rec(i) == lib(i) &
45! .or. abs((rec(i)-lib(i))/rec(i)) < myeps2, &
46! rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i)) < myeps
47b99694
TB
47if (.not. (i > nit .or. rec(i) == lib(i) &
48 .or. abs((rec(i)-lib(i))/rec(i)) < myeps2)) &
7d6ce202 49 STOP 1
47b99694 50if (.not. (rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i)) < myeps)) &
7d6ce202 51 STOP 2
47b99694
TB
52end do
53
54end
55end