The Basic Polynomial Algebra Subprograms (BPAS) library provides
support for arithmetic operations
with polynomials on modern computer architectures,
in particular hardware accelerators.
Typical operations are polynomial multiplication, multi-point
evaluation and interpolation, real root isolation for both
univariate and multivariate systems.
Its code is written in C++ with
CilkPlus extension targeting multi-core processors.

Polynomial multiplication and matrix multiplication are
at the core of many algorithms in symbolic computation.

Algebraic complexity is often estimated in
terms of multiplication time.
At the software level, this reduction to multiplication
is also common (Magma, NTL, FLINT, ...).

BPAS design follows the principle
reducing everything to multiplication.

Polymorphic integration code features exact integration (as a formal sum) and symbolic-numeric integration of both dense and sparse representations of rational functions.

Exposed BPAS ring classes

Integer

RationalNumber

ComplexRationalNumber

DenseUnivariateIntegerPolynomial (also named as DUZP)

DenseUnivariateRationalPolynomial (also named as DUQP)

SparseUnivariatePolynomial<Ring>, taking any BPAS ring as the coefficient type

2016-03-18: Symbolic-numeric integration of rational functions
as well as a symbolic-numeric brute-force partial fraction decomposition method
are incorporated into BPAS library using MPSolve for numerical rootfinding.

2015-08-23: Truncated Fourier transform is implemented as a low-level function.

2015-04-13: Sparse univariate polynomial supports for resultant and subresultant chains operations.

2015-04-13: GCD and Square Free operations are supported for BPAS univariate polynomials.

2014-08-14: BPAS has contributed to Symbolic Integration, thanks to Robert Moir (U. Western Ontario).

2014-04-28: BPAS moved from 32-bit to 64-bit arithmetic.

2013-11-27: First release was online.

ORCCA Lab,
Department of Computer Science,
The University of Western Ontario,
London, Ontario, Canada N6A 5B7