This software is a C++ tool for quick multivariate polynomial multiplication. It operates by breaking down the polynomial into simpler components and computing them in parallel to improve the efficiency of the process.
Polynomials are easily created over any scalar type, be it integers or floating point numbers. In addition to normal polynomial multiplication, the library can also perform truncated (Taylor series) multiplication, as well as linear changes of coordinates. Evaluating polynomials at any arbitrary points is also possible with this library.
One can check out an example or head directly to the API documentation. The aim of Polymul is to do "naive" polynomial multiplication as fast as possible. The library neither employs any tricks nor uses FFTs that tend to turn polynomial multiplication into an Nlog(N) process.
Since Polymul only deals with polynomials of a compile time constant degree, the library tends to be limited to relatively small polynomials. Therefore, the polynomial class doesn't overload the arithmetic operators, as it would be difficult to utilize such arithmetic in practice. Notably, since the result of multiplication produces a polynomial of higher degree than its factors, it entails a different C++ type, which could prove difficult to employ.
However, it is possible to use Polymul as a base for implementing dynamically sized polynomials or truncated (Taylor) arithmetic. In conclusion, Polymul is a remarkable C++ template library that efficiently multiplies multivariate polynomials, making it a worthy addition to any software stack.
Version 1.0: N/A