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.

It appears you don't have a PDF plugin for this browser. No biggie... you can click here to download the PDF file.

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
  • Fraction
  • SmartFraction
  • SmallPrimeField
  • BigPrimeField
  • GeneralizedFermatPrimeField

  • DenseUnivariateIntegerPolynomial (also named as DUZP)
  • DenseUnivariateRationalPolynomial (also named as DUQP)
  • SparseUnivariatePolynomial<Ring>, taking any BPAS ring as the coefficient type
  • UnivariateRationalFunction<UnivariatePolynomialOverField, Field>
  • SmallPrimeFieldDistributedDenseMultivariateModularPolynomial (also named as SFDDMMP)
  • DistributedDenseMultivariateModularPolynomial<Field>
  • SparseMultivariateRationalPolynomial (also named as SMQP)
  • SparseMultivariatePolynomial<Ring>, taking any BPAS ring as the coefficient type
  • Exposed BPAS triangular set classes

  • RationalRegularChain
  • RegularChain<Ring>, taking any BPAS ring
  • TriangularSet<Ring>, taking any BPAS ring
  • If you have questions or bug reports, please contact bpas <at> scl <dot> csd <dot> uwo <dot> ca.
    Flag Counter


  • 2017-05-07: Move to GCC 6 from GCC 4.8
  • 2017-05-07: Class hierarchy restructuring. Finite fields. High-performace sparse polynomial arithmetic and data structures in SMQP.
  • 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