@@ -118,6 +118,32 @@ function Base.copy(a::SparseMatrixCSR{Bi}) where Bi
118118 SparseMatrixCSR {Bi} (a. m,a. n,copy (a. rowptr),copy (a. colval),copy (a. nzval))
119119end
120120
121+ _copy_and_increment (x) = copy (x) .+ 1
122+
123+ function LinearAlgebra. lu (a:: SparseMatrixCSR{0} )
124+ rowptr = _copy_and_increment (a. rowptr)
125+ colval = _copy_and_increment (a. colval)
126+ Transpose (lu (SparseMatrixCSC (a. m,a. n,rowptr,colval,a. nzval)))
127+ end
128+
129+ function LinearAlgebra. lu (a:: SparseMatrixCSR{1} )
130+ Transpose (lu (SparseMatrixCSC (a. m,a. n,a. rowptr,a. colval,a. nzval)))
131+ end
132+
133+ function LinearAlgebra. lu! (
134+ translu:: Transpose{T,<:SuiteSparse.UMFPACK.UmfpackLU{T}} ,
135+ a:: SparseMatrixCSR{1} ) where {T}
136+ Transpose (lu! (translu. parent,SparseMatrixCSC (a. m,a. n,a. rowptr,a. colval,a. nzval)))
137+ end
138+
139+ function LinearAlgebra. lu! (
140+ translu:: Transpose{T,<:SuiteSparse.UMFPACK.UmfpackLU{T}} ,
141+ a:: SparseMatrixCSR{0} ) where {T}
142+ rowptr = _copy_and_increment (a. rowptr)
143+ colval = _copy_and_increment (a. colval)
144+ Transpose (lu! (translu. parent,SparseMatrixCSC (a. m,a. n,rowptr,colval,a. nzval)))
145+ end
146+
121147size (S:: SparseMatrixCSR ) = (S. m, S. n)
122148IndexStyle (:: Type{<:SparseMatrixCSR} ) = IndexCartesian ()
123149function getindex (A:: SparseMatrixCSR{Bi,T} , i0:: Integer , i1:: Integer ) where {Bi,T}
0 commit comments