10#ifndef OAKFIELD_SIM_NOISE_SOURCE_H
11#define OAKFIELD_SIM_NOISE_SOURCE_H
23#define SIM_NOISE_SOURCE_STREAM_STIMULUS_WHITE 0x85EBCA77C2B2AE63ULL
24#define SIM_NOISE_SOURCE_STREAM_STOCHASTIC 0x000000000BAD5EEDULL
25#define SIM_NOISE_SOURCE_STREAM_ORNSTEIN 0xD8D12A6C9B4E41B7ULL
105 size_t *capacity,
size_t count,
bool is_complex);
137 double mean_im,
double gain_re,
double gain_im,
155 double *out_decay,
double *out_variance);
169 double output_scale,
double decay,
double variance,
186 size_t count,
double output_scale,
double decay,
203 double decay,
double variance,
220 double decay,
double variance,
Multidimensional contiguous field abstraction with configurable layout.
SimResult
Return codes shared by libsimcore modules.
Definition field.h:29
void sim_noise_source_apply_mean_reverting_complex(SimComplexDouble *dst, size_t count, double mean, double decay, double variance, SimNoiseSourceRng *rng)
Apply a complex mean-reverting update in place.
void sim_noise_source_apply_mean_reverting_real(double *dst, size_t count, double mean, double decay, double variance, SimNoiseSourceRng *rng)
Apply a real mean-reverting update in place.
double sim_noise_source_normal(SimNoiseSourceRng *rng)
Draw one standard-normal variate.
double sim_noise_source_gaussian_gain(double sigma, double dt, bool scale_by_dt)
Compute the finite gain used by Gaussian white-noise updates.
void sim_noise_source_apply_temporal_complex(SimComplexDouble *dst, SimComplexDouble *noise_state, size_t count, double output_scale, double decay, double variance, SimNoiseSourceRng *rng)
Advance complex temporal-noise state and add it to a destination array.
void sim_noise_source_apply_temporal_real(double *dst, double *noise_state, size_t count, double output_scale, double decay, double variance, SimNoiseSourceRng *rng)
Advance real temporal-noise state and add it to a destination array.
SimResult sim_noise_source_ensure_capacity(double **real_state, SimComplexDouble **complex_state, size_t *capacity, size_t count, bool is_complex)
Ensure reusable temporal-noise state storage has at least count entries.
void sim_noise_source_temporal_params(double sigma, double tau, double alpha, double dt, double *out_decay, double *out_variance)
Derive decay and innovation scale for temporal correlated noise.
void sim_noise_source_normal_pair(SimNoiseSourceRng *rng, double *n0, double *n1)
Draw a pair of independent standard-normal variates.
double sim_noise_source_uniform(SimNoiseSourceRng *rng)
Draw a uniform variate in [0, 1).
void sim_noise_source_apply_white_complex(SimComplexDouble *dst, size_t count, double mean_re, double mean_im, double gain_re, double gain_im, SimNoiseSourceRng *rng)
Add complex white Gaussian noise to an array in place.
void sim_noise_source_seed(SimNoiseSourceRng *rng, uint64_t initstate, uint64_t initseq)
Seed a deterministic RNG stream.
void sim_noise_source_apply_white_real(double *dst, size_t count, double mean, double gain, SimNoiseSourceRng *rng)
Add real-valued white Gaussian noise to an array in place.
Explicit in-memory representation for a complex double scalar (re, im)
Definition field.h:175
Mutable deterministic RNG state with cached normal sample.
Definition sim_noise_source.h:34
bool normal_has_spare
Definition sim_noise_source.h:37
double normal_spare
Definition sim_noise_source.h:38
uint64_t state
Definition sim_noise_source.h:35
uint64_t inc
Definition sim_noise_source.h:36