I’m trying out the package Symbolics.jl. There is a “simplify” function, but not “expand” which is ubiquitous among other CASs. Is this functionality still to be implemented, or hidden somewhere?
There’s an expand
kwarg in simplify
.
The current manual lists these kwargs:
simplify(x; polynorm=false,
threaded=false,
thread_subtree_cutoff=100,
rewriter=nothing)
I don’t see “expand”. Maybe I should switch to the development version on github?
The manual is behind: polynorm was renamed to expand because that is more clear for what it’s doing.
I tried again. The keyword doesn’t seem to have been renamed (yet), but more importantly a full expansion is not performed.
(@v1.6) pkg> add https://github.com/JuliaSymbolics/Symbolics.jl.git
julia> @variables x y z
julia> simplify((x+y+z)^3, polynorm=true)
x^3 + y^3 + z^3 + 3x*(y^2 + z^2) + 3y*(x^2 + z^2) + 3z*(x^2 + y^2) + 6x*y*z
julia> simplify((x+y+z)^3, expand=true)
ERROR: MethodError: no method matching simplify(::SymbolicUtils.Pow{Real,
SymbolicUtils.Add{Real, Int64, Dict{Any, Number}, Nothing}, Int64, Nothing};
expand=true)
...
I understand that a full expansion may not be the intended result of this keyword argument, so this is not necessarily a bug, but a full expansion happens to be what I need.
Do you have the newest version? The package is constantly being updated.
I just did
] rm Symbolics
and reinstalled from the master branch on github, half an hour ago, but I suppose some development code may not have been merged into the master branch yet.
polynorm = true
is working on the stable version (v0.1.2)
You just need
julia> expand( (x + y + z)^3 )
x^3 + y^3 + z^3 + 3x*(y^2) + 3x*(z^2) + 3y*(x^2) + 3y*(z^2) + 3z*(x^2) + 3z*(y^2) + 6x*y*z