Skip to content

Commit 3a09ca7

Browse files
authored
Improve promote_operation for substitution (#134)
* Improve promote_operation for substitution * Don't export Polynomial * Fix
1 parent 9e5495f commit 3a09ca7

File tree

3 files changed

+12
-14
lines changed

3 files changed

+12
-14
lines changed

src/poly.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
export Polynomial
2-
31
# Invariant:
42
# a and x might be empty: meaning it is the zero polynomial
53
# a does not contain any zeros

src/subs.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ function MA.promote_operation(
147147
::Type{Monomial{V,M}},
148148
::Type{Pair{Variable{V,M},T}},
149149
) where {V,M,T}
150-
U = MA.promote_operation(^, T, Int)
151-
return _Term{V,M,U}
150+
U = MA.promote_operation(*, T, T)
151+
return MA.promote_operation(*, U, Monomial{V,M})
152152
end
153153

154154
function MP.substitute(

test/poly.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
end
2929

3030
@testset "Polynomial" begin
31-
#@test eltype(Polynomial{true, Int}) == Int
31+
#@test eltype(polynomial{true, Int}) == Int
3232
@polyvar x
3333
TT = term_type(x)
3434
PT = polynomial_type(x)
3535
@test_throws ArgumentError PT([1, 2], [x])
3636
@test_throws ArgumentError PT([1, 2], MonomialVector([x]))
3737
@test_throws InexactError PT([1.5], [x])
38-
@test Polynomial(1 + x) == 1 + x
38+
@test polynomial(1 + x) == 1 + x
3939
@test typeof(one(1 + x)) == PT
4040
@test typeof(zero_term(1 + x)) == TT
4141
@test typeof(zero(1 + x)) == PT
@@ -45,20 +45,20 @@
4545
@test typeof(zero_term(1.0 + x)) == TTF
4646
@test typeof(zero(1.0 + x)) == PTF
4747

48-
pf = Polynomial(i -> 1.0, [x * x, x, x * x])
48+
pf = DynamicPolynomials.Polynomial(i -> 1.0, [x * x, x, x * x])
4949
@test coefficients(pf) == [1.0, 2.0]
5050
@test monomials(pf) == monomial_vector([x^2, x])
5151

52-
p = Polynomial([4, 9], [x, x * x])
52+
p = polynomial([4, 9], [x, x * x])
5353
p.a == [9, 4]
5454
p.x[1] == x^2
5555
p.x[2] == x
5656

57-
@inferred Polynomial(i -> float(i), [x, x * x])
58-
@inferred Polynomial(i -> float(i), MonomialVector([x * x, x]))
57+
@inferred DynamicPolynomials.Polynomial(i -> float(i), [x, x * x])
58+
@inferred DynamicPolynomials.Polynomial(i -> float(i), MonomialVector([x * x, x]))
5959
for p in (
60-
Polynomial(i -> float(i), [x, x * x]),
61-
Polynomial(i -> float(i), MonomialVector([x * x, x])),
60+
DynamicPolynomials.Polynomial(i -> float(i), [x, x * x]),
61+
DynamicPolynomials.Polynomial(i -> float(i), MonomialVector([x * x, x])),
6262
)
6363
@test typeof(p) == PTF
6464
@test p.a == [1.0, 2.0]
@@ -67,8 +67,8 @@
6767

6868
@ncpolyvar ncpolyvar u v
6969
NCPT = polynomial_type(u)
70-
@inferred Polynomial(i -> i, [u, u * u, 1])
71-
p = Polynomial(i -> i, [u, u * u, 1])
70+
@inferred DynamicPolynomials.Polynomial(i -> i, [u, u * u, 1])
71+
p = DynamicPolynomials.Polynomial(i -> i, [u, u * u, 1])
7272
@test typeof(p) == NCPT
7373
@test p.a == [3, 1, 2]
7474
@test p.x == MonomialVector([u^2, u, 1])

0 commit comments

Comments
 (0)