diff --git a/src/qr.jl b/src/qr.jl index 9a89e583..5020a2c8 100644 --- a/src/qr.jl +++ b/src/qr.jl @@ -535,11 +535,11 @@ function ldiv!(A::QRCompactWY{T}, B::AbstractMatrix{T}) where {T} return B end -function rank(A::QRPivoted; atol::Real=0, rtol::Real=min(size(A)...) * eps(real(float(one(eltype(A.Q))))) * iszero(atol)) +function rank(A::QRPivoted; atol::Real=0, rtol::Real=min(size(A)...) * eps(real(float(eltype(A)))) * iszero(atol)) m = min(size(A)...) m == 0 && return 0 - tol = max(atol, rtol*abs(A.R[1,1])) - return something(findfirst(i -> abs(A.R[i,i]) <= tol, 1:m), m+1) - 1 + tol = max(atol, rtol*abs(A.factors[1,1])) + return something(findfirst(i -> abs(A.factors[i,i]) <= tol, 1:m), m+1) - 1 end # Julia implementation similar to xgelsy