Hi All, I would like to work on extending the elementary functions module for CSymPy this summer as a GSoC project. I would like to focus mainly on implementing functions on Combinatorial Number Theory. These mainly include the functions which are currently implemented in combinatorial module of SymPy.
I hope to implement following (rough) list of things related to combinatorial number theory: 1. Functions corresponding to the factorial module in SymPy: 1. Factorial* 2. SubFactorial 3. Rising Factorial 4. Falling Factorial 5. Factorial2* 6. Multifactorial* 7. Binomial Coefficient* 2. Some Special Numbers from those implemented in numbers module in SymPy 1. Fibonacci* 2. Lucas* 3. Bernoulli 4. Catalan Currently we are using gmp library in CSymPy. Some of whose functions have been used in the ntheory module for CSymPy by Thilina. >From the above list, the items marked (*) have already been implemented in the Ntheory module of GMP [1] I haven't yet decided upon the scope of the project. If the current amount of work seems on the pessimist side, I can include a couple of more Special Numbers implemented by SymPy and then plan my timeline accordingly. As far as implementing Bernoulli number is concerned, I have looked into the bernmm[2] which has been authored solely for computing Bernoulli numbers efficiently. It is also being used in sage[5] to implement `bernoulli` function. The dependencies of bernmm include GMP[3] (which is already being used as a dependency) and NLT[4] We can either look into reusing the same code, in such a scenario I can find some more time to implement some other combinatorial numbers or else we can look into implementing the algorithm[6] itself. I have created a very rough draft of the my proposal: https://github.com/sympy/sympy/wiki/GSoC-2014-Application-Sushant-Hiray:-Extending-Elementary-Functions-CSymPy Currently I'm trying to figure out the scope of the project, I would then update the implementation issues and timeline accordingly. Also as far as implementation is concerned, I'm following the route taken by Thilina by creating functions corresponding to each Combinatorial Number. An alternate implementation might be to create a class corresponding to each Combinatorial Number. Using the latter method, we could add more functions later on for eg: risingfactorial(x,5) = x*(x+1)*(x+2)*(x+3)*(x+4) In such a case, we can as well define the derivative, integral as the library improves in the later stages. So for such cases we might as well implement an eval function inside the class which could evaluate its value rather than just having it as a function which evaluates its value. As far as proposal is concerned, I have followed the former method, but I would like to hear suggestions regarding this. Hoping to hear some feedback from you guys. [1] https://gmplib.org/manual/Number-Theoretic-Functions.html#Number-Theoretic-Functions [2] http://web.maths.unsw.edu.au/~davidharvey/code/bernmm/ [3] https://gmplib.org/ [4] http://www.shoup.net/ntl/ [5] http://www.sagemath.org/ [6] http://web.maths.unsw.edu.au/~davidharvey/papers/bernmm/ Regards, Sushant Hiray -- 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 http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/7a391d3f-898d-462d-9e25-167f568ce5e3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.