> Is there some benefit to using Python for everything? Although we use Flint, for instance, they are still left with optional dependency. And there are some reasons behind duplicating some algorithms.
C binary distributions are dependent on platforms, for example, X86 and ARM and also dependent on operating systems, but SymPy works at least everywhere where Python interpreter can run, and the distribution of SymPy is much more easier than others. There are benefits of using pure python script, specific for Python users. For example, it is easy to extend SymPy by subclassing, or at least we let users to do by figure out something from the implementation. However, binding with C++ object is not very smooth >>> from symengine import Basic >>> class Foo(Basic): ... pass ... >>> Foo(123) Segmentation fault (core dumped) On Tuesday, October 8, 2024 at 10:22:39 PM UTC+2 Oscar wrote: > If you pip install python-flint then it will be used to make some > things in SymPy faster. Compare e.g. this with python-flint installed > vs not installed: > > In [2]: %time p = Poly(x + 1)**1000 > CPU times: user 202 ms, sys: 88 μs, total: 202 ms > Wall time: 200 ms > > In [3]: %time r = p.factor_list() > CPU times: user 42.6 s, sys: 3.9 ms, total: 42.6 s > Wall time: 42.6 s > > With python-flint: > > In [3]: %time p = Poly(x + 1)**1000 > CPU times: user 1.99 ms, sys: 172 μs, total: 2.17 ms > Wall time: 2.19 ms # 100x faster > > In [4]: %time r = p.factor_list() > CPU times: user 35.1 ms, sys: 0 ns, total: 35.1 ms > Wall time: 35.1 ms # 1000x faster > > This is the result of using python-flint which wraps the FLINT library: > > https://python-flint.readthedocs.io/en/latest/ > https://flintlib.org/ > > This is still a work in progress. I expect that the next SymPy release > will use python-FLINT for multivariate polynomials which will make a > more noticeable difference and will mean that it is used for > polynomial domain elements and therefore many matrix operations as > well. > > The initial PR for multivariate polynomials does not have any actual > content in it yet: > > https://github.com/sympy/sympy/pull/26793 > > A lot of upstream progress has happened though: > > https://github.com/flintlib/python-flint/pull/132 > https://github.com/flintlib/python-flint/pull/164 > https://github.com/flintlib/python-flint/pull/190 > https://github.com/flintlib/python-flint/pull/191 > https://github.com/flintlib/python-flint/pull/192 > https://github.com/flintlib/python-flint/pull/216 > https://github.com/flintlib/python-flint/pull/225 > > There are many more features in FLINT and python-flint that are not > yet used in SymPy as well that can speed up all sorts of things like > Arb to speed up evalf and so on. > > -- > Oscar > > On Tue, 8 Oct 2024 at 20:33, Jason Moore <[email protected]> wrote: > > > > Dear Tilo, > > > > This has been attempted several times throughout the history of SymPy, > some with more success than others: > > > > https://github.com/pearu/sympycore > > > > https://github.com/certik/sympyx > > > > https://github.com/symengine/symengine > > > > https://github.com/oscarbenjamin/rust_protosym > > > > > > Jason > > moorepants.info > > +01 530-601-9791 <(530)%20601-9791> > > > > > > On Tue, Oct 8, 2024 at 5:41 PM Tilo RC <[email protected]> wrote: > >> > >> Hi all, > >> > >> Just out of curiosity I was wondering if core functionality of SymPy > could be implemented in C/C++ or some other fast language. I would imagine > this would greatly improve speed. > >> > >> Is there some benefit to using Python for everything? > >> > >> Sincerely, > >> > >> Tilo > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups "sympy" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > >> To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/a8389e50-818c-4011-8018-597f6b3db6b0n%40googlegroups.com > . > > > > -- > > You received this message because you are subscribed to the Google > Groups "sympy" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAP7f1AjzMvJrj40cwOOLeF%2BQSo0gM87dBWjhzxRhki29JL_Jhg%40mail.gmail.com > . > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/a04525d6-6900-469f-8dcf-7f9726fc9c83n%40googlegroups.com.
