Add support for poly-poly multiplication in the Newton basis.
Polynomials in the Newton basis can now be multiplied via *
operator. In general, the Lagrange coefficients of the product polynomial are obtained by multiplying the evaluation of the operand polynomials at the unisolvent nodes of the product grid. Then DDS is carried out to obtain the corresponding Newton coefficient. Using DDS implies that the product multi-index set must be downward-closed.
A special case applies in which one of the operand is a constant polynomial which then is the same as poly-scalar multiplication without the need to carry out DDS.
Additionally:
- Polynomials in any basis can only be multiplied if they have a matching domain and consistent number of coefficient sets; otherwise an exception is raised.
- The test suite has been expanded to include testing the behavior of poly-poly multiplication in the Newton basis.
This MR should partially resolve Issue #143 (closed). There is no support (yet) for augmented poly-poly multiplication via *=
.