Loading [MathJax]/extensions/MathMenu.js
DGtal 2.0.0
DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX > Class Template Reference

#include <DGtal/math/MPolynomial.h>

Inheritance diagram for DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >:
[legend]

Public Types

typedef TRing Ring
typedef TAlloc Alloc
typedef TX X
typedef MPolynomial< n, Ring, AllocMPolyN
typedef MPolynomial< n - 1, X, typename std::allocator_traits< Alloc >::template rebind_alloc< X > > MPolyNM1

Public Member Functions

 operator MPolyNM1 () const
template<typename XX>
MPolynomialEvaluatorImpl< n - 1, Ring, MPolynomialEvaluator< n, Ring, Alloc, X >, Alloc, XX > operator() (const XX &x) const

Private Member Functions

 MPolynomialEvaluator (const MPolyN &poly, const X &evalpoint)
template<typename XX, typename Fun>
void evaluate (XX &res, const Fun &evalfun) const

Private Attributes

const MPolyNmyPoly
 The polynomial in question.
const XmyEvalPoint
 the evaluation point

Friends

class MPolynomial< n, TRing, TAlloc >
template<int nn, class TT, class HLHL, class AA, class SS>
class MPolynomialEvaluatorImpl

Detailed Description

template<int n, typename TRing, typename TAlloc, typename TX>
class DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >

The top level polynomial evaluation class, in case n > 1, i.e. in case the coefficients are polynomials by themselves.

This class is a backport from Spielwiese.

Definition at line 412 of file MPolynomial.h.

Member Typedef Documentation

◆ Alloc

template<int n, typename TRing, typename TAlloc, typename TX>
typedef TAlloc DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::Alloc

Definition at line 421 of file MPolynomial.h.

◆ MPolyN

template<int n, typename TRing, typename TAlloc, typename TX>
typedef MPolynomial< n, Ring, Alloc > DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::MPolyN

Definition at line 423 of file MPolynomial.h.

◆ MPolyNM1

template<int n, typename TRing, typename TAlloc, typename TX>
typedef MPolynomial< n - 1, X, typename std::allocator_traits<Alloc>::template rebind_alloc<X> > DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::MPolyNM1

Definition at line 425 of file MPolynomial.h.

◆ Ring

template<int n, typename TRing, typename TAlloc, typename TX>
typedef TRing DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::Ring

Definition at line 420 of file MPolynomial.h.

◆ X

template<int n, typename TRing, typename TAlloc, typename TX>
typedef TX DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::X

Definition at line 422 of file MPolynomial.h.

Constructor & Destructor Documentation

◆ MPolynomialEvaluator()

template<int n, typename TRing, typename TAlloc, typename TX>
DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::MPolynomialEvaluator ( const MPolyN & poly,
const X & evalpoint )
inlineprivate

Definition at line 431 of file MPolynomial.h.

433 {}
const X & myEvalPoint
the evaluation point
const MPolyN & myPoly
The polynomial in question.

References myEvalPoint, and myPoly.

Referenced by operator()().

Member Function Documentation

◆ evaluate()

template<int n, typename TRing, typename TAlloc, typename TX>
template<typename XX, typename Fun>
void DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::evaluate ( XX & res,
const Fun & evalfun ) const
inlineprivate

Will be called by "child". Evaluates the polynomial into an element of XX (which must not necessarily be X, it can also be MPolynomial<k, X> for some k < n - 1) using the given functor to evaluate the coefficients, which are of type MPolynomial<n-1, Ring>.

Definition at line 443 of file MPolynomial.h.

444 {
445 X xx = (X) 1;
446 for ( int i = 0; i < (int) myPoly.myValue.size(); ++i )
447 {
448 res += evalfun( myPoly.myValue[i] ) * xx;
449 xx = xx * myEvalPoint;
450 }
451 }

References myEvalPoint, and myPoly.

◆ operator MPolyNM1()

template<int n, typename TRing, typename TAlloc, typename TX>
DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::operator MPolyNM1 ( ) const
inline

Evaluate to polynomial of type MPolynomial< n-1, X>.

Definition at line 458 of file MPolynomial.h.

459 {
460 MPolyNM1 res( myPoly.getAllocator() );
461 X xx = (X) 1;
462 for ( int i = 0; i < (int) myPoly.myValue.size(); ++i )
463 {
464 res += MPolyNM1( myPoly.myValue[i] ) * xx;
465 xx = xx * myEvalPoint;
466 }
467 return res;
468 }
MPolynomial< n - 1, X, typename std::allocator_traits< Alloc >::template rebind_alloc< X > > MPolyNM1

References myEvalPoint, and myPoly.

◆ operator()()

template<int n, typename TRing, typename TAlloc, typename TX>
template<typename XX>
MPolynomialEvaluatorImpl< n - 1, Ring, MPolynomialEvaluator< n, Ring, Alloc, X >, Alloc, XX > DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::operator() ( const XX & x) const
inline

Continue evaluation to lower level.

Definition at line 477 of file MPolynomial.h.

478 {
481 ( *this, x );
482 }
friend class MPolynomialEvaluatorImpl
MPolynomialEvaluator(const MPolyN &poly, const X &evalpoint)

References MPolynomialEvaluator(), and MPolynomialEvaluatorImpl.

◆ MPolynomial< n, TRing, TAlloc >

template<int n, typename TRing, typename TAlloc, typename TX>
friend class MPolynomial< n, TRing, TAlloc >
friend

Definition at line 396 of file MPolynomial.h.

◆ MPolynomialEvaluatorImpl

template<int n, typename TRing, typename TAlloc, typename TX>
template<int nn, class TT, class HLHL, class AA, class SS>
friend class MPolynomialEvaluatorImpl
friend

Definition at line 417 of file MPolynomial.h.

References MPolynomialEvaluatorImpl.

Referenced by MPolynomialEvaluatorImpl, and operator()().

Field Documentation

◆ myEvalPoint

template<int n, typename TRing, typename TAlloc, typename TX>
const X& DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myEvalPoint
private

the evaluation point

Definition at line 428 of file MPolynomial.h.

Referenced by evaluate(), MPolynomialEvaluator(), and operator MPolyNM1().

◆ myPoly

template<int n, typename TRing, typename TAlloc, typename TX>
const MPolyN& DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myPoly
private

The polynomial in question.

Definition at line 427 of file MPolynomial.h.

Referenced by evaluate(), MPolynomialEvaluator(), and operator MPolyNM1().


The documentation for this class was generated from the following file: