244 {
249 if (n < 0)
return u4x12();
250 u32 int_pow =
static_cast<u32
>(
SCALE) << n;
251
252
253 constexpr int IFRAC = 20;
254 constexpr i32 d0 = 726836;
255 constexpr i32 d1 = 252400;
256 constexpr i32 d2 = 55952;
257 constexpr i32 d3 = 13376;
258
259 i32 fr20 =
static_cast<i32
>(fr.mValue) << (IFRAC -
FRAC_BITS);
260
261 i32 acc = d3;
262 acc = d2 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
263 acc = d1 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
264 acc = d0 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
265 constexpr i32 one20 = static_cast<i32>(1) << IFRAC;
266 i32 frac_pow20 = one20 +
static_cast<i32
>((
static_cast<i64>(acc) * fr20) >> IFRAC);
267
268 u32 frac_pow12 =
static_cast<u32
>(frac_pow20) >> (IFRAC -
FRAC_BITS);
272 }
static constexpr int INT_BITS
static constexpr i32 SCALE
static constexpr int FRAC_BITS
static constexpr FASTLED_FORCE_INLINE u4x12 from_raw(u16 raw) FL_NOEXCEPT
static constexpr FASTLED_FORCE_INLINE u4x12 floor(u4x12 x) FL_NOEXCEPT
constexpr u4x12() FL_NOEXCEPT=default
expected< T, E > result
Alias for expected (Rust-style naming)