1#include "centipede/data/entry.hpp"
2#include "centipede/writer/binary.hpp"
10constexpr auto N_ENTRIES = 4000;
11constexpr auto MAX_N_ENTRYPOINTS = 20;
12constexpr auto N_LOCALS = 3;
13constexpr auto N_GLOBALS = 4;
14constexpr auto MIN_VALUE = 1.F;
15constexpr auto MAX_VALUE = 10.F;
21 auto init_err = writer.
init();
23 if (not init_err.has_value())
25 std::println(stderr,
"Error: {}", init_err.error());
30 auto entry_point = NewEntryPoint{};
32 auto rnd_dev = std::random_device{};
33 auto rnd_engine = std::mt19937{ rnd_dev() };
34 auto rnd_float_dst = std::uniform_real_distribution<float>{ MIN_VALUE, MAX_VALUE };
35 auto rnd_int_dst = std::uniform_int_distribution<int>{ 1, MAX_N_ENTRYPOINTS };
36 auto generate_int_rnd = [&rnd_int_dst, &rnd_engine]() ->
int {
return rnd_int_dst(rnd_engine); };
37 auto generate_float_rnd = [&rnd_float_dst, &rnd_engine]() ->
float {
return rnd_float_dst(rnd_engine); };
38 auto randomize_locals = [&generate_float_rnd](NewEntryPoint::LocalDerivs& local_derivs) ->
void
39 { std::ranges::generate(local_derivs, generate_float_rnd); };
40 auto randomize_globals = [&generate_float_rnd,
41 &generate_int_rnd](NewEntryPoint::GlobalDerivs& global_derivs) ->
void
43 std::ranges::generate(global_derivs | std::views::values, generate_float_rnd);
44 std::ranges::generate(global_derivs | std::views::keys, generate_int_rnd);
47 for ([[maybe_unused]]
auto entry_idx : std::views::iota(0, N_ENTRIES))
49 auto n_entrypoints = generate_int_rnd();
50 for ([[maybe_unused]]
auto entrypoint_idx : std::views::iota(0, n_entrypoints))
52 randomize_locals(entry_point.local_derivs);
53 randomize_globals(entry_point.global_derivs);
54 entry_point.measurement = generate_float_rnd();
55 entry_point.sigma = generate_float_rnd();
56 auto err = writer.add_entrypoint(entry_point);
57 if (not err.has_value())
59 std::println(stderr,
"Error: {}", err.error());
63 [[maybe_unused]]
auto size = writer.write_current_entry();
Class for writing binary files.
auto init() -> EnumError<>
Initialization.
Structure of a entrypoint.