Eigen-unsupported  3.4.90 (git rev a4098ac676528a83cfb73d4d26ce1b42ec05f47c)
Polynomials module

Detailed Description

This module provides a QR based polynomial solver.

To use this module, add

#include <unsupported/Eigen/Polynomials>

at the start of your source file.

Classes

class  Eigen::PolynomialSolver< Scalar_, _Deg >
 A polynomial solver. More...
 
class  Eigen::PolynomialSolverBase< Scalar_, _Deg >
 Defined to be inherited by polynomial solvers: it provides convenient methods such as. More...
 

Functions

template<typename Polynomial >
NumTraits< typenamePolynomial::Scalar >::Real Eigen::cauchy_max_bound (const Polynomial &poly)
 
template<typename Polynomial >
NumTraits< typenamePolynomial::Scalar >::Real Eigen::cauchy_min_bound (const Polynomial &poly)
 
template<typename Polynomials , typename T >
Eigen::poly_eval (const Polynomials &poly, const T &x)
 
template<typename Polynomials , typename T >
Eigen::poly_eval_horner (const Polynomials &poly, const T &x)
 
template<typename RootVector , typename Polynomial >
void Eigen::roots_to_monicPolynomial (const RootVector &rv, Polynomial &poly)
 

Function Documentation

◆ cauchy_max_bound()

template<typename Polynomial >
NumTraits< typenamePolynomial::Scalar >::Real Eigen::cauchy_max_bound ( const Polynomial &  poly)
inline
Returns
a maximum bound for the absolute value of any root of the polynomial.
Parameters
[in]poly: the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
Precondition
the leading coefficient of the input polynomial poly must be non zero

◆ cauchy_min_bound()

template<typename Polynomial >
NumTraits< typenamePolynomial::Scalar >::Real Eigen::cauchy_min_bound ( const Polynomial &  poly)
inline
Returns
a minimum bound for the absolute value of any non zero root of the polynomial.
Parameters
[in]poly: the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).

◆ poly_eval()

template<typename Polynomials , typename T >
T Eigen::poly_eval ( const Polynomials &  poly,
const T &  x 
)
inline
Returns
the evaluation of the polynomial at x using stabilized Horner algorithm.
Parameters
[in]poly: the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
[in]x: the value to evaluate the polynomial at.

◆ poly_eval_horner()

template<typename Polynomials , typename T >
T Eigen::poly_eval_horner ( const Polynomials &  poly,
const T &  x 
)
inline
Returns
the evaluation of the polynomial at x using Horner algorithm.
Parameters
[in]poly: the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
[in]x: the value to evaluate the polynomial at.
Note
for stability: \( |x| \le 1 \)

◆ roots_to_monicPolynomial()

template<typename RootVector , typename Polynomial >
void Eigen::roots_to_monicPolynomial ( const RootVector &  rv,
Polynomial &  poly 
)

Given the roots of a polynomial compute the coefficients in the monomial basis of the monic polynomial with same roots and minimal degree. If RootVector is a vector of complexes, Polynomial should also be a vector of complexes.

Parameters
[in]rv: a vector containing the roots of a polynomial.
[out]poly: the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 3 + x^2 \) is stored as a vector \( [ 3, 0, 1 ] \).