almost_equal Interface

public interface almost_equal

Check equality between single or double precision numbers


Module Procedures

public function almost_equal_single(a, b, rtol, atol) result(res)

Checks whether (a-b) / max(a,eps) within tolerance

Arguments

Type IntentOptional Attributes Name
real(kind=SP), intent(in) :: a

values to be compared

real(kind=SP), intent(in) :: b

values to be compared

real(kind=SP) :: rtol

relative tolerance

real(kind=SP) :: atol

minumum value for normalisation (~absolute tolerance for rtol=0)

Return Value logical

public function almost_equal_double(a, b, rtol, atol) result(res)

Checks whether (a-b) / max(a,eps) within tolerance

Arguments

Type IntentOptional Attributes Name
real(kind=DP), intent(in) :: a

values to be compared

real(kind=DP), intent(in) :: b

values to be compared

real(kind=DP) :: rtol

relative tolerance

real(kind=DP) :: atol

minumum value for normalisation (~absolute tolerance for rtol=0)

Return Value logical