Oakfield API Documentation 1.0.0
Numerical core APIs
Loading...
Searching...
No Matches
sim_noise_source.h
Go to the documentation of this file.
1
10#ifndef OAKFIELD_SIM_NOISE_SOURCE_H
11#define OAKFIELD_SIM_NOISE_SOURCE_H
12
13#include "field.h"
14
15#include <stdbool.h>
16#include <stddef.h>
17#include <stdint.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
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
26
34typedef struct SimNoiseSourceRng {
35 uint64_t state;
36 uint64_t inc;
38 double normal_spare;
40
48void sim_noise_source_seed(SimNoiseSourceRng *rng, uint64_t initstate, uint64_t initseq);
49
57
68void sim_noise_source_normal_pair(SimNoiseSourceRng *rng, double *n0, double *n1);
69
77
89double sim_noise_source_gaussian_gain(double sigma, double dt, bool scale_by_dt);
90
105 size_t *capacity, size_t count, bool is_complex);
106
119void sim_noise_source_apply_white_real(double *dst, size_t count, double mean, double gain,
120 SimNoiseSourceRng *rng);
121
136void sim_noise_source_apply_white_complex(SimComplexDouble *dst, size_t count, double mean_re,
137 double mean_im, double gain_re, double gain_im,
138 SimNoiseSourceRng *rng);
139
154void sim_noise_source_temporal_params(double sigma, double tau, double alpha, double dt,
155 double *out_decay, double *out_variance);
156
168void sim_noise_source_apply_temporal_real(double *dst, double *noise_state, size_t count,
169 double output_scale, double decay, double variance,
170 SimNoiseSourceRng *rng);
171
186 size_t count, double output_scale, double decay,
187 double variance, SimNoiseSourceRng *rng);
188
202void sim_noise_source_apply_mean_reverting_real(double *dst, size_t count, double mean,
203 double decay, double variance,
204 SimNoiseSourceRng *rng);
205
220 double decay, double variance,
221 SimNoiseSourceRng *rng);
222
223#ifdef __cplusplus
224}
225#endif
226
227#endif /* OAKFIELD_SIM_NOISE_SOURCE_H */
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