Actually, it defaults to the Euclidean norm (vecnorm
) for arrays, and you can pass a different norm if desired via the norm
keyword. It only falls back to elementwise isapprox
if the norm is Inf
or NaN
. This is all documented. You don’t have to guess at the behavior.
We shouldn’t warn people against using this for arrays — if anything, we should warn people against implementing their own approximate equality for arrays, because experience suggests they will probably get it wrong. (e.g. NumPy got it wrong: their isclose
function is only elementwise, has a nonzero default atol
, and even has the property that isclose(x,y)
is inequivalent to isclose(y,x)
!)
I don’t think it should throw a DomainError
for x ≈ 0
. This is perfectly well defined, it just means x == 0
since the definition is norm(x-y) ≤ rtol*max(norm(x),norm(y))
for atol==0
. It would be very weird for 0 ≈ 0
to throw an error rather than returning the correct answer (true
), and this would be an especially unfortunate behavior for elementwise isapprox
comparisons.