47 static_assert(bits >= 1 && bits <= 16,
"Size must be power of 2 in [2, 65536]");
49 uint32_t idx = phase >> (32 - bits);
50 float frac =
static_cast<float>(phase & ((1u << (32 - bits)) - 1))
51 * (1.0f /
static_cast<float>(1u << (32 - bits)));
52 return table[idx] + (table[idx + 1] - table[idx]) * frac;
60 static_assert(bits >= 2 && bits <= 16,
"Size must be power of 2 in [4, 65536]");
62 uint32_t idx = phase >> (32 - bits);
63 float f =
static_cast<float>(phase & ((1u << (32 - bits)) - 1))
64 * (1.0f /
static_cast<float>(1u << (32 - bits)));
66 float xm1 = table[idx > 0 ? idx - 1 : Size - 1];
67 float x0 = table[idx];
68 float x1 = table[idx + 1];
69 float x2 = table[idx + 2];
72 float c = (x1 - xm1) * 0.5f;
75 float a = w + v + (x2 - x0) * 0.5f;
79 return ((a * f - b_neg) * f + c) * f + x0;