26#define TEA_STATE_SIZE (MAX(DT_CACHELINE_BYTES, 2*sizeof(unsigned int)))
36static inline unsigned int*
get_tea_state(
unsigned int*
const states,
int threadnum)
53 const unsigned int key[] = { 0xa341316c, 0xc8013ea4, 0xad90777d, 0x7e95761e };
54 unsigned int v0 = arg[0], v1 = arg[1];
56 unsigned int delta = 0x9e3779b9;
60 v0 += ((v1 << 4) +
key[0]) ^ (v1 + sum) ^ ((v1 >> 5) +
key[1]);
61 v1 += ((v0 << 4) +
key[2]) ^ (v0 + sum) ^ ((v0 >> 5) +
key[3]);
67static inline float tpdf(
unsigned int urandom)
69 float frandom = (float)urandom / (
float)0xFFFFFFFFu;
71 return (frandom < 0.5f ? (sqrtf(2.0f * frandom) - 1.0f) : (1.0f - sqrtf(2.0f * (1.0f - frandom))));
#define dt_free_align(A)
Definition darktable.h:334
static float tpdf(unsigned int urandom)
Definition tea.h:67
#define TEA_ROUNDS
Definition tea.h:47
static unsigned int * get_tea_state(unsigned int *const states, int threadnum)
Definition tea.h:36
static void free_tea_states(unsigned int *states)
Definition tea.h:41
#define TEA_STATE_SIZE
Definition tea.h:26
static unsigned int * alloc_tea_states(size_t numthreads)
Definition tea.h:27
static void encrypt_tea(unsigned int *arg)
Definition tea.h:51
#define dt_alloc_align(B)
Definition tests/cache.c:22