356 {
362 i32 int_pow;
363 if (n >= 0) {
364 int_pow =
static_cast<i32
>(
SCALE) << n;
365 } else {
366 int_pow =
static_cast<i32
>(
SCALE) >> (-n);
367 }
368
369
370 constexpr int IFRAC = 20;
371 constexpr i32 d0 = 726836;
372 constexpr i32 d1 = 252400;
373 constexpr i32 d2 = 55952;
374 constexpr i32 d3 = 13376;
375
376 i32 fr20 =
static_cast<i32
>(fr.mValue) << (IFRAC -
FRAC_BITS);
377
378 i32 acc = d3;
379 acc = d2 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
380 acc = d1 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
381 acc = d0 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
382 constexpr i32 one20 = static_cast<i32>(1) << IFRAC;
383 i32 frac_pow20 = one20 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
384
385 i32 frac_pow12 = frac_pow20 >> (IFRAC -
FRAC_BITS);
389 }
constexpr s4x12() FL_NOEXCEPT=default
constexpr FASTLED_FORCE_INLINE s4x12 floor() const FL_NOEXCEPT
static constexpr int FRAC_BITS
static constexpr i32 SCALE
static constexpr FASTLED_FORCE_INLINE s4x12 from_raw(i16 raw) FL_NOEXCEPT
static constexpr int INT_BITS
expected< T, E > result
Alias for expected (Rust-style naming)