@@ -102,6 +102,9 @@ const JL_UMFPACK_FRONT_ALLOC_INIT = UMFPACK_FRONT_ALLOC_INIT + 1
102102const JL_UMFPACK_DROPTOL = UMFPACK_DROPTOL + 1
103103const JL_UMFPACK_IRSTEP = UMFPACK_IRSTEP + 1
104104
105+ const AdjointFact = isdefined (LinearAlgebra, :AdjointFactorization ) ? LinearAlgebra. AdjointFactorization : Adjoint
106+ const TransposeFact = isdefined (LinearAlgebra, :TransposeFactorization ) ? LinearAlgebra. TransposeFactorization : Transpose
107+
105108# # UMFPACK
106109
107110# 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))
188191workspace_W_size (S:: Union{GBUmfpackLU{<:AbstractFloat}, AbstractGBMatrix{<:AbstractFloat}} , refinement:: Bool ) = refinement ? 5 * size (S, 2 ) : size (S, 2 )
189192workspace_W_size (S:: Union{GBUmfpackLU{<:Complex}, AbstractGBMatrix{<:Complex}} , refinement:: Bool ) = refinement ? 10 * size (S, 2 ) : 4 * size (S, 2 )
190193
191- const ATLU = Union{Transpose {<: Any , <: GBUmfpackLU }, Adjoint {<: Any , <: GBUmfpackLU }}
194+ const ATLU = Union{TransposeFact {<: Any , <: GBUmfpackLU }, AdjointFact {<: Any , <: GBUmfpackLU }}
192195has_refinement (F:: ATLU ) = has_refinement (F. parent)
193196has_refinement (F:: GBUmfpackLU ) = has_refinement (F. control)
194197has_refinement (control:: AbstractVector ) = control[JL_UMFPACK_IRSTEP] > 0
@@ -229,8 +232,10 @@ Base.copy(F::GBUmfpackLU{Tv}, ws=UmfpackWS(F); safecopy = false) where {Tv} =
229232Base. copy (F:: T , ws= UmfpackWS (F)) where {T <: ATLU } =
230233 T (copy (parent (F), ws))
231234
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)
234239
235240function Base. lock (f:: Function , F:: GBUmfpackLU )
236241 lock (F)
799804function UMFPACK. solve! (
800805 lu:: Union {
801806 GBUmfpackLU,
802- <: Adjoint {Any, <:GBUmfpackLU} ,
803- <: Transpose {<:Any, <:GBUmfpackLU}
807+ <: AdjointFact {Any, <:GBUmfpackLU} ,
808+ <: TransposeFact {<:Any, <:GBUmfpackLU}
804809 },
805810 B:: AbstractGBArray
806811)
@@ -833,8 +838,8 @@ import LinearAlgebra.ldiv!
833838function ldiv! (
834839 lu:: Union {
835840 GBUmfpackLU,
836- <: Adjoint {Any, <:GBUmfpackLU} ,
837- <: Transpose {<:Any, <:GBUmfpackLU}
841+ <: AdjointFact {Any, <:GBUmfpackLU} ,
842+ <: TransposeFact {<:Any, <:GBUmfpackLU}
838843 },
839844 B:: AbstractGBArray )
840845
@@ -853,28 +858,28 @@ end
853858
854859ldiv! (lu:: GBUmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
855860 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 } =
857862 (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 } =
859864 (lu = adjlu. parent; ldiv! (B, adjoint (lu), copy (B)))
860865ldiv! (lu:: GBUmfpackLU{Float64} , B:: StridedVecOrMat{<:Complex} ) =
861866 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} ) =
863868 (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} ) =
865870 (lu = adjlu. parent; ldiv! (B, adjoint (lu), copy (B)))
866871
867872ldiv! (X:: StridedVecOrMat{T} , lu:: GBUmfpackLU{T} , B:: StridedVecOrMat{T} ) where {T<: UMFVTypes } =
868873 _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 } =
870875 (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 } =
872877 (lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
873878ldiv! (X:: StridedVecOrMat{Tb} , lu:: GBUmfpackLU{Float64} , B:: StridedVecOrMat{Tb} ) where {Tb<: Complex } =
874879 _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 } =
876881 (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 } =
878883 (lu = adjlu. parent; _Aq_ldiv_B! (X, lu, B, UMFPACK_At))
879884
880885function _Aq_ldiv_B! (X:: StridedVecOrMat , lu:: GBUmfpackLU , B:: StridedVecOrMat , transposeoptype)
0 commit comments