210 {
211 float xyz_R[3], xyz_G[3], xyz_B[3], xyz_W[3];
216
218 P[0][0] = xyz_R[0];
P[0][1] = xyz_G[0];
P[0][2] = xyz_B[0];
219 P[1][0] = xyz_R[1];
P[1][1] = xyz_G[1];
P[1][2] = xyz_B[1];
220 P[2][0] = xyz_R[2];
P[2][1] = xyz_G[2];
P[2][2] = xyz_B[2];
221
222 float P_inv[3][3];
224 return false;
225 }
226 float k[3];
228
229 M_out[0][0] = k[0] * xyz_R[0]; M_out[0][1] = k[1] * xyz_G[0]; M_out[0][2] = k[2] * xyz_B[0];
230 M_out[1][0] = k[0] * xyz_R[1]; M_out[1][1] = k[1] * xyz_G[1]; M_out[1][2] = k[2] * xyz_B[1];
231 M_out[2][0] = k[0] * xyz_R[2]; M_out[2][1] = k[1] * xyz_G[2]; M_out[2][2] = k[2] * xyz_B[2];
232 return true;
233}
void matvec3(const float M[3][3], const float v[3], float out[3]) FL_NO_EXCEPT
bool invert3x3(const float in[3][3], float out[3][3]) FL_NO_EXCEPT
void xyY_to_XYZ(float x, float y, float Y, float out[3]) FL_NO_EXCEPT
FASTLED_FORCE_INLINE fl::u8 P(fl::u8 x)