Skip to content

Commit 023b75a

Browse files
fix README and add a bunch of other dispatches for issingular
1 parent 63e3ffb commit 023b75a

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,7 @@ cheaply.
6767

6868
## issingular(A)
6969

70-
Check singularity by factorization or checking zeros of structured matrices.
71-
72-
*Warning*: `rank` is a better choice for some matrices.
70+
Return an instance of the LU factorization object with the correct type cheaply.
7371

7472
## List of things to add
7573

src/ArrayInterface.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,14 @@ has_sparsestruct(x::Type{<:SymTridiagonal}) = true
111111
112112
Determine whether a given abstract matrix is singular.
113113
"""
114+
issingular(A::AbstractMatrix) = issingular(Matrix(A))
115+
issingular(A::AbstractSparseMatrix) = !issuccess(lu(A, check=false))
114116
issingular(A::Matrix) = !issuccess(lu(A, check=false))
115117
issingular(A::UniformScaling) = A.λ == 0
116118
issingular(A::Diagonal) = any(iszero,A.diag)
119+
issingular(B::Bidiagonal) = any(iszero, A.dv)
120+
issingular(S::SymTridiagonal) = diaganyzero(iszero, ldlt(S).data)
121+
issingular(T::Tridiagonal) = !issuccess(lu(A, check=false))
117122
issingular(A::Union{Hermitian,Symmetric}) = diaganyzero(bunchkaufman(A, check=false).LD)
118123
issingular(A::Union{LowerTriangular,UpperTriangular}) = diaganyzero(A.data)
119124
issingular(A::Union{UnitLowerTriangular,UnitUpperTriangular}) = false

0 commit comments

Comments
 (0)