Alexandria
2.30.1
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
MathUtils
MathUtils
PDF
NdSampler.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012-2021 Euclid Science Ground Segment
3
*
4
* This library is free software; you can redistribute it and/or modify it under
5
* the terms of the GNU Lesser General Public License as published by the Free
6
* Software Foundation; either version 3.0 of the License, or (at your option)
7
* any later version.
8
*
9
* This library is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12
* details.
13
*
14
* You should have received a copy of the GNU Lesser General Public License
15
* along with this library; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#ifndef _FUNCTIONUTILS_NDSAMPLER_H
20
#define _FUNCTIONUTILS_NDSAMPLER_H
21
22
#include "
MathUtils/function/Function.h
"
23
#include "
NdArray/NdArray.h
"
24
#include <array>
25
#include <functional>
26
#include <vector>
27
28
namespace
Euclid
{
29
namespace
MathUtils {
30
47
template
<
typename
... TKnot>
48
class
NdSampler
{
49
public
:
59
NdSampler
(
std::tuple
<
std::vector<TKnot>
...> knots,
const
NdArray::NdArray<double>
& grid);
60
72
template
<
typename
Generator>
73
std::vector
<
std::tuple
<TKnot...>>
draw
(
std::size_t
ndraws, Generator& rng)
const
;
74
75
template
<
typename
Generator,
typename
... OKnots>
76
void
draw
(
std::size_t
ndraws, Generator& rng,
std::vector
<
std::tuple<OKnots...>
>& output)
const
;
77
};
78
79
}
// namespace MathUtils
80
}
// namespace Euclid
81
82
#define NDSAMPLER_IMPL
83
#include "
MathUtils/PDF/_impl/NdSampler.icpp
"
84
#undef NDSAMPLER_IMPL
85
86
#endif
// _FUNCTIONUTILS_NDSAMPLER_H
Function.h
NdArray.h
NdSampler.icpp
Euclid::MathUtils::NdSampler
Definition
NdSampler.h:48
Euclid::MathUtils::NdSampler::draw
std::vector< std::tuple< TKnot... > > draw(std::size_t ndraws, Generator &rng) const
Euclid::MathUtils::NdSampler::NdSampler
NdSampler(std::tuple< std::vector< TKnot >... > knots, const NdArray::NdArray< double > &grid)
Euclid::MathUtils::NdSampler::draw
void draw(std::size_t ndraws, Generator &rng, std::vector< std::tuple< OKnots... > > &output) const
Euclid::NdArray::NdArray
Definition
NdArray.h:46
Euclid
Definition
index_sequence.h:27
std::size_t
std::tuple
std::vector
Generated by
1.9.7