8 条评论
- mkl 21小时前Past discussion (2 years ago, 119 comments): https://news.ycombinator.com/item?id=40297423
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
- lcnbr 20小时前There is at least one benchmark on the main page https://gist.github.com/benruijl/3c53b1b0aea88b978ae609e7369.... And although it would be nice if it was open source, it is still a much nicer setup than Mathematica, as it is source available, (+ some parts are truely open source), is much faster, can be used in rust or python (so no obscure bundled language to learn), and the license lets you use one core for free (always).
- adius 20小时前As an alternative, I’m working on reimplementing Wolfram Language/ Mathematica in Rust: https://woxi.ad-si.com/ A lot of Wolfram Language code just works already!
- SPACECADET3D 5小时前I saw this project before, nice work! What is your plan when it comes to the hard core algebra parts like multivariate polynomial factorization and cylindrical algebraic decomposition? These features require quite some complex mathematical code and it is tricky to get it correct, and to get it working fast. Do you want to use other libraries for this or do you want to implement this all yourself?
If you want to use Symbolica for some of these features, feel free to reach out!
- lcnbr 19小时前How does it compare performance-wise?
- adius 19小时前For short scripts, it’s often faster because there’s less initialization overhead. In general, though, it largely depends on whether the functions you’re using already have optimized implementations in Woxi. That’s what I’m currently working on, so I’d appreciate any feedback on what doesn’t work for you yet!
- sigy 2小时前I was excited to see this, since I'm looking for a symbolic algebra library.
But then I saw the absolutely awful license. A license like that at a time like this is no small miscalculation.
- timschmidt 11小时前I've been doing some symbolica-like things recently in the https://github.com/timschmidt/hyperreal ecosystem. Not a full CAS, just enough symbolic math to maintain precision through the calculations.
Benchmarks against Symbolica and numerica here: https://github.com/timschmidt/hyperlattice/blob/main/benchma...
- SPACECADET3D 5小时前Nice, I will check this out in more detail later. I had a quick look at the benchmarks and it looks like you compare f64 hyperreal with numericas 128 bit implementation, which will fall back to using arb-prec GMP. There is also F64(simply wrapping around f64), and now DoubleFloat with 106 bits precision, which should be much faster. There is also the ErrorPropagatingFloat wrapper that may be of interest.
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?
- timschmidt 4小时前Hyperreal doesn't have any f64 mode. All math done with hyperreals is at infinite precision using a Rational of two BigUInts and a recursive real Computable. Real provides a cohesive interface over both allowing for easy scalar math. Computables are handled symbolically through a set of deterministic reduction rules until approximation is required, to preserve precision and reduce complexity. Approximation only happens at explicit public API boundaries like .to_f64_lossy() not used except for IO.
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.
- lcnbr 20小时前I’ve been a rust user of symbolica since 0.1 and it is insane how much nicer it is to use now.
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.
- aboardRat4 16小时前Why not just Maxima, Reduce, or Cadabra2?
- SPACECADET3D 13小时前Author of Symbolica here! If these packages work well for you, then just use them :) I don't have a lot of experience with using these tools, but the last time I tried the user experience isn't so great, because of lack of LSP support (no typing, autocomplete etc). It could have improved in the mean time. I believe the tools are also more oriented to polynomial algebra and no so much for manipulating general expressions.
- breezybottom 14小时前Seems like a worthy successor to Sympy, although the license system might prevent it from reaching the same level of adoption.
- mkl 12小时前No, being commercial prevents that. SymEngine is much more like that, and shares developers with SymPy: https://github.com/symengine/symengine, https://symengine.org/.
- echoangle 6小时前As someone who has not used Sympy: Why does it need a successor?
- breezybottom 5小时前Development is pretty much dead other than some bug fixes. It's been long overdue for a major rewrite.
- sspoisk 6小时前[flagged]