For the duration of GSoC, I have worked on the SymEngine project, with focus on writing the Cwrapper and specifically the Ruby Wrapper. Major work during the project timeline included wrapping already existing features such as MPC, MPFR, arbitrary precision evaluations, Matrices, expression parsing etc., and new features such as lambdifying expressions in Ruby and Exception Handling.
My proposal for GSoC 2016 can be viewed here .
After 13 weeks of GSoC, we’re now at the end of the summer, and it is time for me to explain and report what I did with SymEngine and its Ruby Wrappers throughout the summer.
For reporting purposes, I will take each week’s workload and indicate the status in a tabular manner, with links to the relevant PRs. Due to the nature of the project, each part usually consists of two PRs. One to the SymEngine repository , and the other to the SymEngine.rb  repository.
|1, 2||Complex Numbers & Floating Points||Completed
Wrappers for Real Double: PR#954
Implementing real_double_get_d method: PR#966
Wrappers for Real MPFR and Complex MPC: PR#972
fixes #974: PR#975
Real Double Class: PR#46
Ruby Wrappers for Real MPFR and Complex MPC: PR#49
|3||Derivatives, Substitutions, Abs||Completed
Function symbol Cwrappers: PR#982
Function symbol Ruby Wrappers: PR#51
|3||Series & Polynomials||–||–||The relevant parts in SymEngine’s C++ code library was not ready, so I had to skip this part.|
Common evals method and its Cwrappers: PR#987
Sign check for Numbers: PR#1027
evalf ruby wrapper: PR#55
|This was not included in the original proposal. Completed to compensate for Series and Polynomials.|
|4, 5, 6||Matrices||Completed.
Matrix Cwrappers: PR#992
|PR Under Review.
Matrix Ruby Wrappers: PR#56
CWrapper for parser: PR#1029
Ruby wrapper for parser: PR#60
Lambdify as a module level function: PR#61
|All work was performed on Ruby Wrappers directly.|
|9, 10||Exception Handling||Completed
Exception Handling: PR#1044
Fixing enum issue in Exceptions: PR#1069
Exception Handling: PR#64
|Wiki on exception handling. |
|11||Interfacing with GMP, MPFR, MPC gems||Incomplete||Incomplete|
|12||Buffer Period||N/A||N/A||Allocated time to catch up with missed work.|
|13||Iruby Notebooks||N/A||Awaiting Merging
Changes to beginner notebook:
|Although the examples are ready, and were included in SymEngine’s presentation at SciPy , they were not merged, pending improvements to the formatting.|
The following PRs were made for minor contributions.
- Fixes several warnings : PR#994
- Adding symengine_config.h to Cwrapper: PR#984
- Formating Fix: PR#65
- Create ruby_example.ipynb: PR#17 2016-symengine-talk
Summary of Merged Contributions:
- On SymEngine/SymEngine Repository:
106 commits / 4,316 ++ / 1,928 —
- On SymEngine/SymEngine.RB Repository:
134 commits / 3,756 ++ / 1,319 —