Week 4 for GSoC just ended and this week I completed implementing the Exponential Module.
I started the week by implementing
ATan2 which was not implemented in the PR of Trignometric Module.
Pull 189 looked into implementing the
ATan2 functionality. Since to implement
ATan2 we needed to find whether the signs of numerator and denominators. In case of complex symbolic expressions, we are yet to implement
numeric-eval in CSymPy, so in those cases we just
return the object, in cases where we find the
arg in lookup table we simplify and give out the result.
A more detailed version of the assumptions can be found in this comment in PR. It is also documented in the code.
ATan2, I worked on the Exponential module. Aaron gave some insights regarding the implementation of the exponential module, specifically he mentioned the fact that
It's better to special case E in one place `(pow)` than to special case exp everywhere in the code that tries to deal with pow objects
So discussing this with Ondrej we decided to keep
exp only as a function which just calls
pow(E, x) underneath.
The logarithm class was similar to the current implementation of SymPy barring the part involving complex numbers. The exponential module as a whole was implemented in pull request which has been merged into master.
I have also decided to implement the LambertW function. It wasn’t a part of my original proposal but it seems pretty trivial to implement! Once this is merged into master, the exponential module will cover all major functions implemented by SymPy.
As usual most of the actual discussions happened on PR, Aaron also gave some insights on gitter! So its good to hangout there as well.
- This week @isuruf started helping us out in the Number Theory module which was originally added by Thilina.
- Also I’ve noticed extra traffic in CSymPy gitter. A lot of people have started following the conversations there! That is good to see :)
The Week Ahead
- Add the
- Implement the
Thats all for now :) Will get back next week!