10 #ifndef TEUCHOS_POLYNOMIAL_HPP 
   11 #define TEUCHOS_POLYNOMIAL_HPP 
   13 #include "Teuchos_PolynomialDecl.hpp" 
   16 template <
typename CoeffT>
 
   18           const CoeffT& cloneCoeff,
 
   19           unsigned int reserve) :
 
   28   for (
unsigned int i=0; i<
sz; i++)
 
   32 template <
typename CoeffT>
 
   34           unsigned int reserve) :
 
   45 template <
typename CoeffT>
 
   50 template <
typename CoeffT>
 
   57     if (coeff[0] != Teuchos::null) {
 
   58       for (
unsigned int i=sz; i<d+1; i++)
 
   65 template <
typename CoeffT>
 
   72          "Polynomial<CoeffT>::getCoefficient(i): " <<
 
   73          "Error, coefficient i = " << i <<
 
   74          " is not in range, degree = " << d << 
"." );
 
   79 template <
typename CoeffT>
 
   86          "Polynomial<CoeffT>::getCoefficient(i): " <<
 
   87          "Error, coefficient i = " << i <<
 
   88          " is not in range, degree = " << d << 
"." );
 
   93 template <
typename CoeffT>
 
  100          "Polynomial<CoeffT>::setCoefficient(i,v): " <<
 
  101          "Error, coefficient i = " << i <<
 
  102          " is not in range, degree = " << d << 
"." );
 
  105          "Polynomial<CoeffT>::setCoefficient(i,v): " <<
 
  106          "Error, coefficient i = " << i << 
" is null!");
 
  111 template <
typename CoeffT>
 
  120          "Polynomial<CoeffT>::setCoefficientPtr(i,v): " <<
 
  121          "Error, coefficient i = " << i <<
 
  122          " is not in range, degree = " << d << 
"." );
 
  127 template <
typename CoeffT>
 
  131         CoeffT* x, CoeffT* xdot)
 const 
  133   bool evaluate_xdot = (xdot != NULL);
 
  136   for (
unsigned int i=0; i<=d; i++)
 
  139            "Polynomial<CoeffT>::evaluate(): " <<
 
  140            "Error, coefficient i = " << i << 
" is null!");
 
  158   for (
int k=d-1; k>=0; --k) {
 
  163     if (evaluate_xdot && k > 0)
 
  168 #endif  // TEUCHOS_VECTOR_POLYNOMIAL_HPP 
Teuchos::PolynomialTraits< coeff_type >::scalar_type scalar_type
Typename of scalars. 
static void assign(coeff_type *y, const scalar_type &alpha)
Assign a scalar to a coefficient. 
static void update(coeff_type *y, const coeff_type &x, const scalar_type &beta)
y = x + beta*y 
void setDegree(unsigned int deg)
Set degree of polynomial to deg. 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging. 
unsigned int sz
Size of polynomial (may be > d) 
Polynomial(unsigned int deg, const CoeffT &cloneCoeff, unsigned int reserve=0)
Create a polynomial of degree deg. 
This structure defines some basic traits for a scalar field type. 
void setCoefficient(unsigned int i, const CoeffT &v)
Set coefficient i to c. 
void setCoefficientPtr(unsigned int i, const Teuchos::RCP< CoeffT > &c_ptr)
Set pointer for coefficient i to c_ptr. DANGEROUS! 
Teuchos::RCP< CoeffT > getCoefficient(unsigned int i)
Return ref-count pointer to coefficient i. 
std::vector< Teuchos::RCP< CoeffT > > coeff
Vector of polynomial coefficients. 
Traits class for polynomial coefficients in Teuchos::Polynomial. 
Defines basic traits for the scalar field type. 
Smart reference counting pointer class for automatic garbage collection. 
void evaluate(typename Teuchos::Polynomial< CoeffT >::scalar_type &t, CoeffT *x, CoeffT *xdot=NULL) const 
Evaluate polynomial and possibly its derivative at time t. 
static void copy(const coeff_type &x, coeff_type *y)
Copy a coefficient. 
unsigned int d
Degree of polynomial.