*Dear Oscar,*


Thank you for the detailed response and for outlining the priority of 
integrating python-flint for multivariate polynomials. I have started 
exploring python-flint and reviewing the existing integration in SymPy.


I had a few questions regarding the implementation:

1. Should DMP_Flint follow the same structure as DUP_Flint, or are there 
any specific considerations for handling multivariate polynomials 
efficiently ?

2. For integrating PolyRing and PolyElement, should I strictly follow the 
approach in polyclasses.py, or are there design differences to account for ?

3. Are there existing benchmark tests for comparing performance 
improvements with python-flint? If not, what key operations (e.g., gcd, 
factor) should we focus on for measuring efficiency gains ?

4. Is there an ongoing discussion or PR related to this work that I should 
follow or contribute to ?


I’d appreciate any insights on these aspects before I begin structuring the 
implementation. Looking forward to your guidance!


*Best regards,*

Pratyksh Gupta

On Saturday, February 8, 2025 at 9:21:32 AM UTC+5:30 Pratyksh Gupta wrote:

> 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/8cf0b808-1672-46be-b1e6-e21a6a82ab72n%40googlegroups.com.

Reply via email to