Hi Ondrej,

I implemented solutions to the general sum of squares. That is to the 
equations
of the form x_1**2 + x_2**2 + . . .  + x_n**2 = k. I made a commit. Please 
take a
look at the following PR. The new function is named 
`diop_general_sum_of_squares()`
and it's hooked to `diop_solve()` and `diophantine()`.

https://github.com/sympy/sympy/pull/2432

Currently, the function returns only one solution and this is fast. 
According to the 
sources I referred, Finding all the solutions is exponential in `k` and 
closely related
to subset-sum problem. More than one solution can be found by using 
`power_representation()`
described below but it's a brute and doesn't work for large `k`.

I implemented a more general function which solves x_1**p + x_2**p + . . . 
+ x_k**p = n
It is named as `power_represenatation()` and takes three arguments n, k, 
and p as in 
above equation. I didn't hook it to the `diop_solve()` or `diophantine()`. 
I am doing a bit of 
research on how I can improve this function. Even Wolfram Alpha doesn't 
have efficient solution
to this problem, for sufficiently large `n`, it gives a message saying 
standard computation time exceeded.

I implemented several functions like sum_of_three_squares() and 
sum_of_four_squares() 
which were needed to solve some of the Diophantine equations but these 
functions naturally belong
under an Additive number theory module. Then, I can import these functions 
from it and use in the
Diophantine equation module. I expect to create an additive number theory 
module for SymPy but it will
be after I finish GSoC.

I will start on the two issues you created from tomorrow. I was a bit busy 
during the last week since
I was stuck with university work, Hope to cover for that in this week.

Regards,
Thilina.

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to