GSoC 2017 Report Adha Ranjith Kumar : Implementing Solvers for SymEngine
This page gives a detailed report on the work I did during my 2017 GSoC project. See blog-site for a weekly break-up of my progress and core details of all the PRs.
My name is Ranjith Kumar and I am currently a third-year Computer Science Undergrad at Indian Institute of Technology Kharagpur, India.
My proposal for GSoC 2017 was to Implement Solvers for SymEngine.
I added FLINT
wrappers for factorisation during this period. Most of the time during this period was on getting more thorough with the code base, going through the FLINT documentation and understanding some design concepts like Visitor pattern which are required in later stages of the program.
Major focus during this phase was on Improving the Sets module. I added set_intersection
and implemented Complement
, ImageSet
and ConditionSet
. After adding this, the robustness required in Sets
module for implementing Solvers
was achieved as expected. I really thank my mentors for being patient, when I made several silly errors during this phase. I was able to push a raw version of Polynomial solvers just before First Evaluations.
I worked on Polynomial solvers for the initial half of this phase. SymEngine's own implementation for lower degree polynomials and integrating FLINT
wrappers developed during the community bonding phase for solving polynomials of higher order was successfully implemented.
Next target for me was to focus on Trigonometric solvers. The PR, I initially sent for trigonometric solvers was a lot messed up with a lot of independent stuff. I had to break it into smaller parts and then my focus shifted to getting all these parts merged before returning to actual solvers. I implemented visitors for expand_as_exp
and as_real_imag
, which came as surprising visitors to my To-Do list(Not part of my proposal).
I learnt a lot of new and interesting c++ and design stuff in this phase.
I continued on getting all the parts for the Trigonometric Solvers ready. I landed in various Travis errors which ate quite a lot of time. Thanks to Isuru who figured this part out, I was able to get them cleared up. I also implemented function to compute eigen_values
of a Matrix(Under Applications of Solvers) and system of equations
and visitor for xreplace
. Unfortunately, these PRs are not yet merged.
This phase was really harsh for me, primarily due to hectic schedule of my college. High Fever for around 6 days made life even more miserable.
- Getting all the pending PRs merged.
- Implementing
fu
algorithm. I have already made some progress here. I would like to continue working on this after #1305 gets in. - Completing the PR #1058.
I am grateful to work with my mentors Srajan, Sumith, Nishant, Shivam and Amit for this project. They helped me throughout summers. I am really thankful to the SymPy community for giving me this opportunity to work in this project.
Weekly Blog : https://ranjithkumar007.github.io/
Progress report : https://github.com/symengine/symengine/wiki/GSoC-2017-Solvers-Progress-report
All PRs sent by me : https://github.com/symengine/symengine/pulls/ranjithkumar007
Discussions : https://gitter.im/ranjith-gsoc/Lobby