quant-pricer-cpp
Loading...
Searching...
No Matches
sobol.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <array>
5#include <cstddef>
6#include <cstdint>
7#include <vector>
8
9namespace quant::qmc {
10
12 public:
13 static constexpr std::size_t kMaxSupportedDimension = 64;
14 static constexpr std::size_t kMaxBits = 64;
15
16 SobolSequence(std::size_t dimension, bool scrambled = false, std::uint64_t seed = 0);
17
18 std::size_t dimension() const { return dimension_; }
19
20 void generate(std::uint64_t index, double* out) const;
21 std::vector<double> generate(std::uint64_t index) const;
22
23 private:
24 struct DirectionRow {
25 std::array<std::uint64_t, kMaxBits> values{};
26 };
27
28 std::size_t dimension_;
29 std::vector<DirectionRow> directions_;
30 std::vector<std::uint64_t> scramble_; // digital shift per dimension
31};
32
33} // namespace quant::qmc
Definition sobol.hpp:11
void generate(std::uint64_t index, double *out) const
Definition sobol.cpp:96
static constexpr std::size_t kMaxBits
Definition sobol.hpp:14
std::size_t dimension() const
Definition sobol.hpp:18
static constexpr std::size_t kMaxSupportedDimension
Definition sobol.hpp:13
bool scrambled
Definition mc.cpp:131
Brownian bridge mapping for quasi Monte Carlo Brownian paths.
Definition brownian_bridge.hpp:7