Skip to main content

GSoC 2018: Week 10


Hello everyone. Here is the brief progress of Rubi module in the 10th week of GSoC period.

Last week, we were able to load all rules. Rubi has now come in a very stable and working condition. One Missing thing in the main PR was missing instructions and documentation. This week I tried my best to write instructions, so that a new user can easily get familiar with it. I have kept it really simple.

Initially, I wrote a script in Mathematica to generate downvalues in separate files. This was done till now manually, but now it's automated. Then I wrote a sympy script to generate all rules and constraints in proper files directly just by running a function.
For a more easier understanding of steps, I created `rubi_parsing_guide.md` explaining all steps.

Next thing I realised that it would be good if we create a parsing script for the tests too. Till now I used maple format. But a lot of manual things were required. So I wrote a script which directly parses tests into sympy format. All this are added properly in `rubi_parsing_guide.md`.
`init` in Rubi too was updated with proper explanation of basic structure of rules and constraints. I also updated docs of few important utility_functions.


Now a new user can easily get familiar with Rubi and working with it will be simple.

I have also opened a new PR for new utility_functions. Once the old PR gets merged, we can merge this.

Comments

Popular posts from this blog

GSoC 2018: Week 9

Hello everyone. Here is the progress of rubi module in the 9th week of GSoC period.
In the very beginning of the week, the PR for appelf1 was merged. My aim for this week was to load all rules and test at least a small part for each type of rule. Due to the time factor, its not possible to test all. Moreover, rubi needs to be updated to the latest version, so the test suite too will be updated.  
I started with trigo rules. They are huge in number. They were never tested before, so some utility_functions like `TrigReduce`, `KnownTrigIntegrandQ`, `FunctionOfTrig` etc were wrong. They were corrected. Soon I realised a difference between sympy and Mathematica. In mathematica, `1/Cot[x]` is automatically transformed to `Tan[x]` and `1/Tan[x]` too was transformed to `Cot[x]`. But in sympy, these are different. So, `tan(x)` didn't match to `cot(x)` . Francesco suggested to replace all `cot` with `1/tan`  and similarly for `sec` and `csc` (in the code generator too). 
Next, I moved to `i…

GSoC 2018: Proposal Acceptance and Community Bonding Period

Hello, I'm Ashish Kumar Gaurav a undergraduate student at Indian Institute of Technology, Kharagpur. My proposal for completing rule based integration(RUBI) in sympy has been accepted as a part of Google Summer of Code.

RUBI consists of about 10,000 rules. Sympy can use these rules rather than various algorithms to perform efficient integration. RUBI had been a GSoC project last year but it could not be completed. I hope that I will be able to bring RUBI in a working state.


Community bonding period is near end and coding period will be starting on 14th May. In this period I have done the following improvements: Fixed a bug in parsetool, which raised exceptions while sympifying the code.Removed repeated definition of same constraints. All constraints are present in a single file constraints.py , in which each constraint is defined uniquely. Earlier same constraints were defined multiple times. An issue had also been created here.Removed dependencies of lambda function from constraints…