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/CAHVvXxRNW2f49WMcCUmdeBYwK_NCUdoYOYHOx4Nw19Sa1Fr0kw%40mail.gmail.com.

Reply via email to