@@ -127,6 +127,9 @@ function Base.copy(L::DiffEqArrayOperator)
127127 DiffEqArrayOperator (copy (L. A); update_func = L. update_func)
128128end
129129
130+ const AdjointFact = isdefined (LinearAlgebra, :AdjointFactorization ) ? LinearAlgebra. AdjointFactorization : Adjoint
131+ const TransposeFact = isdefined (LinearAlgebra, :TransposeFactorization ) ? LinearAlgebra. TransposeFactorization : Transpose
132+
130133"""
131134 FactorizedDiffEqArrayOperator(F)
132135
@@ -137,26 +140,26 @@ Supports left division and `ldiv!` when applied to an array.
137140struct FactorizedDiffEqArrayOperator{T <: Number ,
138141 FType <: Union {
139142 Factorization{T}, Diagonal{T}, Bidiagonal{T},
140- Adjoint{T, <: Factorization{T} }
143+ AdjointFact{T, <: Factorization{T} },
144+ TransposeFact{T, <: Factorization{T} }
141145 }
142146 } <: AbstractDiffEqLinearOperator{T}
143147 F:: FType
144148end
145149
146- function Base. convert (:: Type{AbstractMatrix} , L:: FactorizedDiffEqArrayOperator )
147- if L. F isa Adjoint
148- convert (AbstractMatrix, L. F' )'
149- else
150- convert (AbstractMatrix, L. F)
151- end
152- end
153- function Base. Matrix (L:: FactorizedDiffEqArrayOperator )
154- if L. F isa Adjoint
155- Matrix (L. F' )'
156- else
157- Matrix (L. F)
158- end
159- end
150+ Base. convert (:: Type{AbstractMatrix} , L:: FactorizedDiffEqArrayOperator{<:Any,<:Union{Factorization,AbstractMatrix}} ) =
151+ convert (AbstractMatrix, L. F)
152+ Base. convert (:: Type{AbstractMatrix} , L:: FactorizedDiffEqArrayOperator{<:Any,<:Union{Adjoint,AdjointFact}} ) =
153+ adjoint (convert (AbstractMatrix, adjoint (L. F)))
154+ Base. convert (:: Type{AbstractMatrix} , L:: FactorizedDiffEqArrayOperator{<:Any,<:Union{Transpose,TransposeFact}} ) =
155+ transpose (convert (AbstractMatrix, transpose (L. F)))
156+
157+ Base. Matrix (L:: FactorizedDiffEqArrayOperator{<:Any,<:Union{Factorization,AbstractMatrix}} ) =
158+ Matrix (L. F)
159+ Base. Matrix (L:: FactorizedDiffEqArrayOperator{<:Any,<:AdjointFact} ) = Matrix (L. F' )'
160+ Base. Matrix (L:: FactorizedDiffEqArrayOperator{<:Any,<:TransposeFact} ) =
161+ transpose (Matrix (transpose (L. F)))
162+
160163Base. adjoint (L:: FactorizedDiffEqArrayOperator ) = FactorizedDiffEqArrayOperator (L. F' )
161164Base. size (L:: FactorizedDiffEqArrayOperator , args... ) = size (L. F, args... )
162165function LinearAlgebra. ldiv! (Y:: AbstractVecOrMat , L:: FactorizedDiffEqArrayOperator ,
0 commit comments