From ec5fe6910c58bd0096fe96510a68cbdf74244be8 Mon Sep 17 00:00:00 2001 From: Daniel Wennberg Date: Fri, 30 Sep 2022 12:29:39 -0700 Subject: [PATCH] Make array `isapprox` more generic by avoiding zip/explicit iteration (#44893) * Avoid explicit array iteration in isapprox This is more generic and works for, e.g., gpu arrays --- stdlib/LinearAlgebra/src/generic.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/LinearAlgebra/src/generic.jl b/stdlib/LinearAlgebra/src/generic.jl index ac56cb191488a..d4d33f1320ea6 100644 --- a/stdlib/LinearAlgebra/src/generic.jl +++ b/stdlib/LinearAlgebra/src/generic.jl @@ -1774,7 +1774,8 @@ function isapprox(x::AbstractArray, y::AbstractArray; return d <= max(atol, rtol*max(norm(x), norm(y))) else # Fall back to a component-wise approximate comparison - return all(ab -> isapprox(ab[1], ab[2]; rtol=rtol, atol=atol, nans=nans), zip(x, y)) + # (mapreduce instead of all for greater generality [#44893]) + return mapreduce((a, b) -> isapprox(a, b; rtol=rtol, atol=atol, nans=nans), &, x, y) end end