fricas
egg
fricas | egg | |
---|---|---|
8 | 25 | |
287 | 1,239 | |
1.0% | 2.7% | |
9.3 | 6.8 | |
4 days ago | 12 days ago | |
Clojure | Rust | |
BSD 3-clause "New" or "Revised" License | 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.
fricas
-
Integral Calculator
But it's integration functionalities are less advanced and comprehensive than those of Fricas. Interestingly, the latter is, like Maxima, implemented using Lisp and stems from a ancient software lineage. Both systems are free and open-source.
Fricas home page: http://fricas.github.io
Some independent integration benchmarks, comparing multiple computer algebra systems: https://www.12000.org/my_notes/CAS_integration_tests/index.h...
- FriCAS – an advanced computer algebra system
-
Strategies for doing symbolic integration algorithmically
Even partial implementations of the Risch algorithm can be pretty daunting but you might look at a couple heuristics that handle the easier bits, like Manel Bronstien's Poor Man's Integrator https://www-sop.inria.fr/cafe/Manuel.Bronstein/pmint/index.html which doesn't need as many algebraic tools, but does need gcd, factor, and solve. I think FriCAS might use this https://github.com/fricas/fricas
- A Mature Library For Symbolic Computation?
-
[2021 Day 6] [Fricas] Solution via finding a recurrence and solving it
Fricas home page: https://fricas.github.io
-
Is Haskell a good language for CAS/numerical analysis?
I used to use Maxima back in the day, which is embedded in Lisp. With a quick googling I found FriCAS https://github.com/fricas/fricas , which aims to be "world class" AND its libraries are built in a strongly-typed DSL called Spad.
-
"FriCAS algebra library, the largest and most advanced free general purpose computer algebra system" (as of September 2007)
BTW this is not a Clojure project. It contains .boot files that look like this and GitHub thinks they're Clojure. Trying to edit the .gitattributes through a PR.
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?
axiom - The dynamic infrastructure framework for everybody! Distribute the workload of many different scanning tools with ease, including nmap, ffuf, masscan, nuclei, meg and many more!
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.
axiom - Axiom is a free, open source computer algebra system
Symbolics.jl - Symbolic programming for the next generation of numerical software
Axiom - An FFmpeg GUI for Windows
Catlab.jl - A framework for applied category theory in the Julia language
Dagger.jl - A framework for out-of-core and parallel execution
cadabra2 - A field-theory motivated approach to computer algebra.
glow - Compiler for Neural Network hardware accelerators
casadi - CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
StaticArrays.jl - Statically sized arrays for Julia