diff --git a/src/scalar.jl b/src/scalar.jl index 9d13d0f6..4e551714 100644 --- a/src/scalar.jl +++ b/src/scalar.jl @@ -379,16 +379,14 @@ end for T in SCALINGNUMBERTYPES[2:end] @eval function Base.:*(α::ScalarOperator, x::$T) if isconstant(α) - T2 = promote_type($T, eltype(α)) - return ScalarOperator(convert(T2, α) * x, α.update_func) + return ScalarOperator(concretize(α) * x) else return ComposedScalarOperator(α, ScalarOperator(x)) end end @eval function Base.:*(x::$T, α::ScalarOperator) if isconstant(α) - T2 = promote_type($T, eltype(α)) - return ScalarOperator(convert(T2, α) * x, α.update_func) + return ScalarOperator(concretize(α) * x) else return ComposedScalarOperator(ScalarOperator(x), α) end diff --git a/test/scalar.jl b/test/scalar.jl index a0a7b06b..c4a8bc35 100644 --- a/test/scalar.jl +++ b/test/scalar.jl @@ -74,6 +74,11 @@ K = 12 copy!(w, orig_w) α(w, v, u, nothing, 0.0, a, b) @test w ≈ a * (x * v) + b * orig_w + + # Operations with UniformScalar + α = ScalarOperator(1) + @test α * I == α + @test α + I isa AddedScalarOperator end @testset "ScalarOperator Combinations" begin