JuliaSymbolics/Symbolics.jl

Tracking issue for Gruntz's limit algorithm's dependencies

LilithHafner opened this issue · 1 comments

The symbolic limit algorithm described here has a couple components/dependencies that are useful as standalone functionality. This issue tracks support of those components

  • Zero equivalence testing (is this expression equal to zero) (maybe iszero(simplify(_, expand=true))?)
  • Series expansion
  • The Gruntz limit algorithm itself

I suspect that this functionality can be (and therefore probably should be) implemented with dependence only on SymbolicUtils, not Symbolics itself and therefore defined in a separate package that Symbolics re-exports.

iszero and simplify do not successfully perform zero equivalence testing. For example

julia> @syms x::Real
(x,)

julia> expr = exp((x+1)*x - x*x-x)-1
-1 + exp(-x - (x^2) + (1 + x)*x)

julia> simpl1 = simplify(expr, expand=false)
-1 + exp(0)

julia> simpl2 = simplify(expr, expand=true)
-1 + exp(0)

julia> iszero(simpl1)
(-1 + exp(0)) == 0