Skip to main content


Showing posts from June, 2018

GSoC 2018: Week 6

Here is the brief work done for rubi in the 6th week of GSoC period.

Last week almost 70 % of the miscellaneous algebra was tested. In the start of the week, the miscellaneous algebra testing was completed. The miscellaneous algebra test cases have been pushed in this PR.

After this, I moved on to load exponential rules and test them. While loading the exponential rules, there were some parsing issues. Those were fixed. On start of the testing, it was found that some integrals depend upon the logarithmic and special_function rules. Those too needed to be loaded. There were some undefined or wrongly defined utility_functions like `CancelCommonFactors`, `Gamma (gammainc)`, `PolyGamma`, `ProductLog` and few more small functions. These didn't take much time. I fixed all these.
Soon I realised a major issue of `exp` and `Pow`. Sympy doesn't identify exp as Pow. The rubi rules are defined in such a way that exp needs to be realised as Pow. I tried to process an expression to replace e…

GSoC 2018: Week 5

Hello everyone. Here is the brief summary of my work in the 5th week of GSoC period.
I started this week with testing miscellaneous algebraic test cases. Soon it was found that most test cases depend on rules of `Miscellaneous integration`. So I loaded those rules. There were few new structure in constraints. So parser too was updated for incorporating those. 
While testing, `ExpandIntegrand` did not function well. Matcher used in ExpandIntegrand was of sympy. I changed ExpandIntegrand using replace_all of matchpy. In few more functions I changed the structure using matchpy. In this week, a major part of the time was spent in utility functions. There are many changes. Also some of the test cases of last year was wrong. It gave different result in mathematica. The test cases which I have updated matches with Mathematica's output. I have pushed all changes of utility function in this PR.
Parallely I have also tested around 70 % of miscellaneous algebraic. I will complete the testing…

GSoC 2018: Week 4

Hello everyone. Here is the brief work done in the 4th week.

In this week I have completed the testing of trinomial products. There are around 2700 test cases. I have tested them all in sympy. I have updated the PR .

Currently, a few tests are failing because of 2 major issues :
Apart - Some features are unimplemented in apart of sympy. So expressions are not simplified.appellf1 - There is a missing implementation of appellf1 in sympy. If the above two issues are solved, almost all tests will pass.
Utility functions have been improved a lot this week. The is_polynomial of sympy has certain issues and so the constraints were affected. I have re-written PolynomialQ. It is not full proof, but it handles most of the cases. There are many small changes in utility functions. They can be seen in the PR.
I am lagging behind my proposed timeline. But the work in rubi is time-consuming. When a test fails, finding the same rule in Mathematica, finding whether all constraints return the same result…

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 …