Symbolica 2.0: Programmable Symbols for Python and Rust
Posted by mmastrac 4 days ago
Comments
Comment by mkl 3 days ago
This software does symbolic maths, and it's commercially licensed. The site still seems to be lacking comparisons to other computer algebra systems.
The project is unrelated to this other Symbolica that does symbolic code execution, despite the similar sounding brief descriptions: https://news.ycombinator.com/item?id=28443587
Comment by lcnbr 3 days ago
Comment by adius 3 days ago
Comment by SPACECADET3D 2 days ago
If you want to use Symbolica for some of these features, feel free to reach out!
Comment by adius 1 day ago
Integrating Symbolica would be awesome, but our licenses are incompatible at the moment. If you're willing to relicense parts for Woxi, I'd be happy to work on this together!
Comment by srean 1 day ago
Does Woxi also show intermediate steps ? That to me is a killer feature of Mathematica.
Comment by adius 1 day ago
No support for intermediate steps yet, but if there is interest in it, I'd be happy to prioritize it.
Comment by srean 1 day ago
Comment by lcnbr 2 days ago
Comment by adius 2 days ago
Comment by lcnbr 3 days ago
Builder patterns for constructing replacement rules (and now evaluators!), macros for namespacing symbols, and now the call trait to fill in for callables in rust.
Not to mention the broad implementation of arithmetic on Atoms (the expression type of symbolica) with other std types and with symbols.
Comment by timschmidt 2 days ago
Benchmarks against Symbolica and numerica here: https://github.com/timschmidt/hyperlattice/blob/main/benchma...
Comment by SPACECADET3D 2 days ago
For simple numerical operations, using an entire Symbolica Atom will introduce a large amount of overhead. It should only be used if the expression contains symbols as well. But perhaps I misunderstood the point of the benchmark?
Comment by timschmidt 2 days ago
Hyperreal gets performance back through caching observed facts about the numbers it's representing at creation, and through operations, and specializing dispatch for predicates and geometric operations. Using this approach throughout the stack allows us to avoid computing on the full representation or collapsing it into an approximation. Instead asking questions like "do we know if it's definitely zero, definitely not, or unknown?" or "is it rational?" or "does it have a known sign, or unknown?" and so on. Each question specializes dispatch further, and some eliminate the need for it entirely.
Asking questions using the cached facts is approximately as fast as computing with f64s. So we do that whenever possible throughout the stack. But then when you actually need to do the exact computation, hyperreal does that too, and can approximate it out to whatever precision you'd like. f32 and f64 being common, but others being supported as well. The downside is that calculating quickly with them requires this sort specialization, but the work's been done for the geometry functions.
I'll look into DoubleFloat and ErrorPropagatingFloat for benches. I should mention that numerica@128bit beat the other pure rust bignum crates I tested. The benchmarks are mostly just to give me an understanding of the performance shapes of the implementation choices of high precision numeric libraries alongside hyperreal.
Comment by SPACECADET3D 1 day ago
Comment by timschmidt 1 day ago
It's still possible to approximate them both, and test them against each other, but since the whole architecture is built to reduce, avoid, and cache approximations because they're expensive, it's not the default.
Comment by SPACECADET3D 1 day ago
Comment by timschmidt 1 day ago
You might find this bit of performance engineering interesting: https://github.com/timschmidt/hyperreal/blob/8a016808f4b0ba3...
The matrix math layer wanted that kind of optimization to avoid worst case operations.
Comment by aboardRat4 2 days ago
Comment by SPACECADET3D 2 days ago
Comment by sigy 2 days ago
But then I saw the absolutely awful license. A license like that at a time like this is no small miscalculation.
Comment by SPACECADET3D 1 day ago
Comment by breezybottom 2 days ago
Comment by mkl 2 days ago
Comment by echoangle 2 days ago
Comment by breezybottom 2 days ago
Comment by mastermage 2 days ago
Comment by SPACECADET3D 1 day ago
Comment by mastermage 23 hours ago
Additionaly what was one of the reasons why I looked at Symbolica because I would have liked to implement it in for the backend in a FOSS (non Profit) project that I wanted to start back when I was still in Academia. My plans shifted though so Its unlikely I am gonna do it in the short term. But what I originaly wanted is a FOSS alternative to Mathcad. I needed a Symbolic Calculation tool that does the heavy lifting.
Comment by sspoisk 2 days ago