FastLED 3.10.6
Loading...
Searching...
No Matches

◆ dotOklabRowQ16()

i32 fl::anonymous_namespace{oklab_q16.cpp.hpp}::dotOklabRowQ16 ( const i32(&) row[3],
const i32(&) v[3] )

One matrix row against a clamped s16.16 vector.

The accumulator is i64 because each Q16xQ16 product is Q32. Rounding is to nearest rather than truncating: truncation biases every component of every pixel toward zero, and the mapper runs this transform twice per bisection step, so the bias would compound.

Definition at line 69 of file oklab_q16.cpp.hpp.

69 {
70 const i64 acc = static_cast<i64>(row[0]) * static_cast<i64>(v[0])
71 + static_cast<i64>(row[1]) * static_cast<i64>(v[1])
72 + static_cast<i64>(row[2]) * static_cast<i64>(v[2]);
73 return static_cast<i32>((acc + 32768) >> 16);
74}
fl::i64 i64
Definition stdint.h:221

References dotOklabRowQ16(), and fl::FL_NO_EXCEPT.

Referenced by dotOklabMatrixQ16(), and dotOklabRowQ16().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: