Sumith : Optimized Awesomeness

GSoC Progress - Week 3 and 4


Hello, this post contains the third report of my GSoC progress. At one point, I had changed the deadline from Sundays to Fridays, but I seem to be running a week late on the post names. That has been corrected now

Progress

We decided to replace mpz_class with piranha::integer for coefficients and std::unordered_map with piranha::hash_set for the container. We got the lower-level working with this data-structure in the last week.
We decided to depend on Piranha for the Polynomial else our module won't be upto the speed we expect it to.
In future, we can write our hashtable and Integer as and when needed.

Report

The benchmarks results are:

expand2b has:

Average: 108.2ms
Maximum: 114ms
Minimum: 107ms

while the latest expand2d has:

Average: 23ms
Maximum: 23ms
Minimum: 23ms

which is a nice 4-5x speed-up.
The code for this(experimental) can be found in 470.
A more detailed report can be found here.

I also sent in a minor PR with some clean-ups that I felt neccessary in 472.

Targets for Week 5

  • Wrap the the lower level into a Polynomial class.
  • Have the functionality of atleast the UnivariatePolynomial class.
  • Explore what kind of coefficients can be passed, since we have piranha::integer we need to think of having rational and symbolic coefficients now itself.
  • Think of various areas where Polynomial class needs to integrate in SymEngine for example expand()

That's all this week.
Vaarwel