DynamicExpressions.jl
DynamicExpressions.jl copied to clipboard
Ridiculously fast symbolic expressions
Apparently the proper way to build in differentiability is to define a rule for ChainRulesCore.jl: https://github.com/JuliaDiff/ChainRulesCore.jl. Specifically we would define an `frule` (forward) and `rrule` (reverse). Then, evaluations inside DynamicExpressions.jl...
I wonder if it’s possible to have a GPU native implementation, with the tree stored as 1-hot vectors, the dimension given by the number of total operators + value +...
Right now the simplification routines will break any shared subexpressions. This means if you have an expression: ``` inner = cos(x1) - 3.2 expression = exp(inner) + inner ``` where...
It seems doable enough to add support for CUDA.jl and Metal.jl support. To do this, it might be enough to create an `eval_tree_array` for the corresponding array types.
Is there a way I can make the convenience functions (https://github.com/SymbolicML/DynamicExpressions.jl/blob/af68fa89fcad4e2272c91ae9e90baeda13ff49d2/src/OperatorEnumConstruction.jl#L49) more robust? Right now there are created with: ```julia Base.MainInclude.eval(...) ``` from inside `DynamicExpressions.OperatorEnum(...)`. Is there a way I...