Skip to content

Commit 2dea373

Browse files
authored
Merge pull request #262 from ranocha/hr/fix_multiplication
fix multiplication with multiple arguments and vectors
2 parents d2b4443 + 5260809 commit 2dea373

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "SymEngine"
22
uuid = "123dc426-2d89-5057-bbad-38513e3affd8"
3-
version = "0.9.0"
3+
version = "0.9.1"
44

55
[deps]
66
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"

src/mathops.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ function prod(v::CVecBasic)
5858
return a
5959
end
6060

61-
*(b1::Basic, b2::Basic, b3::Basic, bs...) = prod(convert(CVecBasic, [b1, b2, b3, bs...]))
62-
*(b1::Basic, b2::Basic, b3, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
63-
*(b1, b2::Basic, b3::Basic, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
64-
*(b1::Basic, b2, b3::Basic, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
65-
66-
*(b1::Basic, b2, b3, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
67-
*(b1, b2::Basic, b3, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
68-
*(b1, b2, b3::Basic, bs...) = *(Basic(b1), Basic(b2), Basic(b3), bs...)
61+
*(b1::Basic, b2::Basic, b3::Basic, bs::Vararg{Number, N}) where {N} = prod(convert(CVecBasic, [b1, b2, b3, bs...]))
62+
*(b1::Basic, b2::Basic, b3::Number, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
63+
*(b1::Number, b2::Basic, b3::Basic, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
64+
*(b1::Basic, b2::Number, b3::Basic, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
65+
66+
*(b1::Basic, b2::Number, b3::Number, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
67+
*(b1::Number, b2::Basic, b3::Number, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
68+
*(b1::Number, b2::Number, b3::Basic, bs::Vararg{Number, N}) where {N} = *(Basic(b1), Basic(b2), Basic(b3), bs...)
6969

7070

7171
## ## constants

test/runtests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ c = prod(convert(SymEngine.CVecBasic, [x, x, 2]))
4242
@test 2 * x * 3 == 6 * x
4343
@test 3 * 2 * x == 6 * x
4444

45+
# https://github.com/symengine/SymEngine.jl/issues/259
46+
@testset "Issue #259" begin
47+
let (a, b, c) = symbols("a b c")
48+
@test a * [b, c] == [a * b, a * c]
49+
@test a * 1//3 * [b, c] == [a * b / 3, a * c / 3]
50+
@test a * 1//3 * 3//4 * [b, c] == [a * b / 4, a * c / 4]
51+
@test a * 1//3 * 3//4 * 4//5 * [b, c] == [a * b / 5, a * c / 5]
52+
end
53+
end
54+
4555
c = x ^ 5
4656
@test diff(c, x) == 5 * x ^ 4
4757

0 commit comments

Comments
 (0)