My name is Abdullah Javed Nesar, I am an undergraduate student at Indian Institute of Technology, Kharagpur.
About the Project
A Rule based integrator nicknamed Rubi is an entirely new module in SymPy, Integrals. It is an implementation of more than 10,000 rules to cover a wide variety of indefinite integration. Currently SymPy uses algorithms for indefinite integration which are too slow and presents results which are not simplified. Rubi utilizes a set of well defined rules which makes it smart to present the results in a more symmetric and simplified manner.
The plan earlier was to implement a completely new pattern matcher with multiple functionalities which was as efficient as Mathematica’s pattern matcher. As the pattern matcher would be the back bone of Rubi. But later we came across matchpy and we planned to implement it in our module. But because it is implemented in Python3.6 Rubi isn’t capable to support Python version less then 3.6.
- Utility functions: We have managed to cover majority of the utility functions. Our job was to re-write functions from mathematica to Python.
- Added rules into SymPy using Python parser.
- Added tests cases. But unfortunately we could not include all the tests due to performance issue in Python. Tests was taking too long so we decided to include only a few of them.
- Although we have implemented all the rules, but we could not work much on the performance and so it takes too long for Python to compute results. Because of this issue we could not add all the test cases.
- Working on left out Utility functions. Few of the utility functions were a bit tricky like
FixRhsIntRuleetc are yet to be implemented.
- Extending rules set for a smarter computation and better results.
- Replacing the SymPy’s pattern matcher with matchpy in utility functions.
I would like to thank my mentor Ondřej Čertík for this project idea and helping me understand the project, I am also thankful to Francesco Bonazzi and Aaron Meurer for helping me from the very beginning at every stage whenever I needed help.
- Link to pull request: https://github.com/sympy/sympy/pull/12978
- Weekly blog link: https://nesar2017.wordpress.com/