37 uint64_t result = (seed ^ (seed >> 33)) * 0x62a9d9ed799705f5ul;
38 result = (result ^ (result >> 28)) * 0xcb24d0a5c88c35b3ul;
39 return (uint32_t)(result >> 32);
44static inline uint32_t
rol32(const uint32_t
x, const
int k)
46 return (
x <<
k) | (
x >> (32 -
k));
55 const unsigned int result =
state[0] +
state[3];
56 const unsigned int t =
state[1] << 9;
66 return (
float)(result >> 8) * 0x1.0p-24f;
71static inline float uniform_noise(const float
mu, const float
sigma, uint32_t
state[4])
78static inline float gaussian_noise(const float
mu, const float
sigma, const int
flip, uint32_t
state[4])
88 sqrtf(-2.0f * logf(u1)) * sinf(2.f *
M_PI *
u2);
94static inline float poisson_noise(const float
mu, const float
sigma, const int
flip, uint32_t
state[4])
99 const float noise = (
flip) ? sqrtf(-2.0f * logf(u1)) * cosf(2.f *
M_PI *
u2) :
100 sqrtf(-2.0f * logf(u1)) * sinf(2.f *
M_PI *
u2);
150 for(
size_t c = 0;
c < 3;
c++)
154 for(
size_t c = 0;
c < 3;
c++)
162 sqrtf(-2.0f * logf(u1[c])) * sinf(2.f *
M_PI *
u2[c]);
178 for(
size_t c = 0;
c < 3;
c++)
189 sqrtf(-2.0f * logf(u1[c])) * sinf(2.f *
M_PI *
u2[c]);
const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:42
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
#define for_each_channel(_var,...)
Definition darktable.h:662
#define __OMP_DECLARE_SIMD__(...)
Definition darktable.h:263
dt_noise_distribution_t
Definition data/kernels/noise_generator.h:25
static float4 dt_noise_generator_simd(const dt_noise_distribution_t distribution, const float4 mu, const float4 param, uint state[4])
Definition data/kernels/noise_generator.h:132
static float4 uniform_noise_simd(const float4 mu, const float4 sigma, uint state[4])
Definition data/kernels/noise_generator.h:68
static float4 poisson_noise_simd(const float4 mu, const float4 sigma, uint state[4])
Definition data/kernels/noise_generator.h:104
static float4 gaussian_noise_simd(const float4 mu, const float4 sigma, uint state[4])
Definition data/kernels/noise_generator.h:75
static const float x
Definition iop_profile.h:235
const int t
Definition iop_profile.h:225
float *const restrict const size_t k
Definition luminance_mask.h:78
#define M_PI
Definition math.h:45
c
Definition derive_filmic_v6_gamut_mapping.py:35
float dt_aligned_pixel_t[4]
Definition noiseprofile.c:28
const float uint32_t state[4]
Definition src/develop/noise_generator.h:72
dt_noise_distribution_t
Definition src/develop/noise_generator.h:25
@ DT_NOISE_GAUSSIAN
Definition src/develop/noise_generator.h:27
@ DT_NOISE_POISSONIAN
Definition src/develop/noise_generator.h:28
@ DT_NOISE_UNIFORM
Definition src/develop/noise_generator.h:26
const float sigma
Definition src/develop/noise_generator.h:71
const float const float param
Definition src/develop/noise_generator.h:108
return noise *sigma mu
Definition src/develop/noise_generator.h:89
const float u2
Definition src/develop/noise_generator.h:86
const float r
Definition src/develop/noise_generator.h:101
const float const int flip
Definition src/develop/noise_generator.h:78
const float noise
Definition src/develop/noise_generator.h:87
static uint32_t rol32(const uint32_t x, const int k)
Definition src/develop/noise_generator.h:44
static float xoshiro128plus(uint32_t state[4])
Definition src/develop/noise_generator.h:51
static uint32_t splitmix32(const uint64_t seed)
Definition src/develop/noise_generator.h:33
unsigned __int64 uint64_t
Definition strptime.c:75