GCC Code Coverage Report


Directory: ./
File: include/rng.hpp
Date: 2024-04-18 12:22:13
Exec Total Coverage
Lines: 10 10 100.0%
Functions: 5 5 100.0%
Branches: 1 2 50.0%

Line Branch Exec Source
1 #pragma once
2
3 #include <pcg_random.hpp>
4 #include <random>
5
6 #include "types.hpp"
7
8 class RNG {
9 public:
10 pcg64 engine;
11 std::uniform_real_distribution<Real> uniformReal;
12 std::uniform_int_distribution<int> uniformInt;
13 std::normal_distribution<Real> normalReal;
14
15
1/2
✓ Branch 2 taken 60 times.
✗ Branch 3 not taken.
120 RNG() : engine(pcg_extras::seed_seq_from<std::random_device>()) {}
16
17 271 Real realUniform() { return uniformReal(engine); }
18
19 86 int intUniform(const int a, const int b) {
20 86 return uniformInt(engine, typename decltype(uniformInt)::param_type(a, b));
21 }
22
23 24 Vec vecUniform(const Vec &L) {
24 96 return Vec::NullaryExpr([&]() { return uniformReal(engine); }).array() * L.array();
25 }
26
27 7975 Vec vecNormal() {
28 31900 return Vec::NullaryExpr([&]() { return normalReal(engine); });
29 }
30
31 84 Vec vecNormal(const Real stddev) { return vecNormal() * sqrt(stddev); }
32
33 3954 Vec vecNormal(const Vec &mean, const Real stddev) { return vecNormal() * sqrt(stddev) + mean; }
34 };
35