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 havingrational
andsymbolic
coefficients now itself. - Think of various areas where
Polynomial
class needs to integrate in SymEngine for exampleexpand()
That's all this week.
Vaarwel