Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::Polynomial Struct Reference

Polynomial evaluation and manipulation utilities. More...

#include <poly_math.hpp>

Static Public Member Functions

template<typename SampleType = float>
static SampleType eval (const std::vector< SampleType > &coeffs, SampleType x)
 Evaluate polynomial using Horner's method.
template<typename SampleType = float>
static std::complex< SampleType > eval_complex (const std::vector< SampleType > &coeffs, std::complex< SampleType > z)
 Evaluate complex polynomial (for frequency response).
template<typename SampleType = float>
static std::pair< std::complex< SampleType >, std::complex< SampleType > > roots_quadratic (SampleType a, SampleType b, SampleType c)
 Roots of quadratic ax^2 + bx + c.
template<typename SampleType = float>
static std::vector< SampleType > multiply (const std::vector< SampleType > &a, const std::vector< SampleType > &b)
 Multiply two polynomials (convolution of coefficients). Not RT-safe.
template<typename SampleType = float>
static std::vector< SampleType > add (const std::vector< SampleType > &a, const std::vector< SampleType > &b)
 Add two polynomials. Not RT-safe.
template<typename SampleType = float>
static std::vector< SampleType > scale (const std::vector< SampleType > &p, SampleType s)
 Scale all coefficients by a constant. Not RT-safe.
template<typename SampleType = float>
static std::vector< SampleType > derivative (const std::vector< SampleType > &p)
 Derivative of a polynomial. Not RT-safe.

Detailed Description

Polynomial evaluation and manipulation utilities.

RT contract: eval(), eval_complex(), roots_quadratic(), and fixed-size matrix operations are allocation-free. Helpers that return std::vector allocate result storage and are design/control-thread utilities.

// Evaluate polynomial: 3x^2 + 2x + 1
float y = Polynomial::eval({1.0f, 2.0f, 3.0f}, x); // coeffs[0] = constant
// Find roots of quadratic
auto roots = Polynomial::roots_quadratic(1.0f, -3.0f, 2.0f); // x=1, x=2
static SampleType eval(const std::vector< SampleType > &coeffs, SampleType x)
Evaluate polynomial using Horner's method.
Definition poly_math.hpp:32
static std::pair< std::complex< SampleType >, std::complex< SampleType > > roots_quadratic(SampleType a, SampleType b, SampleType c)
Roots of quadratic ax^2 + bx + c.
Definition poly_math.hpp:58

Member Function Documentation

◆ add()

template<typename SampleType = float>
std::vector< SampleType > pulp::signal::Polynomial::add ( const std::vector< SampleType > & a,
const std::vector< SampleType > & b )
inlinestatic

Add two polynomials. Not RT-safe.

◆ derivative()

template<typename SampleType = float>
std::vector< SampleType > pulp::signal::Polynomial::derivative ( const std::vector< SampleType > & p)
inlinestatic

Derivative of a polynomial. Not RT-safe.

◆ eval()

template<typename SampleType = float>
SampleType pulp::signal::Polynomial::eval ( const std::vector< SampleType > & coeffs,
SampleType x )
inlinestatic

Evaluate polynomial using Horner's method.

coeffs[0] = constant, coeffs[n] = x^n coefficient.

◆ eval_complex()

template<typename SampleType = float>
std::complex< SampleType > pulp::signal::Polynomial::eval_complex ( const std::vector< SampleType > & coeffs,
std::complex< SampleType > z )
inlinestatic

Evaluate complex polynomial (for frequency response).

◆ multiply()

template<typename SampleType = float>
std::vector< SampleType > pulp::signal::Polynomial::multiply ( const std::vector< SampleType > & a,
const std::vector< SampleType > & b )
inlinestatic

Multiply two polynomials (convolution of coefficients). Not RT-safe.

◆ roots_quadratic()

template<typename SampleType = float>
std::pair< std::complex< SampleType >, std::complex< SampleType > > pulp::signal::Polynomial::roots_quadratic ( SampleType a,
SampleType b,
SampleType c )
inlinestatic

Roots of quadratic ax^2 + bx + c.

Returns complex roots (may be real with imag=0).

◆ scale()

template<typename SampleType = float>
std::vector< SampleType > pulp::signal::Polynomial::scale ( const std::vector< SampleType > & p,
SampleType s )
inlinestatic

Scale all coefficients by a constant. Not RT-safe.


The documentation for this struct was generated from the following file:
  • /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/poly_math.hpp