[csswg-drafts] [css-color-4] Linear transformation matrices are very slightly inaccurate (#7675)

nex3 has just created a new issue for https://github.com/w3c/csswg-drafts:

== [css-color-4] Linear transformation matrices are very slightly inaccurate ==
The [sample code for color conversions](https://www.w3.org/TR/css-color-4/#color-conversion-code) in Color Level 4 lists a number of matrices to use to convert between color values. I've been pre-computing the linear transformations from one colorspace to another for Sass using lossless numeric logic to avoid floating-point rounding errors, and in doing so I noticed some very very slight inaccuracies in the listed matrices. These are all at the level of floating-point rounding errors, so unlikely to be particularly significant in the real world, but I thought it might be desirable to have the example code be as accurate as possible up to the limits of the floating-point representation.

Here are the most precise 64-bit floating-point representations of the various transformations I've looked at so far, generated by [this script](https://gist.github.com/nex3/bb38b7204ba22b7e3bc8f4d4a8c1bdba):

```js
// srgb to xyz-d65
var M = [
         0.41239079926595950,  0.35758433938387796,  0.18048078840183430,
         0.21263900587151036,  0.71516867876775590,  0.07219231536073371,
         0.01933081871559185,  0.11919477979462598,  0.95053215224966060
];

// xyz-d65 to srgb
var M = [
         3.24096994190452130, -1.53738317757009350, -0.49861076029300330,
        -0.96924363628087980,  1.87596750150772060,  0.04155505740717561,
         0.05563007969699360, -0.20397695888897657,  1.05697151424287860
];

// display-p3 to xyz-d65
var M = [
         0.48657094864821626,  0.26566769316909294,  0.19821728523436250,
         0.22897456406974884,  0.69173852183650620,  0.07928691409374500,
         0.00000000000000000,  0.04511338185890257,  1.04394436890097570
];

// xyz-d65 to display-p3
var M = [
         2.49349691194142450, -0.93138361791912360, -0.40271078445071684,
        -0.82948896956157490,  1.76266406031834680,  0.02362468584194359,
         0.03584583024378433, -0.07617238926804170,  0.95688452400768730
];

// a98-rgb to xyz-d65
var M = [
         0.57666904291013080,  0.18555823790654627,  0.18822864623499472,
         0.29734497525053616,  0.62736356625546600,  0.07529145849399789,
         0.02703136138641237,  0.07068885253582714,  0.99133753683763890
];

// xyz-d65 to a98-rgb
var M = [
         2.04158790381074600, -0.56500697427885960, -0.34473135077832950,
        -0.96924363628087980,  1.87596750150772060,  0.04155505740717561,
         0.01344428063203102, -0.11836239223101823,  1.01517499439120540
];

// rec2020 to xyz-d65
var M = [
         0.63695804830129130,  0.14461690358620838,  0.16888097516417205,
         0.26270021201126703,  0.67799807151887100,  0.05930171646986194,
         0.00000000000000000,  0.02807269304908750,  1.06098505771079090
];

// xyz-d65 to rec2020
var M = [
         1.71665118797126760, -0.35567078377639240, -0.25336628137365980,
        -0.66668435183248900,  1.61648123663493900,  0.01576854581391113,
         0.01763985744531091, -0.04277061325780865,  0.94210312123547400
];

// prophoto-rgb to xyz-d50
var M = [
         0.79776664490064230,  0.13518129740053308,  0.03134773412839220,
         0.28807482881940130,  0.71183523424187300,  0.00008993693872564,
         0.00000000000000000,  0.00000000000000000,  0.82510460251046020
];

// xyz-d50 to prophoto-rgb
var M = [
         1.34578688164715830, -0.25557208737979464, -0.05110186497554526,
        -0.54463070512490190,  1.50824774284514680,  0.02052744743642139,
         0.00000000000000000,  0.00000000000000000,  1.21196754563894520
];

// xyz-d65 to xyz-d50
var M = [
         1.04792979254499660,  0.02294687060160952, -0.05019226628920519,
         0.02962780877005567,  0.99043442675388000, -0.01707379906341879,
        -0.00924304064620452,  0.01505519149029816,  0.75187428142813700
];

// xyz-d50 to xyz-d65
var M = [
         0.95547342148807520, -0.02309845494876452,  0.06325924320057065,
        -0.02836970933386358,  1.00999539808130410,  0.02104144119191730,
         0.01231401486448199, -0.02050764929889898,  1.33036592624212400
];
```

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7675 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Friday, 2 September 2022 01:23:46 UTC