Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(in) | :: | val | |||
real, | intent(in) | :: | correct | |||
real, | intent(in) | :: | err |
function agrees_with_real(val, correct, err)
use warning_helpers, only: is_zero
real, intent(in) :: val, correct, err
logical :: agrees_with_real
call should_be(val, correct)
if (is_zero(correct) .or. abs(correct) < 10.0**(-maxexponent(err)/4)) then
agrees_with_real = abs(val) < err
else
agrees_with_real = (abs((val-correct)/correct) < err)
end if
end function agrees_with_real