21#ifndef DT_IOP_NOISE_GENERATOR_H
22#define DT_IOP_NOISE_GENERATOR_H
41 result = (result ^ (result >> 28)) * 0xcb24d0a5c88c35b3ul;
42 return (uint32_t)(result >> 32);
49 return (
x <<
k) | (
x >> (32 -
k));
58 const unsigned int result =
state[0] +
state[3];
59 const unsigned int t =
state[1] << 9;
69 return (
float)(result >> 8) * 0x1.0p-24f;
153 for(
size_t c = 0;
c < 3;
c++)
157 for(
size_t c = 0;
c < 3;
c++)
181 for(
size_t c = 0;
c < 3;
c++)
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
const dt_colormatrix_t dt_aligned_pixel_t out
static float4 dt_noise_generator_simd(const dt_noise_distribution_t distribution, const float4 mu, const float4 param, uint state[4])
static float4 uniform_noise_simd(const float4 mu, const float4 sigma, uint state[4])
static float4 poisson_noise_simd(const float4 mu, const float4 sigma, uint state[4])
static float4 gaussian_noise_simd(const float4 mu, const float4 sigma, uint state[4])
float *const restrict const size_t k
#define __OMP_DECLARE_SIMD__(...)
DT_ALIGNED_PIXEL float dt_aligned_pixel_t[4]
#define for_each_channel(_var,...)
const float uint32_t state[4]
const float const float param
const float const int flip
static uint32_t rol32(const uint32_t x, const int k)
static float xoshiro128plus(uint32_t state[4])
static uint32_t splitmix32(const uint64_t seed)
unsigned __int64 uint64_t