Oakfield API Documentation 1.0.0
Numerical core APIs
Loading...
Searching...
No Matches
sim_seed.h
Go to the documentation of this file.
1
5#ifndef OAKFIELD_SIM_SEED_H
6#define OAKFIELD_SIM_SEED_H
7
8#include <stdint.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
15#define SIM_SEED_DEFAULT 0xA5A5A5A5A5A5A5A5ULL
16
23uint64_t sim_seed_normalize(uint64_t seed);
24
31uint64_t sim_seed_mix64(uint64_t value);
32
39uint64_t sim_seed_tag(const char *tag);
40
49uint64_t sim_seed_derive(uint64_t base_seed, uint64_t tag_hash, uint64_t index);
50
60void sim_seed_stream(uint64_t base_seed, const char *tag, uint64_t index, uint64_t *out_state,
61 uint64_t *out_inc);
62
63#ifdef __cplusplus
64}
65#endif
66
67#endif /* OAKFIELD_SIM_SEED_H */
uint64_t sim_seed_derive(uint64_t base_seed, uint64_t tag_hash, uint64_t index)
Derive a deterministic seed from a base seed, tag hash, and index.
uint64_t sim_seed_normalize(uint64_t seed)
Normalize a seed (zero maps to SIM_SEED_DEFAULT).
uint64_t sim_seed_mix64(uint64_t value)
Mix a 64-bit value into a high-quality hash.
uint64_t sim_seed_tag(const char *tag)
Hash a domain tag into a 64-bit value.
void sim_seed_stream(uint64_t base_seed, const char *tag, uint64_t index, uint64_t *out_state, uint64_t *out_inc)
Derive a PCG32 stream (state + increment) from a base seed and domain tag.