MultivariatePolynomials.jl
MultivariatePolynomials.jl copied to clipboard
Type instability SymPy Sym
Hi, I encountered the following problem:
using TypedPolynomials, SymPy
@polyvar x
@syms a
differentiate(a*x^0-a,x)
gives a
ERROR: MethodError: no method matching zero(::Type{Any})
Closest candidates are:
zero(::Type{Union{Missing, T}}) where T at missing.jl:105
zero(::Type{Missing}) at missing.jl:103
zero(::Type{LibGit2.GitHash}) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.4/LibGit2/src/oid.jl:220
...
Stacktrace:
[1] zero(::Type{Any}) at ./missing.jl:105
[2] reduce_empty(::typeof(+), ::Type{T} where T) at ./reduce.jl:306
[3] reduce_empty(::typeof(Base.add_sum), ::Type{T} where T) at ./reduce.jl:313
[4] mapreduce_empty(::typeof(identity), ::Function, ::Type{T} where T) at ./reduce.jl:335
[5] _mapreduce(::typeof(identity), ::typeof(Base.add_sum), ::IndexLinear, ::Array{Any,1}) at ./reduce.jl:392
[6] _mapreduce_dim at ./reducedim.jl:312 [inlined]
[7] #mapreduce#580 at ./reducedim.jl:307 [inlined]
[8] mapreduce at ./reducedim.jl:307 [inlined]
[9] _sum at ./reducedim.jl:657 [inlined]
[10] _sum at ./reducedim.jl:656 [inlined]
[11] #sum#583 at ./reducedim.jl:652 [inlined]
[12] sum at ./reducedim.jl:652 [inlined]
[13] polynomial!(::Array{Any,1}, ::MultivariatePolynomials.SortedState) at /Users/gerickf/.julia/packages/MultivariatePolynomials/fixWm/src/polynomial.jl:64
[14] differentiate(::Polynomial{Sym,Term{Sym,Monomial{(x,),1}},Array{Term{Sym,Monomial{(x,),1}},1}}, ::Variable{:x}) at /Users/gerickf/.julia/packages/MultivariatePolynomials/fixWm/src/differentiation.jl:40
[15] top-level scope at REPL[8]:1
I'm using julia v1.4.0 with the masters of TypedPolynomials.jl and MultivariatePolynomials.jl.
I can reproduce it. The issue is that the polynomial has no terms, (you can check it with iszero
or nterms
, it's cheap) so it has troubles inferring the type of the differentiation of a term.
I assumed that it must be due to no terms in the polynomial. It came a bit of a surprise, because typeof(a*x^0-a)
gives Polynomial{Sym,Term{Sym,Monomial{(x,),1}},Array{Term{Sym,Monomial{(x,),1}},1}}
, a very clearly defined type!
is there anything that keeps #144 from being merged?