@@ -7,7 +7,8 @@ export UmfpackLU
7
7
import Base: (\ ), getproperty, show, size
8
8
using LinearAlgebra
9
9
using LinearAlgebra: AdjOrTrans
10
- import LinearAlgebra: Factorization, checksquare, det, logabsdet, lu, lu!, ldiv!
10
+ import LinearAlgebra: Factorization, AdjointFactorization, TransposeFactorization,
11
+ checksquare, det, logabsdet, lu, lu!, ldiv!
11
12
12
13
using SparseArrays
13
14
using SparseArrays: getcolptr, AbstractSparseMatrixCSC
@@ -16,7 +17,7 @@ import SparseArrays: nnz
16
17
import Serialization: AbstractSerializer, deserialize, serialize
17
18
using Serialization
18
19
19
- import .. increment, .. increment!, .. decrement, .. decrement!, .. AdjointFact, .. TransposeFact
20
+ import .. increment, .. increment!, .. decrement, .. decrement!
20
21
21
22
using .. LibSuiteSparse
22
23
import .. LibSuiteSparse:
@@ -256,7 +257,7 @@ workspace_W_size(F::UmfpackLU) = workspace_W_size(F, has_refinement(F))
256
257
workspace_W_size (S:: Union{UmfpackLU{<:AbstractFloat}, AbstractSparseMatrixCSC{<:AbstractFloat}} , refinement:: Bool ) = refinement ? 5 * size (S, 2 ) : size (S, 2 )
257
258
workspace_W_size (S:: Union{UmfpackLU{<:Complex}, AbstractSparseMatrixCSC{<:Complex}} , refinement:: Bool ) = refinement ? 10 * size (S, 2 ) : 4 * size (S, 2 )
258
259
259
- const ATLU = Union{TransposeFact {<: Any , <: UmfpackLU }, AdjointFact {<: Any , <: UmfpackLU }}
260
+ const ATLU = Union{TransposeFactorization {<: Any , <: UmfpackLU }, AdjointFactorization {<: Any , <: UmfpackLU }}
260
261
has_refinement (F:: ATLU ) = has_refinement (F. parent)
261
262
has_refinement (F:: UmfpackLU ) = has_refinement (F. control)
262
263
has_refinement (control:: AbstractVector ) = control[JL_UMFPACK_IRSTEP] > 0
@@ -294,10 +295,7 @@ Base.copy(F::UmfpackLU{Tv, Ti}, ws=UmfpackWS(F)) where {Tv, Ti} =
294
295
Base. copy (F:: T , ws= UmfpackWS (F)) where {T <: ATLU } =
295
296
T (copy (parent (F), ws))
296
297
297
- if ! isdefined (LinearAlgebra, :AdjointFactorization )
298
- Base. adjoint (F:: UmfpackLU ) = Adjoint (F)
299
- end
300
- Base. transpose (F:: UmfpackLU ) = TransposeFact (F)
298
+ Base. transpose (F:: UmfpackLU ) = TransposeFactorization (F)
301
299
302
300
function Base. lock (f:: Function , F:: UmfpackLU )
303
301
lock (F)
@@ -935,32 +933,30 @@ LinearAlgebra.issuccess(lu::UmfpackLU) = lu.status == UMFPACK_OK
935
933
936
934
# ## Solve with Factorization
937
935
938
- import LinearAlgebra. ldiv!
939
-
940
936
ldiv! (lu:: UmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
941
937
ldiv! (B, lu, copy (B))
942
- ldiv! (translu:: TransposeFact {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
938
+ ldiv! (translu:: TransposeFactorization {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
943
939
ldiv! (B, translu, copy (B))
944
- ldiv! (adjlu:: AdjointFact {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
940
+ ldiv! (adjlu:: AdjointFactorization {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
945
941
ldiv! (B, adjlu, copy (B))
946
942
ldiv! (lu:: UmfpackLU{Float64} , B:: StridedVecOrMat{<:Complex} ) =
947
943
ldiv! (B, lu, copy (B))
948
- ldiv! (translu:: TransposeFact {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
944
+ ldiv! (translu:: TransposeFactorization {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
949
945
ldiv! (B, translu, copy (B))
950
- ldiv! (adjlu:: AdjointFact {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
946
+ ldiv! (adjlu:: AdjointFactorization {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
951
947
ldiv! (B, adjlu, copy (B))
952
948
953
949
ldiv! (X:: StridedVecOrMat{T} , lu:: UmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
954
950
_Aq_ldiv_B! (X, lu, B, UMFPACK_A)
955
- ldiv! (X:: StridedVecOrMat{T} , translu:: TransposeFact {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
951
+ ldiv! (X:: StridedVecOrMat{T} , translu:: TransposeFactorization {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
956
952
(lu = translu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_Aat))
957
- ldiv! (X:: StridedVecOrMat{T} , adjlu:: AdjointFact {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
953
+ ldiv! (X:: StridedVecOrMat{T} , adjlu:: AdjointFactorization {T,<:UmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
958
954
(lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
959
955
ldiv! (X:: StridedVecOrMat{Tb} , lu:: UmfpackLU{Float64} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
960
956
_Aq_ldiv_B! (X, lu, B, UMFPACK_A)
961
- ldiv! (X:: StridedVecOrMat{Tb} , translu:: TransposeFact {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
957
+ ldiv! (X:: StridedVecOrMat{Tb} , translu:: TransposeFactorization {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
962
958
(lu = translu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_Aat))
963
- ldiv! (X:: StridedVecOrMat{Tb} , adjlu:: AdjointFact {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
959
+ ldiv! (X:: StridedVecOrMat{Tb} , adjlu:: AdjointFactorization {Float64,<:UmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
964
960
(lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
965
961
966
962
function _Aq_ldiv_B! (X:: StridedVecOrMat , lu:: UmfpackLU , B:: StridedVecOrMat , transposeoptype)
0 commit comments