@@ -102,6 +102,9 @@ const JL_UMFPACK_FRONT_ALLOC_INIT = UMFPACK_FRONT_ALLOC_INIT + 1
102
102
const JL_UMFPACK_DROPTOL = UMFPACK_DROPTOL + 1
103
103
const JL_UMFPACK_IRSTEP = UMFPACK_IRSTEP + 1
104
104
105
+ const AdjointFact = isdefined (LinearAlgebra, :AdjointFactorization ) ? LinearAlgebra. AdjointFactorization : Adjoint
106
+ const TransposeFact = isdefined (LinearAlgebra, :TransposeFactorization ) ? LinearAlgebra. TransposeFactorization : Transpose
107
+
105
108
# # UMFPACK
106
109
107
110
# there might be quite a bit of duplication here.
@@ -188,7 +191,7 @@ workspace_W_size(F::GBUmfpackLU) = workspace_W_size(F, has_refinement(F))
188
191
workspace_W_size (S:: Union{GBUmfpackLU{<:AbstractFloat}, AbstractGBMatrix{<:AbstractFloat}} , refinement:: Bool ) = refinement ? 5 * size (S, 2 ) : size (S, 2 )
189
192
workspace_W_size (S:: Union{GBUmfpackLU{<:Complex}, AbstractGBMatrix{<:Complex}} , refinement:: Bool ) = refinement ? 10 * size (S, 2 ) : 4 * size (S, 2 )
190
193
191
- const ATLU = Union{Transpose {<: Any , <: GBUmfpackLU }, Adjoint {<: Any , <: GBUmfpackLU }}
194
+ const ATLU = Union{TransposeFact {<: Any , <: GBUmfpackLU }, AdjointFact {<: Any , <: GBUmfpackLU }}
192
195
has_refinement (F:: ATLU ) = has_refinement (F. parent)
193
196
has_refinement (F:: GBUmfpackLU ) = has_refinement (F. control)
194
197
has_refinement (control:: AbstractVector ) = control[JL_UMFPACK_IRSTEP] > 0
@@ -229,8 +232,10 @@ Base.copy(F::GBUmfpackLU{Tv}, ws=UmfpackWS(F); safecopy = false) where {Tv} =
229
232
Base. copy (F:: T , ws= UmfpackWS (F)) where {T <: ATLU } =
230
233
T (copy (parent (F), ws))
231
234
232
- Base. adjoint (F:: GBUmfpackLU ) = Adjoint (F)
233
- Base. transpose (F:: GBUmfpackLU ) = Transpose (F)
235
+ if VERSION < v " 1.10-"
236
+ Base. adjoint (F:: GBUmfpackLU ) = Adjoint (F)
237
+ end
238
+ Base. transpose (F:: GBUmfpackLU ) = TransposeFact (F)
234
239
235
240
function Base. lock (f:: Function , F:: GBUmfpackLU )
236
241
lock (F)
799
804
function UMFPACK. solve! (
800
805
lu:: Union {
801
806
GBUmfpackLU,
802
- <: Adjoint {Any, <:GBUmfpackLU} ,
803
- <: Transpose {<:Any, <:GBUmfpackLU}
807
+ <: AdjointFact {Any, <:GBUmfpackLU} ,
808
+ <: TransposeFact {<:Any, <:GBUmfpackLU}
804
809
},
805
810
B:: AbstractGBArray
806
811
)
@@ -833,8 +838,8 @@ import LinearAlgebra.ldiv!
833
838
function ldiv! (
834
839
lu:: Union {
835
840
GBUmfpackLU,
836
- <: Adjoint {Any, <:GBUmfpackLU} ,
837
- <: Transpose {<:Any, <:GBUmfpackLU}
841
+ <: AdjointFact {Any, <:GBUmfpackLU} ,
842
+ <: TransposeFact {<:Any, <:GBUmfpackLU}
838
843
},
839
844
B:: AbstractGBArray )
840
845
@@ -853,28 +858,28 @@ end
853
858
854
859
ldiv! (lu:: GBUmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
855
860
ldiv! (B, lu, copy (B))
856
- ldiv! (translu:: Transpose {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
861
+ ldiv! (translu:: TransposeFact {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
857
862
(lu = translu. parent; ldiv! (B, transpose (lu), copy (B)))
858
- ldiv! (adjlu:: Adjoint {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
863
+ ldiv! (adjlu:: AdjointFact {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
859
864
(lu = adjlu. parent; ldiv! (B, adjoint (lu), copy (B)))
860
865
ldiv! (lu:: GBUmfpackLU{Float64} , B:: StridedVecOrMat{<:Complex} ) =
861
866
ldiv! (B, lu, copy (B))
862
- ldiv! (translu:: Transpose {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
867
+ ldiv! (translu:: TransposeFact {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
863
868
(lu = translu. parent; ldiv! (B, transpose (lu), copy (B)))
864
- ldiv! (adjlu:: Adjoint {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
869
+ ldiv! (adjlu:: AdjointFact {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{<:Complex} ) =
865
870
(lu = adjlu. parent; ldiv! (B, adjoint (lu), copy (B)))
866
871
867
872
ldiv! (X:: StridedVecOrMat{T} , lu:: GBUmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
868
873
_Aq_ldiv_B! (X, lu, B, UMFPACK_A)
869
- ldiv! (X:: StridedVecOrMat{T} , translu:: Transpose {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
874
+ ldiv! (X:: StridedVecOrMat{T} , translu:: TransposeFact {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
870
875
(lu = translu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_Aat))
871
- ldiv! (X:: StridedVecOrMat{T} , adjlu:: Adjoint {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
876
+ ldiv! (X:: StridedVecOrMat{T} , adjlu:: AdjointFact {T,<:GBUmfpackLU{T}} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
872
877
(lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
873
878
ldiv! (X:: StridedVecOrMat{Tb} , lu:: GBUmfpackLU{Float64} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
874
879
_Aq_ldiv_B! (X, lu, B, UMFPACK_A)
875
- ldiv! (X:: StridedVecOrMat{Tb} , translu:: Transpose {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
880
+ ldiv! (X:: StridedVecOrMat{Tb} , translu:: TransposeFact {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
876
881
(lu = translu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_Aat))
877
- ldiv! (X:: StridedVecOrMat{Tb} , adjlu:: Adjoint {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
882
+ ldiv! (X:: StridedVecOrMat{Tb} , adjlu:: AdjointFact {Float64,<:GBUmfpackLU{Float64}} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
878
883
(lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
879
884
880
885
function _Aq_ldiv_B! (X:: StridedVecOrMat , lu:: GBUmfpackLU , B:: StridedVecOrMat , transposeoptype)
0 commit comments