53 lines
1.1 KiB
Fortran
53 lines
1.1 KiB
Fortran
! { dg-do run }
|
|
! { dg-options "-fno-range-check -ffree-line-length-none " }
|
|
! { 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)) call abort
|
|
end subroutine
|
|
|
|
subroutine check_r8 (a, b)
|
|
real(kind=8), intent(in) :: a, b
|
|
if (abs(a - b) > 10 * spacing(a)) call abort
|
|
end subroutine
|
|
|
|
end program test
|