| ! { dg-options "-fno-range-check -ffree-line-length-none -O0" } |
| ! { dg-add-options ieee } |
| ! |
| ! Check that simplification functions and runtime library agree on ERF, |
| ! ERFC and ERFC_SCALED. |
| |
| program test |
| implicit none |
| |
| interface check |
| procedure check_r4 |
| procedure check_r8 |
| end interface check |
| |
| real(kind=4) :: x4 |
| real(kind=8) :: x8 |
| |
| #define CHECK(a) \ |
| x8 = a ; x4 = a ; \ |
| call check(erf(real(a,kind=8)), erf(x8)) ; \ |
| call check(erf(real(a,kind=4)), erf(x4)) ; \ |
| call check(erfc(real(a,kind=8)), erfc(x8)) ; \ |
| call check(erfc(real(a,kind=4)), erfc(x4)) ; \ |
| call check(erfc_scaled(real(a,kind=8)), erfc_scaled(x8)) ; \ |
| call check(erfc_scaled(real(a,kind=4)), erfc_scaled(x4)) ; |
| |
| CHECK(0.0) |
| CHECK(0.9) |
| CHECK(1.9) |
| CHECK(19.) |
| CHECK(190.) |
| |
| CHECK(-0.0) |
| CHECK(-0.9) |
| CHECK(-1.9) |
| CHECK(-19.) |
| CHECK(-190.) |
| |
| contains |
| |
| subroutine check_r4 (a, b) |
| real(kind=4), intent(in) :: a, b |
| if (abs(a - b) > 10 * spacing(a)) STOP 1 |
| end subroutine |
| |
| subroutine check_r8 (a, b) |
| real(kind=8), intent(in) :: a, b |
| if (abs(a - b) > 10 * spacing(a)) STOP 2 |
| end subroutine |
| |
| end program test |