pRC
multi-purpose Tensor Train library for C++
Loading...
Searching...
No Matches
random.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_TENSOR_TRAIN_TENSOR_RANDOM_H
4#define pRC_TENSOR_TRAIN_TENSOR_RANDOM_H
5
8
9namespace pRC
10{
11 template<class T, class N, class Ranks, template<class...> class D>
12 struct Random<TensorTrain::Tensor<T, N, Ranks>, D<typename T::Value>,
13 If<IsDistribution<D<typename T::Value>>>>
14 {
15 public:
17 : mRNG(rng)
18 , mDistribution(distribution)
19 {
20 }
21
22 constexpr auto operator()()
23 {
25 mDistribution);
26 }
27
28 private:
29 RandomEngine &mRNG;
30 D<typename T::Value> &mDistribution;
31 };
32}
33#endif // pRC_TENSOR_TRAIN_TENSOR_RANDOM_H
Class storing tensors.
Definition tensor.hpp:44
Definition threefry.hpp:24
Definition cholesky.hpp:18
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
Random(RandomEngine &rng, D< typename T::Value > &distribution)
Definition random.hpp:16
Definition random.hpp:12