Skip to content

Commit 7a60ff9

Browse files
committed
fixed composedop, composedscalarop constructors to avoid them from nesting
1 parent 24f7565 commit 7a60ff9

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

src/basic.jl

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ for op in (
8282
end
8383
end
8484

85-
function Base.:\(::IdentityOperator, A::AbstractSciMLOperator)
85+
function Base.:\(ii::IdentityOperator, A::AbstractSciMLOperator)
8686
@assert size(A, 1) == ii.len
8787
A
8888
end
8989

90-
function Base.:/(A::AbstractSciMLOperator, ::IdentityOperator)
90+
function Base.:/(A::AbstractSciMLOperator, ii::IdentityOperator)
9191
@assert size(A, 2) == ii.len
9292
A
9393
end
@@ -471,16 +471,15 @@ function ComposedOperator(ops::AbstractSciMLOperator...; cache = nothing)
471471
end
472472

473473
# constructors
474-
Base.:(ops::AbstractSciMLOperator...) = ComposedOperator(ops...)
475-
Base.:(A::ComposedOperator, B::ComposedOperator) = ComposedOperator(A.ops..., B.ops...)
476-
Base.:(A::AbstractSciMLOperator, B::ComposedOperator) = ComposedOperator(A, B.ops...)
477-
Base.:(A::ComposedOperator, B::AbstractSciMLOperator) = ComposedOperator(A.ops..., B)
478-
479-
Base.:*(ops::AbstractSciMLOperator...) = ComposedOperator(ops...)
480-
Base.:*(A::AbstractSciMLOperator, B::AbstractSciMLOperator) = (A, B)
481-
Base.:*(A::ComposedOperator, B::AbstractSciMLOperator) = (A.ops[1:end-1]..., A.ops[end] * B)
482-
Base.:*(A::AbstractSciMLOperator, B::ComposedOperator) = (A * B.ops[1], B.ops[2:end]...)
483-
Base.:*(A::ComposedOperator, B::ComposedOperator) = ComposedOperator(A.ops..., B.ops...)
474+
for op in (
475+
:*, :,
476+
)
477+
@eval Base.$op(ops::AbstractSciMLOperator...) = reduce($op, ops)
478+
@eval Base.$op(A::AbstractSciMLOperator, B::AbstractSciMLOperator) = ComposedOperator(A, B)
479+
@eval Base.$op(A::ComposedOperator, B::AbstractSciMLOperator) = ComposedOperator(A.ops..., B)
480+
@eval Base.$op(A::AbstractSciMLOperator, B::ComposedOperator) = ComposedOperator(A, B.ops...)
481+
@eval Base.$op(A::ComposedOperator, B::ComposedOperator) = ComposedOperator(A.ops..., B.ops...)
482+
end
484483

485484
for op in (
486485
:*, :,

src/scalar.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,11 @@ end
214214
for op in (
215215
:*, :,
216216
)
217-
@eval Base.$op(ops::AbstractSciMLScalarOperator...) = ComposedScalarOperator(ops...)
218-
@eval Base.$op(A::ComposedScalarOperator, B::ComposedScalarOperator) = ComposedScalarOperator(A.ops..., B.ops...)
219-
@eval Base.$op(A::AbstractSciMLScalarOperator, B::ComposedScalarOperator) = ComposedScalarOperator(A, B.ops...)
217+
@eval Base.$op(ops::AbstractSciMLScalarOperator...) = reduce($op, ops)
218+
@eval Base.$op(A::AbstractSciMLScalarOperator, B::AbstractSciMLScalarOperator) = ComposedScalarOperator(A, B)
220219
@eval Base.$op(A::ComposedScalarOperator, B::AbstractSciMLScalarOperator) = ComposedScalarOperator(A.ops..., B)
220+
@eval Base.$op(A::AbstractSciMLScalarOperator, B::ComposedScalarOperator) = ComposedScalarOperator(A, B.ops...)
221+
@eval Base.$op(A::ComposedScalarOperator, B::ComposedScalarOperator) = ComposedScalarOperator(A.ops..., B.ops...)
221222

222223
for T in SCALINGNUMBERTYPES[2:end]
223224
@eval Base.$op::AbstractSciMLScalarOperator, x::$T) = ComposedScalarOperator(α, ScalarOperator(x))

0 commit comments

Comments
 (0)