251 {
253 u8x8 fr =
x - fl_val;
255
257 if (n < 0)
return u8x8();
258 i32 int_pow =
static_cast<i32
>(
SCALE) << n;
259
260
261 constexpr int IFRAC = 16;
262 constexpr i32 d0 = 45427;
263 constexpr i32 d1 = 15775;
264 constexpr i32 d2 = 3497;
265 constexpr i32 d3 = 836;
266
267 i32 fr16 =
static_cast<i32
>(fr.mValue) << (IFRAC -
FRAC_BITS);
268
269 i32 acc = d3;
270 acc = d2 +
static_cast<i32
>((
static_cast<i64>(acc) * fr16) >> IFRAC);
271 acc = d1 +
static_cast<i32
>((
static_cast<i64>(acc) * fr16) >> IFRAC);
272 acc = d0 +
static_cast<i32
>((
static_cast<i64>(acc) * fr16) >> IFRAC);
273 constexpr i32 one16 = static_cast<i32>(1) << IFRAC;
274 i32 frac_pow16 = one16 +
static_cast<i32
>((
static_cast<i64>(acc) * fr16) >> IFRAC);
275
276 i32 frac_pow8 = frac_pow16 >> (IFRAC -
FRAC_BITS);
279
282 }
static constexpr int INT_BITS
static constexpr FASTLED_FORCE_INLINE u8x8 floor(u8x8 x) FL_NOEXCEPT
static constexpr int FRAC_BITS
static constexpr FASTLED_FORCE_INLINE u8x8 from_raw(u16 raw) FL_NOEXCEPT
static constexpr i32 SCALE
constexpr u8x8() FL_NOEXCEPT=default
expected< T, E > result
Alias for expected (Rust-style naming)