Skip to content

Commit 998a420

Browse files
Merge pull request #69 from vpuri3/update
method ambiguities
2 parents a01e08c + 4b4978f commit 998a420

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/basic.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,22 @@ Base.:*(ops::AbstractSciMLOperator...) = ComposedOperator(ops...)
512512
Base.:*(A::AbstractSciMLOperator, B::AbstractSciMLOperator) = (A, B)
513513
Base.:*(A::ComposedOperator, B::AbstractSciMLOperator) = (A.ops[1:end-1]..., A.ops[end] * B)
514514
Base.:*(A::AbstractSciMLOperator, B::ComposedOperator) = (A * B.ops[1], B.ops[2:end]...)
515+
Base.:*(A::ComposedOperator, B::ComposedOperator) = ComposedOperator(A.ops..., B.ops...)
516+
517+
for op in (
518+
:*, :,
519+
)
520+
# identity
521+
@eval function Base.$op(::IdentityOperator{N}, A::ComposedOperator) where{N}
522+
@assert size(A, 1) == N
523+
A
524+
end
525+
526+
@eval function Base.$op(A::ComposedOperator, ::IdentityOperator{N}) where{N}
527+
@assert size(A, 2) == N
528+
A
529+
end
530+
end
515531

516532
Base.convert(::Type{AbstractMatrix}, L::ComposedOperator) = prod(op -> convert(AbstractMatrix, op), L.ops)
517533
SparseArrays.sparse(L::ComposedOperator) = prod(_sparse, L.ops)

src/matrix.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,11 @@ has_mul!(L::AffineOperator) = has_mul!(L.A)
184184
has_ldiv(L::AffineOperator) = has_ldiv(L.A)
185185
has_ldiv!(L::AffineOperator) = has_ldiv!(L.A)
186186

187+
function cache_internals(L::AffineOperator, u::AbstractVecOrMat)
188+
@set! L.A = cache_operator(L.A, u)
189+
@set! L.b = cache_operator(L.b, u)
190+
L
191+
end
187192

188193
Base.:*(L::AffineOperator, u::AbstractVecOrMat) = L.A * u + L.b
189194
Base.:\(L::AffineOperator, u::AbstractVecOrMat) = L.A \ (u - L.b)

0 commit comments

Comments
 (0)