Skip to main content

GSoC 2018: Week 3

Hello everyone. Here is the update of my work in the third week of GSoC. 

Unlike last week, this week clarified some of the real problems of our implementation of rubi.
I began to freshly test trinomial products after getting the older test-suite. 

Initially, I came across the problem of Coeff and Sum. I solved this by redefining Coeff and introducing a function Sum_doit. After this, I realised With statement was not being parsed correctly for many cases. Parsetools was improved to take care of the with statements.


After this, I encountered with some utility functions where the output was not as expected. This is the major cause of the failing tests. Constraints too are affected by this. I tried to find and solve as much as possible. I have to trace all functions in cases of failing tests and compare the output with Mathematica. I improved few utility functions and updated in the PR. Also, there were some exceptions in Matchpy, where constraints were being checked taking x as a numerical value. It resulted in TypeErrors. So I updated the constraints in such a way that it avoids such exceptions.

After all this and some small changes, I almost have tested half of the trinomial products in the test-suite. Some issues are not solved yet, like : 
  • Sorting of variables.
  • Not implemented error in apart of sympy.
  • And few rules, which are not well defined.


Here is the brief work of this week:
  • Solved the issue of Sum and Coeff.
  • improved parsetools for with statements.
  • little modification to constraints definition.
  • improved utility functions
  • minor changes in parsetools.

I was supposed to completely test trinomial products within this week. I tried hard, but the debugging part is time taking. Finding the real issue for failing test, takes time. Also, it needs to be compared with Mathematica. But the good thing is that, after finding the issue and fixing it, tests are passing. So after this week, I can say that if we are good with our utility functions, we will be able to test more than 90% of the original rubi test suite.

In the upcoming week, I will do more testing and complete trinomial products.

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: 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…

GSoC 2018: Week 8

Hello everyone. Here is the brief summary of the progress of rubi integration module in the 8th week of GSoC period.

We completed the testing of logarithmic test cases. Some of the tests are failing as they depend on trigonometric rules. The rules and tests have been updated in this PR.

Next, I loaded all trigonometric rules. They are huge in number. So the loading time increased from 1 min 30 sec to around 6 min. For now, I have not loaded them. I also updated the test cases for parsetools and fixed code quality issues. Currently, the travis is failing due to a bug, which has been fixed in branch 1.2. In the upcoming week, 1.2 probably will get merged in master.

Then I moved on to implementing appellf1 in sympy. Progress can be seen in this PR.

We will be updating our utility_functions to the latest version of RUBI.