Teuchos - Trilinos Tools Package  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Teuchos_PolynomialDecl.hpp
1 // @HEADER
2 // *****************************************************************************
3 // Teuchos: Common Tools Package
4 //
5 // Copyright 2004 NTESS and the Teuchos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef TEUCHOS_POLYNOMIAL_DECL_HPP
11 #define TEUCHOS_POLYNOMIAL_DECL_HPP
12 
13 #include "Teuchos_Describable.hpp"
14 #include "Teuchos_RCP.hpp"
15 #include "Teuchos_PolynomialTraits.hpp"
16 
17 namespace Teuchos {
18 
20 
36  template <typename CoeffT>
37  class Polynomial : virtual public Teuchos::Describable {
38  public:
39 
41  typedef CoeffT coeff_type;
42 
45 
47 
53  Polynomial(unsigned int deg, const CoeffT& cloneCoeff,
54  unsigned int reserve = 0);
55 
57 
64  Polynomial(unsigned int deg, unsigned int reserve = 0);
65 
67  ~Polynomial();
68 
70  unsigned int degree() const { return d; }
71 
73  void setDegree(unsigned int deg);
74 
77  getCoefficient(unsigned int i);
78 
81  getCoefficient(unsigned int i) const;
82 
84  void setCoefficient(unsigned int i, const CoeffT& v);
85 
87 
93  void setCoefficientPtr(unsigned int i,
94  const Teuchos::RCP<CoeffT>& c_ptr);
95 
97 
106  CoeffT* x, CoeffT* xdot = NULL) const;
107 
108  private:
109 
111  Polynomial(const Polynomial&);
112 
114  Polynomial& operator=(const Polynomial&);
115 
116  protected:
117 
119  unsigned int d;
120 
122  unsigned int sz;
123 
125 
128  std::vector< Teuchos::RCP<CoeffT> > coeff;
129 
130  }; // class Polynomial
131 
132 } // end namespace Teuchos
133 
134 #endif // TEUCHOS_POLYNOMIAL_DECL_HPP
Teuchos::PolynomialTraits< coeff_type >::scalar_type scalar_type
Typename of scalars.
void setDegree(unsigned int deg)
Set degree of polynomial to deg.
unsigned int sz
Size of polynomial (may be &gt; d)
Polynomial(unsigned int deg, const CoeffT &cloneCoeff, unsigned int reserve=0)
Create a polynomial of degree deg.
CoeffT coeff_type
Typename of coefficients.
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!
Scalar scalar_type
Typename of scalars.
Lightweight container class to represent a simple polynomial.
Teuchos::RCP< CoeffT > getCoefficient(unsigned int i)
Return ref-count pointer to coefficient i.
std::vector< Teuchos::RCP< CoeffT > > coeff
Vector of polynomial coefficients.
Base class for all objects that can describe themselves.
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.
unsigned int degree() const
Return degree of polynomial.
unsigned int d
Degree of polynomial.
Reference-counted pointer class and non-member templated function implementations.