Symbolics.jl
egg
Symbolics.jl | egg | |
---|---|---|
13 | 25 | |
1,291 | 1,239 | |
1.0% | 2.2% | |
9.4 | 6.8 | |
4 days ago | 6 days ago | |
Julia | Rust | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Symbolics.jl
- Symbolics.jl
-
What packages would you like Julia to have?
It’s not up to parity with SymPy/Matlab by far yet - here’s the tracking issue on it https://github.com/JuliaSymbolics/Symbolics.jl/issues/59
- Converting Symbolics.jl Objects to SymPy.jl Objects
-
Error With StaticArrays Module & Symbolics.jl
Hello Juila Community. This is my second day working with Julia, having come over from Sympy due to performance reasons. I am working on a project that requires calculating matrix determinants and adjugates for families of matrices with symbolics entries. I am using Symbolics.jl for the symbols and using Juilia 1.8.2.
- ModelingToolkit over Modelica
-
A Mature Library For Symbolic Computation?
After spending some time reading the documentation, it turns out that JuliaSymbolics also lacks factorizations functionality (according to [Link](https://github.com/JuliaSymbolics/Symbolics.jl/issues/59))
-
Looking for numerical/iterative approach for determining a value
You can also get an expression for the partial of β with respect to h using Symbolics.jl:
-
In 2022, the difference between symbolic computing and compiler optimizations will be erased in #julialang. Anyone who can come up with a set of symbolic mathematical rules will automatically receive an optimized compiler pass to build better code
The example is applied to the right-hand side of a generated mass-matrix ODE (DAE) which is then solved using the adaptive time stepping methods of DifferentialEquations.jl. It's a test example that comes from the robotics / rigid body dynamics simulation groups (specifically interested in control) where they before were generating the governing equations with SymPy, and recently switched to try Symbolics.jl (and we got the example because of some performance issues that needed fixing). The comparison is with and without applying the code simplifier before solving. The table shows an average global induced error of 1e-12 when chopping off the 1e-11 * sin(x) terms and smaller. Thus there's nothing "competitive" against standard adaptive time stepping here: it's used to enhance the simulation of generated models that are simulated with the adaptive time steppers.
- From Julia to Rust
-
Fractions in Julia Symbolics
Done. https://github.com/JuliaSymbolics/Symbolics.jl/issues/215
egg
-
An Introduction to Graph Theory
Maybe program optimization?
https://egraphs-good.github.io/
- The E-graph extraction problem is NP-complete
-
What is the state of the art for creating domain-specific languages (DSLs) with Rust?
For semantic analyzers, check out egg and egglog. They're custom data structures for representing compiler rewrite rules in a non-destructive way.
-
Ask HN: What is new in Algorithms / Data Structures these days?
E-graphs are pretty awesome, and worth keeping in your back pocket. They're like union-find structures, except they also maintain congruence relations (i.e. if `x` and `y` are in the same set, then `f(x)` and `f(y)` must likewise be in the same set).
https://egraphs-good.github.io/
(Incidentally, union-find structures are also great to know about. But they're not exactly "new".)
-
What are the current hot topics in type theory and static analysis?
I would add that Equality saturation/E-graphs has become quite a hot topic recently, since their POPL21 paper, with workshops dedicated to applications of e-graphs. They have even recently been added to Cranelift as an IR for optimizations.
-
Compiler Optimizations Are Hard Because They Forget
Egraphs solve the rewrite ordering problem quite nicely. https://egraphs-good.github.io/
Note that one solution to this problem is to use equality saturation (which, coincidentally, has a great implementation in rust!).
-
Modularity in IR representation and modification
Have you thought about trying to parallelize e-graphs? This way you can do a bunch of rewrite rules in parallel and then extract your desired graph at the end instead of having conflicts.
-
Any recommendations for good resources that show how algorithms and data structures are converted into fpga circuits
I think the equality saturation papers are a good start. A good start is egg. They have a presentation, a research paper and code you can play with. I think ultimately you want to translate arithmetic operations into logical operation that can be understood by the fpga. So I think it would be good to research how adders and multipliers are implemented in logic and ultimately include equalities between adders/multipliers with their logical counterpart. Note the this translation also depends on the representations of your numbers and their bit width.
-
Strategies for doing symbolic integration algorithmically
For rewriting, you may also find interesing equality saturation: https://egraphs-good.github.io/
What are some alternatives?
julia - The Julia Programming Language
prose - Microsoft Program Synthesis using Examples SDK is a framework of technologies for the automatic generation of programs from input-output examples. This repo includes samples and sample data for the Microsoft Program Synthesis using Example SDK.
Octavian.jl - Multi-threaded BLAS-like library that provides pure Julia matrix multiplication
Catlab.jl - A framework for applied category theory in the Julia language
ModelingToolkit.jl - An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
Dagger.jl - A framework for out-of-core and parallel execution
fricas - Official repository of the FriCAS computer algebra system
glow - Compiler for Neural Network hardware accelerators
StaticArrays.jl - Statically sized arrays for Julia
JET.jl - An experimental code analyzer for Julia. No need for additional type annotations.