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 . 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.