DGtal 2.0.0
Loading...
Searching...
No Matches
DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX > Class Template Reference

#include <DGtal/math/MPolynomial.h>

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.

432 : myPoly( poly ), myEvalPoint( evalpoint )
433 {}
const X & myEvalPoint
the evaluation point
const MPolyN & myPoly
The polynomial in question.

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 }
Size size() const

References DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myEvalPoint, DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myPoly, DGtal::MPolynomial< n, TRing, TAlloc >::myValue, and DGtal::IVector< T, TAlloc, usePointers >::size().

◆ 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 {
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
Alloc getAllocator() const

References DGtal::MPolynomial< n, TRing, TAlloc >::getAllocator(), DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myEvalPoint, DGtal::MPolynomialEvaluator< n, TRing, TAlloc, TX >::myPoly, DGtal::MPolynomial< n, TRing, TAlloc >::myValue, and DGtal::IVector< T, TAlloc, usePointers >::size().

◆ 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 {
480 < n - 1, Ring, MPolynomialEvaluator< n, Ring, Alloc, X >, Alloc, XX >
481 ( *this, x );
482 }
friend class MPolynomialEvaluatorImpl

Friends And Related Symbol Documentation

◆ 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.

Field Documentation

◆ myEvalPoint

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

◆ myPoly

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

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