9void dx_init_lut_data();
14 static int32_t lookup(int32_t x);
17inline int32_t Exp2::lookup(int32_t x) {
18 const int SHIFT = 24 - EXP2_LG_N_SAMPLES;
19 int lowbits = x & ((1 << SHIFT) - 1);
20 int x_int = (x >> (SHIFT - 1)) & ((EXP2_N_SAMPLES - 1) << 1);
21 int dy = dxEngine->exp2tab[x_int];
22 int y0 = dxEngine->exp2tab[x_int + 1];
24 int y = y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT);
25 return y >> (6 - (x >> 24));
31 static int32_t lookup(int32_t x);
34inline int32_t Tanh::lookup(int32_t x) {
35 int32_t signum = x >> 31;
38 if (x >= (17 << 23)) {
39 return signum ^ (1 << 24);
41 int32_t sx = ((int64_t)-48408812 * (int64_t)x) >> 24;
42 return signum ^ ((1 << 24) - 2 * Exp2::lookup(sx));
45 const int SHIFT = 26 - TANH_LG_N_SAMPLES;
46 int lowbits = x & ((1 << SHIFT) - 1);
47 int x_int = (x >> (SHIFT - 1)) & ((TANH_N_SAMPLES - 1) << 1);
48 int dy = dxEngine->tanhtab[x_int];
49 int y0 = dxEngine->tanhtab[x_int + 1];
50 int y = y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT);
57 static int32_t lookup(int32_t phase);
60inline int32_t Sin::lookup(int32_t phase) {
61 const int SHIFT = 24 - SIN_LG_N_SAMPLES;
62 int lowbits = phase & ((1 << SHIFT) - 1);
64 int phase_int = (phase >> (SHIFT - 1)) & ((SIN_N_SAMPLES - 1) << 1);
65 int dy = dxEngine->sintab[phase_int];
66 int y0 = dxEngine->sintab[phase_int + 1];
68 return y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT);
70 int phase_int = (phase >> SHIFT) & (SIN_N_SAMPLES - 1);
71 int y0 = dxEngine->sintab[phase_int];
72 int y1 = dxEngine->sintab[phase_int + 1];
74 return y0 + (((int64_t)(y1 - y0) * (int64_t)lowbits) >> SHIFT);
80 static int32_t lookup(int32_t logfreq);