|
50 | 50 | vars = merge(V1, V2...)
|
51 | 51 | Monomial{vars, length(vars)}
|
52 | 52 | end
|
| 53 | + |
| 54 | +MP.promote_rule(::Type{Term{C,M1} where {C}}, M2::Type{<:MonomialLike}) where {M1} = (Term{C,promote_type(M1, M2)} where {C}) |
| 55 | +MP.promote_rule(M1::Type{<:MonomialLike}, ::Type{Term{C,M2} where {C}}) where {M2} = (Term{C,promote_type(M1, M2)} where {C}) |
| 56 | +MP.promote_rule(::Type{Term{C,M1} where {C}}, ::Type{Term{T,M2}}) where {T,M1,M2} = (Term{C,promote_type(M1, M2)} where {C}) |
| 57 | +MP.promote_rule(::Type{Term{T,M2}}, ::Type{Term{C,M1} where {C}}) where {T,M1,M2} = (Term{C,promote_type(M1, M2)} where {C}) |
| 58 | +MP.promote_rule(::Type{Term{C,M1} where {C}}, ::Type{Term{T,M2}}) where {T,M1,M2} = (Term{C,promote_type(M1, M2)} where {C}) |
| 59 | +MP.promote_rule(::Type{<:Polynomial}, ::Type{Term{C,M} where {C}}) where {M} = Polynomial |
| 60 | +MP.promote_rule(::Type{Term{C,M} where {C}}, ::Type{<:Polynomial}) where {M} = Polynomial |
| 61 | +MP.promote_rule(::Type{Polynomial}, ::Type{<:PolynomialLike}) = Polynomial |
| 62 | +MP.promote_rule(::Type{<:PolynomialLike}, ::Type{Polynomial}) = Polynomial |
| 63 | +MP.promote_rule_constant(::Type, ::Type{Polynomial}) = Any |
| 64 | +MP.promote_rule_constant(::Type, ::Type{Term{C,M} where {C}}) where {M} = Any |
| 65 | + |
| 66 | +Base.convert(::Type{Term{C,M} where {C}}, m::MonomialLike) where {M} = MP.term(convert(M, m)) |
| 67 | +Base.convert(::Type{Polynomial}, t::TermLike) = MP.polynomial(t) |
0 commit comments