Hello,

As we know that the work for solvers i.e replacing solve with solveset is 
being in progress from last four years. A lot of work has been done during 
this period by Harsh Gupta(@hargup), Amit Kumar(@aktech), Kshitij 
Saraogi(@kshitij10496), Shekhar Rajak(@Shekharrajak) and Yathartha 
Joshi(@Yathartha22). I want to summarize whats left to be done. I want to 
work on this project as I had quite a good experience with solvers and had 
implemented solving specific type of exponential equation recently. 

Mainly three things are left to be done and the order in which it should be 
done:

1. Transolve :
    * Lambert Solver - It has been implemented and need to be passed some 
tests which i am working on now.
    * Modular Equation - I went through #13178 
<https://github.com/sympy/sympy/issues/13178> . It would be good to have 
more discussion on how to implement this and the equations which come under 
this.
    * Extending transolve to complex domain - needs discussion and proper 
plan of implementation.

2. Set Infrastructure(Image Set) : Many of the things depend on this in 
solveset. So I think this should be the next task done after transolve 
above.

3. Extending nonlinsove for trigonometric/transcedental equations.

First of we I think we should discuss about Transolve to complete. 
For lambert solver I think @Yathartha22, you should tell here that whats 
exactly left to be done so that all can give suggestions. 
For handling modular equations - @smichr, @asmeurer What do you think how 
should we approach this?
Example
This problem is expected to return {100}

n = symbols('n', integer=True)
a = 742938285
z = 1898888478
m = 2**31 - 1
x = 20170816
solveset(x – Mod(a**n*z, m), n, S.Integers)

Above can be implemented in sympy as suggested by @smichr

a = 742938285
z = 1898888478
m = 2**31 - 1
x = 20170816
arg = x*invert(z, m)  

n = discrete_log(m, arg, a) 

What do you think @smichr, @asmeurer here? Should we define (in the 
solveset module) an _invert (modulo m) function by the model of 
_invert_real and _invert_complex?

Suggestions on rest of the points can also be given here.

I request to mentors to please give suggestions and have a discussion on 
this to proceed further.

-- 
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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/9098d00c-7d1c-4fc1-9bef-2a200df10a4e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to