[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]

details PolynomialView Class Template Reference VIGRA

#include "vigra/polynomial.hxx"

Inheritance diagram for PolynomialView:

Polynomial StaticPolynomial

Public Types

typedef T value_type
typedef NumericTraits< T
>::RealPromote 
RealPromote
typedef NumericTraits< RealPromote
>::ValueType 
Real
typedef NumericTraits< RealPromote
>::ComplexPromote 
Complex
typedef T * iterator
typedef T const * const_iterator

Public Methods

 PolynomialView (T *coeffs, unsigned int order, double epsilon=1.0e-14)
T & operator[] (unsigned int i)
 Access the coefficient of x^i.

T const & operator[] (unsigned int i) const
 Access the coefficient of x^i.

template<class V> PromoteTraits< T, V >::Promote operator() (V v) const
void differentiate (unsigned int n=1)
void deflate (T const &r, unsigned int multiplicity=1)
void forwardDeflate (T const &v)
void forwardBackwardDeflate (T v)
void backwardDeflate (T v)
void deflateConjugatePair (Complex const &v)
void minimizeOrder (double epsilon=0.0)
void normalize ()
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
unsigned int size () const
unsigned int order () const
double epsilon () const
void setEpsilon (double eps)


Detailed Description


template<class T>
class vigra::PolynomialView< T >

Polynomial interface for an externally managed array.

The coefficient type T can be either a scalar or complex (compatible to std::complex) type.

See also:
vigra::Polynomial, vigra::StaticPolynomial, polynomialRoots()
#include "vigra/polynomial.hxx"
Namespace: vigra


Member Typedef Documentation


typedef NumericTraits<RealPromote>::ComplexPromote Complex

 

Complex type associated with RealPromote

Reimplemented in Polynomial, and StaticPolynomial.


typedef T const* const_iterator

 

Const iterator for the coefficient sequence

Reimplemented in Polynomial, and StaticPolynomial.


typedef T* iterator

 

Iterator for the coefficient sequence

Reimplemented in Polynomial, and StaticPolynomial.


typedef NumericTraits<RealPromote>::ValueType Real

 

Scalar type associated with RealPromote

Reimplemented in Polynomial, and StaticPolynomial.


typedef NumericTraits<T>::RealPromote RealPromote

 

Promote type of value_type used for polynomial calculations


typedef T value_type

 

Coefficient type of the polynomial

Reimplemented in Polynomial, and StaticPolynomial.


Constructor & Destructor Documentation


PolynomialView T *    coeffs,
unsigned int    order,
double    epsilon = 1.0e-14
[inline]

 

Construct from a coefficient array of given order.

The externally managed array must have length order+1 and is interpreted as representing the polynomial:

            coeffs[0] + x * coeffs[1] + x * x * coeffs[2] + ...

The coefficients are not copied, we only store a pointer to the array.epsilon (default: 1.0e-14) determines the precision of subsequent algorithms (especially root finding) performed on the polynomial.


Member Function Documentation


void backwardDeflate   v

 

Backward-deflate the polynomial at the root r.

The behavior of this function is undefined if r is not a root. Backward deflation is best if r is the snallest root (by magnitude).


const_iterator begin   const [inline]

 

Get const_iterator for the coefficient sequence.


iterator begin   [inline]

 

Get iterator for the coefficient sequence.


void deflate T const &    r,
unsigned int    multiplicity = 1

 

Deflate the polynomial at the root r with the given multiplicity.

The behavior of this function is undefined if r is not a root with at least the given multiplicity. This function calls forwardBackwardDeflate().


void deflateConjugatePair Complex const &    v

 

Deflate the polynomial with the complex conjugate roots r and conj(r).

The behavior of this function is undefined if these are not roots.


void differentiate unsigned int    n = 1

 

Differentiate the polynomial n times.


const_iterator end   const [inline]

 

Get end const_iterator for the coefficient sequence.


iterator end   [inline]

 

Get end iterator for the coefficient sequence.


double epsilon   const [inline]

 

Get requested precision for polynomial algorithms (especially root finding).


void forwardBackwardDeflate   v

 

Forward/backward eflate the polynomial at the root r.

The behavior of this function is undefined if r is not a root. Combined forward/backward deflation is best if r is an ontermediate root or we don't know r's relation to the other roots of the polynomial.


void forwardDeflate T const &    v

 

Forward-deflate the polynomial at the root r.

The behavior of this function is undefined if r is not a root. Forward deflation is best if r is the biggest root (by magnitude).


void minimizeOrder double    epsilon = 0.0

 

Adjust the polynomial's order if the highest coefficients are near zero. The order is reduced as long as the absolute value does not exceed the given epsilon.


void normalize  

 

Normalize the polynomial, i.e. dived by the highest coefficient.


PromoteTraits< T, U >::Promote operator()   v const

 

Evaluate the polynomial at the point v

Multiplication must be defined between the types V and PromoteTraits<T, V>Promote. If both V and V are scalar, the result will be a scalar, otherwise it will be complex.


unsigned int order   const [inline]

 

Get order of the polynomial.


void setEpsilon double    eps [inline]

 

Set requested precision for polynomial algorithms (especially root finding).


unsigned int size   const [inline]

 

Get length of the coefficient sequence (order() + 1).


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

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany

html generated using doxygen and Python
VIGRA 1.5.0 (7 Dec 2006)