[GSoC] CSymPy

106 views
Skip to first unread message

Thilina Rathnayake

unread,
Mar 5, 2014, 6:25:48 PM3/5/14
to sy...@googlegroups.com
Hi All,

I wish to apply for in this year's GSoC as well and I am interested in doing
a project with CSymPy. I worked with Ondrej on implementing basic number
theoretic functionalities for CSymPy during the last few months. Below are
some PRs related to above work.

https://github.com/certik/csympy/pull/99
https://github.com/certik/csympy/pull/103

IMO what we need to do with CSymPy right now is to follow the 80-20
principle, i.e. implement that 20% of functionality that will be used in 80%
of the use cases. After that we can gradually implement the additional
functionalities as we wish. Ondrej has already done a great job in
implementing the required foundation to do this.

With this idea in mind, the first two projects (Implementing elementary
functions and Implementing series expansion) listed in the ideas page under
CSymPy looked interesting to me. I hope to study these two projects in detail
during the next few days and discuss with the group on how these should be
carried out.

Also, What functionalities listed here (except for the two mentioned earlier)
can be considered appropriate to be implemented in CSymPy at the present?

Regerds,
Thilina

Ondřej Čertík

unread,
Mar 5, 2014, 7:16:39 PM3/5/14
to sympy
On Wed, Mar 5, 2014 at 4:25 PM, Thilina Rathnayake
<thilin...@gmail.com> wrote:
> Hi All,
>
> I wish to apply for in this year's GSoC as well and I am interested in doing
> a project with CSymPy. I worked with Ondrej on implementing basic number
> theoretic functionalities for CSymPy during the last few months. Below are
> some PRs related to above work.
>
> https://github.com/certik/csympy/pull/99
> https://github.com/certik/csympy/pull/103
>
> IMO what we need to do with CSymPy right now is to follow the 80-20
> principle, i.e. implement that 20% of functionality that will be used in 80%
> of the use cases. After that we can gradually implement the additional

Precisely.

> functionalities as we wish. Ondrej has already done a great job in
> implementing the required foundation to do this.
>
> With this idea in mind, the first two projects (Implementing elementary
> functions and Implementing series expansion) listed in the ideas page under
> CSymPy looked interesting to me. I hope to study these two projects in
> detail
> during the next few days and discuss with the group on how these should be
> carried out.
>
> Also, What functionalities listed here (except for the two mentioned
> earlier)
> can be considered appropriate to be implemented in CSymPy at the present?

Great question.

So for example, I don't think we need to implement limits, because
I don't know any application where one would need to call limit() in
some loop for lots of different things,
in other words, SymPy is fast enough for this.

I think that were people find SymPy slow is:

* general (long) expression manipulation

* sparse multivariate polynomials (though the one in the latest sympy
are pretty fast already), but
I think there would be a benefit of having very efficient sparse
multivariate poly implementation

* Matrix manipulation with symbolic expressions, things like linear
solve and similar.

Most applications that I've seen where people tried SymPy and it was
too slow have the above.

So from this, the Matrix class and related algorithms is another great
GSoC project I think. The algorithms
are in SymPy, so I think it should be clear what to do.

Ondrej

Thilina Rathnayake

unread,
Mar 5, 2014, 7:43:51 PM3/5/14
to sy...@googlegroups.com
Thanks for the reply Ondrej.
I agree.
 
I think that were people find SymPy slow is:

* general (long) expression manipulation

* sparse multivariate polynomials (though the one in the latest sympy
are pretty fast already), but
I think there would be a benefit of having very efficient sparse
multivariate poly implementation

* Matrix manipulation with symbolic expressions, things like linear
solve and similar.

Most applications that I've seen where people tried SymPy and it was
too slow have the above.

So from this, the Matrix class and related algorithms is another great
GSoC project I think. The algorithms
are in SymPy, so I think it should be clear what to do. 
 
Yes, CSymPy can hugely benefit from a Matrix class and related algorithms.
As you have correctly pointed out, especially when solving linear equations.
I was reading this to implement the solutions for a linear diophantine equation
system for SymPy/CSymPy. If we had a Matrix class in CSymPy, implementing
this would be really easy.

Ondrej

--
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+un...@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CADDwiVBHRcSoLsz5wyB5XV8rZXor68p2q-fzcQKQF5bpikq_Yw%40mail.gmail.com.

Vinzent Steinberg

unread,
Mar 11, 2014, 8:56:41 PM3/11/14
to sy...@googlegroups.com
On Wednesday, March 5, 2014 7:16:39 PM UTC-5, Ondřej Čertík wrote:
[...]

* sparse multivariate polynomials (though the one in the latest sympy
are pretty fast already), but
I think there would be a benefit of having very efficient sparse
multivariate poly implementation

Would it make sense to use an existing library for this?

Vinzent

Thilina Rathnayake

unread,
Mar 12, 2014, 11:45:51 AM3/12/14
to sy...@googlegroups.com
Hi Vincent,

As I have pointed out earlier one of the design goals of CSymPy
is to work without dependencies. Currently, only compulsory dependency
for CSymPy is the gmp library. Ondrej might able to explain this
more.


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 sympy+un...@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.

Ondřej Čertík

unread,
Mar 15, 2014, 4:43:31 PM3/15/14
to sympy
Absolutely. For univariate polynomials, we can use Flint.
For multivariate polynomials, I think the only library that can do it
is Singular
(which is what Sage uses), so we should try to use it too.

Ondrej
Reply all
Reply to author
Forward
0 new messages