Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Data Structures | Namespaces | Functions | Variables
MathPoly_Laguerre.hxx File Reference
#include <MathUtils_Types.hxx>
#include <MathUtils_Core.hxx>
#include <MathPoly_Quartic.hxx>
#include <array>
#include <cmath>
#include <complex>
#include <algorithm>

Data Structures

struct  MathPoly::GeneralPolyResult
 Result for general polynomial solver. More...
 

Namespaces

namespace  MathPoly
 Polynomial root finding algorithms.
 
namespace  MathPoly::detail
 

Functions

void MathPoly::detail::EvaluatePolynomialWithDerivatives (const double *theCoeffs, int theDegree, std::complex< double > theX, std::complex< double > &theP, std::complex< double > &theDP, std::complex< double > &theD2P)
 Evaluate polynomial and its first two derivatives at x (complex version). Polynomial: c[n]*x^n + c[n-1]*x^(n-1) + ... + c[1]*x + c[0].
 
std::complex< doubleMathPoly::detail::LaguerreIteration (const double *theCoeffs, int theDegree, std::complex< double > theX0, double theTol, int theMaxIter)
 Laguerre iteration to find one root of polynomial.
 
void MathPoly::detail::DeflateReal (double *theCoeffs, int &theDegree, double theRoot)
 Deflate polynomial by removing a real root. Divides p(x) by (x - root) to get q(x).
 
void MathPoly::detail::DeflateComplex (double *theCoeffs, int &theDegree, std::complex< double > theRoot)
 Deflate polynomial by removing a complex conjugate pair. Divides p(x) by (x^2 + b*x + c) where b = -2*Re(root), c = |root|^2.
 
double MathPoly::detail::RefineRealRoot (const double *theOrigCoeffs, int theOrigDegree, double theRoot)
 Refine a real root using Newton-Raphson.
 
GeneralPolyResult MathPoly::Laguerre (const double *theCoeffs, int theDegree, double theTol=1.0e-12)
 Solve polynomial equation using Laguerre's method with deflation. Works for any degree up to THE_MAX_POLY_DEGREE.
 
GeneralPolyResult MathPoly::LaguerreN (const double *theCoeffs, size_t theSize, double theTol=1.0e-12)
 Convenience function: solve polynomial given as array with specified size.
 
MathUtils::PolyResult MathPoly::Sextic (double theA, double theB, double theC, double theD, double theE, double theF, double theG)
 Solve sextic (degree 6) polynomial: a*x^6 + b*x^5 + c*x^4 + d*x^3 + e*x^2 + f*x + g = 0.
 
MathUtils::PolyResult MathPoly::Quintic (double theA, double theB, double theC, double theD, double theE, double theF)
 Solve quintic (degree 5) polynomial: a*x^5 + b*x^4 + c*x^3 + d*x^2 + e*x + f = 0.
 
GeneralPolyResult MathPoly::Octic (const double theCoeffs[9])
 Solve octic (degree 8) polynomial using Laguerre's method. Useful for Circle-Ellipse extrema after Weierstrass substitution.
 

Variables

constexpr int MathPoly::THE_MAX_POLY_DEGREE = 20
 Maximum polynomial degree supported by Laguerre solver.