| ! { dg-do run } |
| ! { dg-options "-Wall -fno-range-check" } |
| ! |
| ! PR fortran/36158 - Transformational BESSEL_JN/YN |
| ! PR fortran/33197 - F2008 math functions |
| ! |
| ! This is a dg-do run test as the middle end cannot simplify the |
| ! the scalarization of the elemental function (cf. PR 45305). |
| ! |
| ! -Wall has been specified to disabled -pedantic, which warns about the |
| ! negative order (GNU extension) to the order of the Bessel functions of |
| ! first and second kind. |
| ! |
| |
| implicit none |
| integer :: i |
| |
| |
| ! Difference to mpfr_jn <= 1 epsilon |
| |
| if (any (abs (BESSEL_JN(2, 5, 2.457) - [(BESSEL_JN(i, 2.457), i = 2, 5)]) & |
| > epsilon(0.0))) then |
| print *, 'FAIL 1' |
| STOP 1 |
| end if |
| |
| |
| ! Difference to mpfr_yn <= 4 epsilon |
| |
| if (any (abs (BESSEL_YN(2, 5, 2.457) - [(BESSEL_YN(i, 2.457), i = 2, 5)]) & |
| > epsilon(0.0)*4)) then |
| STOP 2 |
| end if |
| |
| |
| ! Difference to mpfr_jn <= 1 epsilon |
| |
| if (any (abs (BESSEL_JN(0, 10, 4.457) & |
| - [ (BESSEL_JN(i, 4.457), i = 0, 10) ]) & |
| > epsilon(0.0))) then |
| STOP 3 |
| end if |
| |
| |
| ! Difference to mpfr_yn <= 192 epsilon |
| |
| if (any (abs (BESSEL_YN(0, 10, 4.457) & |
| - [ (BESSEL_YN(i, 4.457), i = 0, 10) ]) & |
| > epsilon(0.0)*192)) then |
| STOP 4 |
| end if |
| |
| |
| ! Difference to mpfr_jn: None. (Special case: X = 0.0) |
| |
| if (any (BESSEL_JN(0, 10, 0.0) /= [ (BESSEL_JN(i, 0.0), i = 0, 10) ])) & |
| then |
| STOP 5 |
| end if |
| |
| |
| ! Difference to mpfr_yn: None. (Special case: X = 0.0) |
| |
| if (any (BESSEL_YN(0, 10, 0.0) /= [ (BESSEL_YN(i, 0.0), i = 0, 10) ])) & |
| then |
| STOP 6 |
| end if |
| |
| |
| ! Difference to mpfr_jn <= 1 epsilon |
| |
| if (any (abs (BESSEL_JN(0, 10, 1.0) & |
| - [ (BESSEL_JN(i, 1.0), i = 0, 10) ]) & |
| > epsilon(0.0)*1)) then |
| STOP 7 |
| end if |
| |
| ! Difference to mpfr_yn <= 32 epsilon |
| |
| if (any (abs (BESSEL_YN(0, 10, 1.0) & |
| - [ (BESSEL_YN(i, 1.0), i = 0, 10) ]) & |
| > epsilon(0.0)*32)) then |
| STOP 8 |
| end if |
| |
| end |