is_close_dp Function

private elemental function is_close_dp(a, b, rtol, atol) result(flag)

Approximate equality for real(dp) values.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: a
real(kind=dp), intent(in) :: b
real(kind=dp), intent(in), optional :: rtol
real(kind=dp), intent(in), optional :: atol

Return Value logical


Called by

proc~~is_close_dp~~CalledByGraph proc~is_close_dp is_close_dp interface~is_close is_close interface~is_close->proc~is_close_dp

Variables

Type Visibility Attributes Name Initial
real(kind=dp), private :: abst
real(kind=dp), private :: rel

Source Code

   elemental function is_close_dp(a, b, rtol, atol) result(flag)
      !! Approximate equality for real(dp) values.
      real(dp), intent(in) :: a, b
      real(dp), intent(in), optional :: rtol, atol
      logical :: flag
      real(dp) :: rel, abst

      rel = sqrt(epsilon(a))
      abst = 0.0_dp
      if (present(rtol)) rel = rtol
      if (present(atol)) abst = atol

      flag = abs(a - b) <= max(rel*max(abs(a), abs(b)), abst)
   end function is_close_dp