short-circuits for exact equality in mo_utils and code reuse
Routines in mo_utils could be simplified like this:
logical elemental pure function equal_dp(a, b) result(boolean)
real(dp), intent(in) :: a
real(dp), intent(in) :: b
boolean = (a == b)
if (boolean) return
boolean = .not. ((epsilon(1.0_dp) * abs(b) - abs(a - b)) < 0.0_dp)
end function equal_dp
logical elemental pure function greaterequal_dp(a, b) result(boolean)
real(dp), intent(in) :: a
real(dp), intent(in) :: b
boolean = equal_dp(a, b) .or. (a > b)
end function greaterequal_dp