Speed up Cauchy products
We can improve on efficiency of Cauchy products by making sure that a Cauchy product of 3 series is defined as the Cauchy product of 2 series, where one of them is also a Cauchy product.
For example, we can define A \star B \star C = A \star D
, where terms of D = B \star C
are cached and reused, speeding things up.
Naive evaluation of A \star B \star C
would require a quadratic number of products per order n, and this is what we do now.
Using A \star D
has a linear cost instead.