|
Go to the documentation of this file. 1 #ifndef NPSTAT_ORTHOPOLY1D_HH_
2 #define NPSTAT_ORTHOPOLY1D_HH_
25 class OrthoPoly1DSprodCalc;
52 const double * weight, unsigned weightLen,
62 inline unsigned length() const { return nw_;}
63 inline unsigned maxDegree() const { return maxdeg_;}
64 inline double step() const { return step_;}
77 double poly( unsigned deg, unsigned index) const;
89 double series( const double *coeffs, unsigned maxdeg,
90 unsigned index) const;
98 template < typename Numeric>
101 Numeric *result, unsigned lenResult) const;
111 template < typename Numeric>
113 Numeric *result, unsigned long lenResult) const;
116 template < typename Numeric>
118 Numeric *result, unsigned lenResult) const;
129 double *coeffs, unsigned maxdeg) const;
135 void densityCoeffs( const double *data, unsigned dataLen,
136 double *coeffs, unsigned maxdeg) const;
142 void densityCoeffsVariance( const double *data, unsigned dataLen,
143 double *coeffs, unsigned maxdeg,
144 double effectiveSampleSize) const;
173 long double *weight_;
179 long double unweightedProduct( const long double *x,
180 const long double *y) const;
181 long double scalarProduct( const long double *x,
182 const long double *y) const;
183 long double scalarProduct( const double *x,
184 const long double *y) const;
185 long double normScalarProduct( const double *x,
186 const long double *y) const;
187 long double normScalarProductSq( const double *x,
188 const long double *y,
189 long double ymean) const;
194 inline Matrix<double>* globalFilter_2( const double *coeffs, unsigned maxdeg) const
198 this-> globalFilter(coeffs, maxdeg-1U, m->data(), m->length());
203 inline void globalFilterDiag_2( const double *coeffs, unsigned maxdeg,
204 double *expansion, unsigned len) const
210 inline void calculateCoeffs_2( const double *data, unsigned dataLen,
211 double *expansion, unsigned len) const
217 inline void densityCoeffs_2( const double *data, unsigned dataLen,
218 double *expansion, unsigned len) const
221 this->densityCoeffs(data, dataLen, expansion, len-1U);
224 inline void densityCoeffsVariance_2( const double *data, unsigned dataLen,
225 double *expansion, unsigned len,
226 double effectiveSampleSize) const
229 this->densityCoeffsVariance(data, dataLen, expansion,
230 len-1U, effectiveSampleSize);
233 inline void allSeries( const double *coeffs, unsigned maxdeg,
234 double *expansion, unsigned len,
235 const bool makeNonNegative = false) const
237 if (len != nw_) throw std::invalid_argument(
238 "In npstat::OrthoPoly1D::allSeries: incompatible buffer size");
241 const unsigned dm1 = maxdeg-1U;
242 for ( unsigned i=0; i<nw_; ++i)
244 expansion[i] = this-> series(coeffs, dm1, i);
246 if (expansion[i] < 0.0)
251 inline double series_2( const double *coeffs, unsigned maxdeg,
252 unsigned index) const
255 return this-> series(coeffs, maxdeg-1U, index);
258 inline void weightExpansionCoeffs_2( double *coeffs, unsigned maxdeg) const
273 inline long double operator()( const long double* x, const long double* y,
274 const unsigned long len) const
276 assert(len == opoly.nw_);
277 return opoly.scalarProduct(x, y);
286 #include "npstat/nm/OrthoPoly1D.icc"
Matrix & tagAsDiagonal(bool b=true)
Definition: OrthoPoly1D.hh:29
double weightExpansionCovariance(unsigned deg1, unsigned deg2) const
void weightExpansionCoeffs(double *coeffs, unsigned maxdeg) const
double poly(unsigned deg, unsigned index) const
unsigned length() const Definition: OrthoPoly1D.hh:62
double polyTimesWeight(unsigned deg, unsigned index) const
OrthoPoly1D & operator=(const OrthoPoly1D &)
void globalFilterDiag(const double *coeffs, unsigned maxdeg, Numeric *result, unsigned lenResult) const
double weight(unsigned index) const
void globalFilter(const double *coeffs, unsigned maxdeg, Numeric *result, unsigned long lenResult) const
void linearFilter(const double *coeffs, unsigned maxdeg, unsigned index, Numeric *result, unsigned lenResult) const
double series(const double *coeffs, unsigned maxdeg, unsigned index) const
void calculateCoeffs(const double *data, unsigned dataLen, double *coeffs, unsigned maxdeg) const
double unweightedPolyProduct(unsigned deg1, unsigned deg2) const
double empiricalKroneckerDelta(unsigned deg1, unsigned deg2) const
bool operator==(const OrthoPoly1D &r) const
Definition: OrthoPoly1D.hh:268
Definition: AbsArrayProjector.hh:14
|