|
Go to the documentation of this file. 1 #ifndef NPSTAT_ORTHOPOLYND_HH_
2 #define NPSTAT_ORTHOPOLYND_HH_
26 template < unsigned MaxDeg>
30 enum {deg_size = MaxDeg};
45 const double* steps = 0, unsigned nSteps = 0);
57 inline unsigned dim() const { return weight_. rank();}
63 inline unsigned nTerms() const { return poly_.size();}
66 inline unsigned degree( const unsigned termNumber) const
67 { return degs_.at(termNumber);}
70 inline double step( const unsigned nd) const { return steps_.at(nd);}
80 inline double poly( const unsigned termNumber, const unsigned* ix,
81 const unsigned lenIx) const
82 { return poly_.at(termNumber)->valueAt(ix, lenIx);}
96 double series( const double* coeffs, unsigned lenCoeffs,
97 const unsigned* ix, unsigned lenIx) const;
101 unsigned lenCoeffs) const;
110 const double* coeffs, unsigned lenCoeffs,
111 const unsigned* ix, unsigned lenIx) const;
121 const unsigned* shift, unsigned lenShift,
122 double *coeffs, unsigned lenCoeffs) const;
131 static inline unsigned classMaxDegree() { return MaxDeg;}
139 Monomial( unsigned mxdim, unsigned deg, unsigned long imono);
142 bool operator<( const Monomial& r) const;
144 bool operator!=( const Monomial& r) const;
145 double operator()( const double *x, unsigned xlen) const;
150 unsigned dims[MaxDeg];
157 GridMonomial( const Monomial& m, const double* steps,
158 double* xwork, unsigned nSteps);
159 double operator()( const unsigned* ind, const unsigned len) const;
162 const Monomial& mono_;
163 const double* steps_;
165 const unsigned nSteps_;
168 ArrayND<double> weight_;
169 std::vector<ArrayND<double>*> poly_;
170 std::vector<double> steps_;
171 std::vector<unsigned> degs_;
175 void generateMonomialSet( unsigned mxDeg, std::vector<Monomial>*) const;
176 double scalarProduct( const ArrayND<double>&,
177 const ArrayND<double>&) const;
180 template < unsigned StackLen, unsigned StackDim>
181 long double windowProductLoop(
183 const ArrayND<double,StackLen,StackDim>& data,
184 const ArrayND<double>& poly,
185 const unsigned* polyShift,
186 unsigned long idxData, unsigned long idxPoly) const;
190 #include "npstat/nm/OrthoPolyND.icc"
Arbitrary-dimensional array template.
unsigned rank() const Definition: ArrayND.hh:329
Definition: OrthoPolyND.hh:28
unsigned maxDegree() const Definition: OrthoPolyND.hh:60
double poly(const unsigned termNumber, const unsigned *ix, const unsigned lenIx) const Definition: OrthoPolyND.hh:80
double empiricalKroneckerDelta(unsigned term1, unsigned term2) const
const ArrayND< double > & weight() const Definition: OrthoPolyND.hh:73
ArrayND< double > * linearFilter(const double *coeffs, unsigned lenCoeffs, const unsigned *ix, unsigned lenIx) const
double step(const unsigned nd) const Definition: OrthoPolyND.hh:70
unsigned dim() const Definition: OrthoPolyND.hh:57
ArrayND< double > arraySeries(const double *coeffs, unsigned lenCoeffs) const
unsigned nTerms() const Definition: OrthoPolyND.hh:63
double series(const double *coeffs, unsigned lenCoeffs, const unsigned *ix, unsigned lenIx) const
OrthoPolyND(unsigned polyDegree, const ArrayND< double > &weight, const double *steps=0, unsigned nSteps=0)
void calculateCoeffs(const ArrayND< double > &gridData, const unsigned *shift, unsigned lenShift, double *coeffs, unsigned lenCoeffs) const
OrthoPolyND & operator=(const OrthoPolyND &)
OrthoPolyND(const OrthoPolyND &)
bool operator==(const OrthoPolyND &r) const
unsigned degree(const unsigned termNumber) const Definition: OrthoPolyND.hh:66
Definition: AbsArrayProjector.hh:14
|