Skip to content

Commit 0f68fdb

Browse files
authored
Fix bug in pinv (JuliaArrays#1082)
* update pinv test for diagonal matrix * update pinv with abs * update pinv tests for Julia v1.8
1 parent 43b0f6a commit 0f68fdb

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/pinv.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ end
3333
minlen = min(m,n)
3434
exprs = [:(zero($T)) for i in 1:n, j in 1:m]
3535
for i in 1:minlen
36-
exprs[i,i] = :(ifelse(A[$i,$i] > tol, inv(A[$i,$i]), zero($T)))
36+
exprs[i,i] = :(ifelse(abs(A[$i,$i]) > tol, inv(A[$i,$i]), zero($T)))
3737
end
3838
return quote
3939
Base.@_inline_meta

test/pinv.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,21 @@ tol = 1e-13
3838
@test N5 isa SMatrix{5,0,Float64}
3939
@test N5 pinv(Matrix(M5))
4040

41-
M6 = @SMatrix [1/2 0 0;0 5/3 0;0 0 0;0 0 0]
41+
M6 = @SMatrix [1/2 0 0;0 -5/3 0;0 0 0;0 0 0]
4242
N6 = pinv(M6)
4343
@test norm(M6*N6*M6 - M6) < tol
4444
@test norm(N6*M6*N6 - N6) < tol
4545
@test N6 isa SMatrix{3,4,Float64}
4646
@test N6 I(3)/Matrix(M6)
47-
# @test N6 ≈ pinv(Matrix(M6)) # Fails on Julia ≥v1.7 https://github.com/JuliaLang/julia/issues/44234
47+
@test N6 pinv(Matrix(M6))
4848

4949
M7 = M6'
5050
N7 = pinv(M7)
5151
@test norm(M7*N7*M7 - M7) < tol
5252
@test norm(N7*M7*N7 - N7) < tol
5353
@test N7 isa SMatrix{4,3,Float64}
5454
@test N7 I(4)/Matrix(M7)
55-
# @test N7 ≈ pinv(Matrix(M7)) # Fails on Julia ≥v1.7 https://github.com/JuliaLang/julia/issues/44234
55+
@test N7 pinv(Matrix(M7))
5656

5757
M8 = @MMatrix [0.5 1.1 0.0;0.0 -2.8 0.0;0.0 0.0 0.0;0.0 0.0 0.0]
5858
N8 = pinv(M8)

0 commit comments

Comments
 (0)