39 int seed = (int)clock();
50 void fill(
double* in,
size_t len,
double mean,
double var){
51 drandgaussian(len, mean, var,
state, in, &
info);
55 return mean + (*
cur_val++)*sdev;
59 return mean +
vals[0]*sdev;
68 template<
class T,
class Lambda>
69 inline void gaussian_noise(T* inval,
size_t len,
double mean,
double sdev, Lambda&& fnc){
76 rng.
fill((
double*)inval, len, 0, sdev*sdev);
77 for(
size_t i = 0; i < len; i++){
78 std::forward<Lambda>(fnc)(inval[i]);
82 for(
size_t i = 0; i < len; i++){
84 [sdev, rng_ptr](real_type& val,
size_t){
85 val = real_type(rng_ptr->get_gauss_double(0, sdev));
87 std::forward<Lambda>(fnc));