Dear Oscar,
Thank you for your detailed response and for outlining the priority of integrating FLINT via python-flint for multivariate polynomials. I truly appreciate the guidance and the resources you have shared. Given that this is at the top of SymPy's development roadmap, I am eager to contribute to this effort with my whole heart. I will start by exploring python-flint. reviewing the existing integration in SymPy, and understanding the necessary modifications to rings.py and polyclasses.py. Best Regards, Pratyksh On Saturday, February 8, 2025 at 3:31:21 AM UTC+5:30 Oscar wrote: > Improving SymPy's multivariate polynomial algorithms does fit with > SymPy's development roadmap but the top priority item here is making > use of FLINT via python-flint. You can install the latest development > version of python-flint from the scientific Python nightly wheels > index with: > > pip install -i > https://pypi.anaconda.org/scientific-python-nightly-wheels/simple > python-flint > > https://anaconda.org/scientific-python-nightly-wheels/python-flint > > Once you have that you can use it for multivariate polynomials: > > In [3]: from flint import fmpz_mpoly_ctx > > In [4]: ctx = fmpz_mpoly_ctx.get(['x', 'y']) > > In [5]: x, y = ctx.gens() > > In [6]: p = x**2 - y**2 > > In [7]: p > Out[7]: x^2 - y^2 > > In [8]: p.factor() > Out[8]: (1, [(x + y, 1), (x - y, 1)]) > > This is much faster than SymPy's Python implementations for things > like arithmetic, gcd, factor etc and has good implementations of good > algorithms for all the most important operations. > > What is needed is for SymPy to make use of this when python-flint is > installed for multivariate polynomials similar to this PR which was > for univariate polynomials: > > https://github.com/sympy/sympy/pull/25722 > > The outcome of that is the three classes in polyclasses.py: > > https://github.com/sympy/sympy/blob/master/sympy/polys/polyclasses.py > > There are DMP, DMP_Python and DUP_Flint with the latter being the > class that uses python-flint but it is only for univariate > polynomials. What is needed is to have DMP_Flint there for > multivariate polynomials based on FLINT but more importantly the first > thing needed is to have versions of PolyRing and PolyElement based on > python-flint. The first thing that is needed is that this code needs > to have alternate versions that can use FLINT: > > https://github.com/sympy/sympy/blob/master/sympy/polys/rings.py > > Making it so that SymPy uses FLINT via python-flint for things like > multivariate polynomials is top of the priority list in my development > roadmap. There are many more things besides just multivariate > polynomials in FLINT and python-flint that SymPy should make use of as > well. > > On Fri, 7 Feb 2025 at 17:50, Pratyksh Gupta <[email protected]> wrote: > > > > Hello SymPy developers, > > > > I am excited to share my interest in contributing to SymPy by enhancing > its capabilities in multivariate polynomial arithmetic and factorization. > Currently, SymPy utilizes Kronecker's method for multivariate polynomial > factorization, which, while a solid foundation, lacks the efficiency needed > for practical applications. I propose implementing more advanced > algorithms, such as Wang's EEZ-GCD or Gao's approach using partial > differential equations, to boost the efficiency and usability of > multivariate polynomial operations in SymPy. > > > > My main question is: Does expanding SymPy's support for efficient > multivariate polynomial arithmetic and factorization fit within the > project's current development roadmap and priorities? > > > > If this aligns with SymPy's objectives, I am eager to contribute to this > initiative. I have a strong background in algebra and computational > mathematics, which I believe will be valuable in addressing this challenge. > I am ready to delve into the implementation details, research > state-of-the-art algorithms, and develop a concrete plan to integrate these > enhancements into SymPy. > > > > To help facilitate this process, I would greatly appreciate any guidance > on: > > > > Recommended resources or existing work within SymPy that I should review > > > > Thank you for your time and consideration. I look forward to your > response and am excited about the opportunity to contribute to SymPy's > development. > > > > Best regards, > > > > Pratyksh Gupta. > > > > -- > > 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 visit > https://groups.google.com/d/msgid/sympy/8d38e2ee-bdc5-416b-a50c-bfb993558127n%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 visit https://groups.google.com/d/msgid/sympy/9ba5a81d-4252-4c59-86e3-4f4d48c870dbn%40googlegroups.com.
