1 #ifndef NPSTAT_GRIDRANDOMIZER_HH_
2 #define NPSTAT_GRIDRANDOMIZER_HH_
33 template <
class Array>
36 const unsigned interpolationDegree)
37 : grid_(
gridData), boundary_(gridBoundary),
38 iDeg_(interpolationDegree), dim_(
gridData.rank()) {initialize();}
45 bool operator==(
const GridRandomizer& r)
const;
46 inline bool operator!=(
const GridRandomizer& r)
const
47 {
return !(*
this == r);}
52 inline const BoxND<double>& gridBoundary()
const {
return boundary_;}
53 inline unsigned interpolationDegree()
const {
return iDeg_;}
54 inline unsigned dim()
const {
return dim_;}
58 double density(
const double* x,
unsigned xLen)
const;
70 void generate(
const double* uniformRandomInput,
unsigned bufLen,
71 double* resultBuf)
const;
79 void generateFlat(
const double* randNum,
unsigned bufLen,
80 double* result)
const;
81 void generateInterpolated(
const double* randNum,
unsigned bufLen,
82 double* result)
const;
88 std::vector<ArrayND<double>*> cdfs_;
89 std::vector<ArrayND<double>*> norms_;
90 std::vector<double> binwidth_;
93 mutable std::vector<unsigned> genBins_;
94 mutable std::vector<double> work_;
95 mutable std::vector<double> memoizeIn_;
96 mutable std::vector<double> memoizeOut_;
Arbitrary-dimensional array template.
Template to represent rectangles, boxes, and hyperboxes.
Definition: GridRandomizer.hh:24
double density(const double *x, unsigned xLen) const
void generate(const double *uniformRandomInput, unsigned bufLen, double *resultBuf) const
const ArrayND< double > & gridData() const
Definition: GridRandomizer.hh:51
GridRandomizer(const Array &gridData, const BoxND< double > &gridBoundary, const unsigned interpolationDegree)
Definition: GridRandomizer.hh:34
Definition: AbsArrayProjector.hh:14