function agrees_with_real_1d_array(val, correct, err)
real, dimension(:), intent(in) :: val, correct
real, intent(in) :: err
logical :: agrees_with_real_1d_array
integer :: n, i
n = size(val)
agrees_with_real_1d_array = .true.
do i = 1,n
!call should_be(val(i), correct(i))
!if (correct(i) .eq. 0.0 .or. abs(correct(i)) .lt. 10.0**(-maxexponent(err)/4)) then
!agrees_with_real_1d_array = agrees_with_real_1d_array .and. (abs(val(i)) .lt. err)
!else
!agrees_with_real_1d_array = agrees_with_real_1d_array .and. &
!(abs((val(i)-correct(i))/correct(i)) .lt. err)
!end if
agrees_with_real_1d_array = agrees_with_real_1d_array .and. &
agrees_with_real(val(i), correct(i), err)
if (.not. agrees_with_real_1d_array) exit
end do
end function agrees_with_real_1d_array