Add more diagnostic output to ICC profile dumps

- For profiles where the curves are not identical, print the max
  error of the best single curve across all curves.
- For all curves, print out f(1), which is strongly correlated
  with bad fitting and poor visual results.

Bug: chromium:1017960

Change-Id: I4e5604cef51c18faabe4493174045bd6ada32fde
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/255520
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/profiles/color.org/Lower_Left.icc.txt b/profiles/color.org/Lower_Left.icc.txt
index a7ee329..d7fb280 100644
--- a/profiles/color.org/Lower_Left.icc.txt
+++ b/profiles/color.org/Lower_Left.icc.txt
@@ -16,11 +16,12 @@
  'gXYZ' : 'XYZ ' :     20 : 492
  'bXYZ' : 'XYZ ' :     20 : 512
 
-rTRC : 2.199219, 1, 0, 0, 0, 0, 0
-gTRC : 2.199219, 1, 0, 0, 0, 0, 0
-bTRC : 2.199219, 1, 0, 0, 0, 0, 0
-Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
+rTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167131 0.000167131 0.000167131 |
  XYZ : | 0.38511658 0.14305115 0.43603516 |
        | 0.7169037 0.06060791 0.2224884 |
        | 0.09706116 0.71391296 0.013916016 |
diff --git a/profiles/color.org/Lower_Right.icc.txt b/profiles/color.org/Lower_Right.icc.txt
index 3b30603..ef747a2 100644
--- a/profiles/color.org/Lower_Right.icc.txt
+++ b/profiles/color.org/Lower_Right.icc.txt
@@ -16,11 +16,12 @@
  'gXYZ' : 'XYZ ' :     20 : 520
  'bXYZ' : 'XYZ ' :     20 : 540
 
-rTRC : 2.199219, 1, 0, 0, 0, 0, 0
-gTRC : 2.199219, 1, 0, 0, 0, 0, 0
-bTRC : 2.199219, 1, 0, 0, 0, 0, 0
-Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
+rTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167131 0.000167131 0.000167131 |
  XYZ : | 0.6097412 0.20527649 0.14918518 |
        | 0.31111145 0.6256714 0.06321716 |
        | 0.019470215 0.06086731 0.7445679 |
diff --git a/profiles/color.org/Upper_Left.icc.txt b/profiles/color.org/Upper_Left.icc.txt
index f7b9324..bdadebe 100644
--- a/profiles/color.org/Upper_Left.icc.txt
+++ b/profiles/color.org/Upper_Left.icc.txt
@@ -20,18 +20,18 @@
  A2B : "M", Matrix, "B"
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
-  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649) (f(1) = 0.65572)
   M1 : 16-bit table with 256 entries
-  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649) (f(1) = 0.65572)
   M2 : 16-bit table with 256 entries
-  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649) (f(1) = 0.65572)
 Mtrx : | 0.959396958 0.84733814 0.314814538 -0.503105104 |
        | 0.489433438 1.57752109 0.133390293 -0.521812081 |
        | 0.0305781476 0.213589266 1.57086837 -0.430443883 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0478363 0.022888184 -0.050201416 |
        | 0.029541016 0.99050903 -0.017074585 |
        | -0.009246826 0.015075684 0.75172424 |
diff --git a/profiles/color.org/Upper_Right.icc.txt b/profiles/color.org/Upper_Right.icc.txt
index 78fcdce..3005af2 100644
--- a/profiles/color.org/Upper_Right.icc.txt
+++ b/profiles/color.org/Upper_Right.icc.txt
@@ -16,24 +16,24 @@
 
  A2B : "A", CLUT, "M", Matrix, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 2 x 2 x 2 (16 bpp)
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
-  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256) (f(1) = 0.52655)
   M1 : 16-bit table with 256 entries
-  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256) (f(1) = 0.52655)
   M2 : 16-bit table with 256 entries
-  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256) (f(1) = 0.52655)
 Mtrx : | 2.20205379 1.94485557 0.72255367 -0.733356714 |
        | 1.12339592 3.6207943 0.306147665 -0.760608494 |
        | 0.0701893568 0.490257412 3.60553575 -0.62743181 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0478363 0.022888184 -0.050201416 |
        | 0.029541016 0.99050903 -0.017074585 |
        | -0.009246826 0.015075684 0.75172424 |
diff --git a/profiles/color.org/sRGB2014.icc.txt b/profiles/color.org/sRGB2014.icc.txt
index 81e0b75..4f5a114 100644
--- a/profiles/color.org/sRGB2014.icc.txt
+++ b/profiles/color.org/sRGB2014.icc.txt
@@ -23,14 +23,15 @@
  'chad' : 'sf32' :     44 : 2980
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt b/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
index fc3a774..2d11cd8 100644
--- a/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
+++ b/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
@@ -17,21 +17,21 @@
 
  A2B : "A", CLUT, "M", Matrix, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "M" : 3 inputs
-  M0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  M0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 Mtrx : | 1 0 0 0 |
        | 0 1 0 0 |
        | 0 0 1 0 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0479126 0.02293396 -0.050201416 |
        | 0.02960205 0.99046326 -0.017074585 |
        | -0.009246826 0.015060425 0.7517853 |
diff --git a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
index c34f8ba..cd6402d 100644
--- a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
+++ b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
@@ -17,21 +17,21 @@
 
  A2B : "A", CLUT, "M", Matrix, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "M" : 3 inputs
-  M0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  M0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 Mtrx : | 1 0 0 0 |
        | 0 1 0 0 |
        | 0 0 1 0 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0480194 0.023010254 -0.0501709 |
        | 0.029724121 0.9903412 -0.017074585 |
        | -0.009231567 0.010284424 0.75213623 |
diff --git a/profiles/fuzz/inf_a.icc.txt b/profiles/fuzz/inf_a.icc.txt
index 498caa6..cd86e3a 100644
--- a/profiles/fuzz/inf_a.icc.txt
+++ b/profiles/fuzz/inf_a.icc.txt
@@ -12,13 +12,14 @@
  'kTRC' : 'curv' :    544 : 388
 
 rTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619) (f(1) = 0.27919)
 gTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619) (f(1) = 0.27919)
 bTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
-Best : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (D-gap: 0.000110619)
-Inv  : 25.10303, 1.07798, 0.6988053, 7.999878, 0.0004882887, 0.005870819, -0 (D-gap: 0.00209078)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619) (f(1) = 0.27919)
+Best : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (D-gap: 0.000110619) (f(1) = 0.27919)
+Inv  : 25.10303, 1.07798, 0.6988053, 7.999878, 0.0004882887, 0.005870819, -0 (D-gap: 0.00209078) (f(1) = 1.84306e+06)
+Best Error: | 1.84306e+06 1.84306e+06 1.84306e+06 |
  XYZ : | 0.9614258 0 0 |
        | 0 1.0004883 0 |
        | 0 0 0.82470703 |
diff --git a/profiles/fuzz/infinite_roundtrip.icc.txt b/profiles/fuzz/infinite_roundtrip.icc.txt
index f71b537..70c1e55 100644
--- a/profiles/fuzz/infinite_roundtrip.icc.txt
+++ b/profiles/fuzz/infinite_roundtrip.icc.txt
@@ -16,9 +16,9 @@
  'gTRC' : 'para' :     64 : 460
  'bTRC' : 'para' :     64 : 460
 
-rTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0
-gTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0
-bTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0
+rTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
+gTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
+bTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
  XYZ : | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
diff --git a/profiles/fuzz/inverse_tf_not_invertible.icc.txt b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
index defec97..8dcd999 100644
--- a/profiles/fuzz/inverse_tf_not_invertible.icc.txt
+++ b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
@@ -16,13 +16,14 @@
  'bTRC' : 'curv' :   8204 : 320
 
 rTRC : 16-bit table with 4096 entries
-  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735) (f(1) = 3.29344)
 gTRC : 16-bit table with 4096 entries
-  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735) (f(1) = 3.29344)
 bTRC : 16-bit table with 4096 entries
-  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
-Best : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (D-gap: 0.000436735)
-Inv  : 0.3086966, 2.37207, 0.9828007, 12.97384, 0.003143358, -0.9564362, -0 (D-gap: -0.00023884)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735) (f(1) = 3.29344)
+Best : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (D-gap: 0.000436735) (f(1) = 3.29344)
+Inv  : 0.3086966, 2.37207, 0.9828007, 12.97384, 0.003143358, -0.9564362, -0 (D-gap: -0.00023884) (f(1) = 0.496567)
+Best Error: | 0.761265 0.761265 0.761265 |
  XYZ : | 0.43606567 0.3850708 0.14305115 |
        | 0.22250366 0.71687317 0.06060791 |
        | 0.013916016 0.09706116 0.71398926 |
diff --git a/profiles/fuzz/nan_s.icc.txt b/profiles/fuzz/nan_s.icc.txt
index 49cb861..db820b1 100644
--- a/profiles/fuzz/nan_s.icc.txt
+++ b/profiles/fuzz/nan_s.icc.txt
@@ -8,13 +8,14 @@
  'kTRC' : 'curv' :    528 : 48
 
 rTRC : 16-bit table with 258 entries
-  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06) (f(1) = 0.879673)
 gTRC : 16-bit table with 258 entries
-  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06) (f(1) = 0.879673)
 bTRC : 16-bit table with 258 entries
-  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
-Best : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (D-gap: -2.68221e-06)
-Inv  : 4.317984, 4.316589, -2.743637, 0.004835406, 0.8046997, -0.2521896, -0 (D-gap: 0.000728548)
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06) (f(1) = 0.879673)
+Best : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (D-gap: -2.68221e-06) (f(1) = 0.879673)
+Inv  : 4.317984, 4.316589, -2.743637, 0.004835406, 0.8046997, -0.2521896, -0 (D-gap: 0.000728548) (f(1) = 6.81654)
+Best Error: | 6.768 6.768 6.768 |
  XYZ : | 0.95739746 0 0 |
        | 0 1.0083008 0 |
        | 0 0 0.8161621 |
diff --git a/profiles/fuzz/negative_a_plus_b.icc.txt b/profiles/fuzz/negative_a_plus_b.icc.txt
index 371db64..de0ec7c 100644
--- a/profiles/fuzz/negative_a_plus_b.icc.txt
+++ b/profiles/fuzz/negative_a_plus_b.icc.txt
@@ -7,9 +7,9 @@
  ------ : ------ : ------ : --------
  'kTRC' : 'para' :    111 : 32
 
-rTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0)
-gTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0)
-bTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0)
+rTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
+gTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
+bTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
  XYZ : | 0.9623871 0 0 |
        | 0 1.0083923 0 |
        | 0 0 0.8287506 |
diff --git a/profiles/fuzz/one_d_clut.icc.txt b/profiles/fuzz/one_d_clut.icc.txt
index 501d5b0..ea2f08f 100644
--- a/profiles/fuzz/one_d_clut.icc.txt
+++ b/profiles/fuzz/one_d_clut.icc.txt
@@ -21,16 +21,16 @@
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
   M1 : 16-bit table with 256 entries
-  ~= : 2.556935, 0.8069916, 0.1048158, 1.058366, 0.003921569, 0.0008773804, 0 (Max error: 0.473545) (D-gap: 0.000101503)
+  ~= : 2.556935, 0.8069916, 0.1048158, 1.058366, 0.003921569, 0.0008773804, 0 (Max error: 0.473545) (D-gap: 0.000101503) (f(1) = 0.790394)
   M2 : 16-bit table with 256 entries
-  ~= : 2.512288, 0.9082756, 0.1125738, 1.058366, 0.003921569, -8.392334e-05, 0 (Max error: 0.194256) (D-gap: 0.00024071)
+  ~= : 2.512288, 0.9082756, 0.1125738, 1.058366, 0.003921569, -8.392334e-05, 0 (Max error: 0.194256) (D-gap: 0.00024071) (f(1) = 1.05297)
 Mtrx : | 2.20205379 1.94485557 4.72249269 -0.733356714 |
        | 1.12339592 3.6207943 0.306147665 -0.760608494 |
        | 0.0701893568 0.490257412 3.60553575 -0.62743181 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0478363 0.022888184 -0.050201416 |
        | 0.029541016 0.99050903 -0.017074585 |
        | -0.009246826 0.015075684 0.75172424 |
diff --git a/profiles/fuzz/polytf_nan_after_update.icc.txt b/profiles/fuzz/polytf_nan_after_update.icc.txt
index ea7ffb3..69b2efe 100644
--- a/profiles/fuzz/polytf_nan_after_update.icc.txt
+++ b/profiles/fuzz/polytf_nan_after_update.icc.txt
@@ -19,7 +19,7 @@
 rTRC : 16-bit table with 256 entries
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
-  ~= : 0.0886098, 25.71094, -0.1004161, 254.1323, 0.003921569, 0.4954681, 0 (Max error: 0.996099) (D-gap: 7.62939e-06)
+  ~= : 0.0886098, 25.71094, -0.1004161, 254.1323, 0.003921569, 0.4954681, 0 (Max error: 0.996099) (D-gap: 7.62939e-06) (f(1) = 1.82837)
  XYZ : | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
diff --git a/profiles/fuzz/zero_g.icc.txt b/profiles/fuzz/zero_g.icc.txt
index 3df875e..9898d3e 100644
--- a/profiles/fuzz/zero_g.icc.txt
+++ b/profiles/fuzz/zero_g.icc.txt
@@ -7,9 +7,9 @@
  ------ : ------ : ------ : --------
  'kTRC' : 'curv' :     32 : 104
 
-rTRC : 0, 1, 0, 0, 0, 0, 0
-gTRC : 0, 1, 0, 0, 0, 0, 0
-bTRC : 0, 1, 0, 0, 0, 0, 0
+rTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
  XYZ : | 0.9614258 0 0 |
        | 0 1.0004883 0 |
        | 0 0 0.83251953 |
diff --git a/profiles/misc/AdobeColorSpin.icc.txt b/profiles/misc/AdobeColorSpin.icc.txt
index 2f1b6fa..0a88dce 100644
--- a/profiles/misc/AdobeColorSpin.icc.txt
+++ b/profiles/misc/AdobeColorSpin.icc.txt
@@ -15,11 +15,12 @@
  'gTRC' : 'curv' :     14 : 476
  'bTRC' : 'curv' :     14 : 476
 
-rTRC : 2.199219, 1, 0, 0, 0, 0, 0
-gTRC : 2.199219, 1, 0, 0, 0, 0, 0
-bTRC : 2.199219, 1, 0, 0, 0, 0, 0
-Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
+rTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167131 0.000167131 0.000167131 |
  XYZ : | 0.20527649 0.14918518 0.6097412 |
        | 0.6256714 0.06321716 0.31111145 |
        | 0.06086731 0.7445526 0.019470215 |
diff --git a/profiles/misc/AdobeRGB.icc.txt b/profiles/misc/AdobeRGB.icc.txt
index 3b30603..ef747a2 100644
--- a/profiles/misc/AdobeRGB.icc.txt
+++ b/profiles/misc/AdobeRGB.icc.txt
@@ -16,11 +16,12 @@
  'gXYZ' : 'XYZ ' :     20 : 520
  'bXYZ' : 'XYZ ' :     20 : 540
 
-rTRC : 2.199219, 1, 0, 0, 0, 0, 0
-gTRC : 2.199219, 1, 0, 0, 0, 0, 0
-bTRC : 2.199219, 1, 0, 0, 0, 0, 0
-Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
+rTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167131 0.000167131 0.000167131 |
  XYZ : | 0.6097412 0.20527649 0.14918518 |
        | 0.31111145 0.6256714 0.06321716 |
        | 0.019470215 0.06086731 0.7445679 |
diff --git a/profiles/misc/Apple_Color_LCD.icc.txt b/profiles/misc/Apple_Color_LCD.icc.txt
index b955839..14370c4 100644
--- a/profiles/misc/Apple_Color_LCD.icc.txt
+++ b/profiles/misc/Apple_Color_LCD.icc.txt
@@ -24,14 +24,15 @@
  'aagg' : 'para' :     32 : 3652
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.44433594 0.3794403 0.14041138 |
        | 0.22476196 0.7261658 0.049072266 |
        | 0.0054779053 0.07797241 0.7414551 |
diff --git a/profiles/misc/Apple_Wide_Color.icc.txt b/profiles/misc/Apple_Wide_Color.icc.txt
index df219ee..5a607ac 100644
--- a/profiles/misc/Apple_Wide_Color.icc.txt
+++ b/profiles/misc/Apple_Wide_Color.icc.txt
@@ -16,21 +16,21 @@
 
  A2B : "A", CLUT, "M", Matrix, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "M" : 3 inputs
-  M0 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (~sRGB)
-  M1 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (~sRGB)
-  M2 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (~sRGB)
+  M0 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (f(1) = 1) (~sRGB)
+  M1 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (f(1) = 1) (~sRGB)
+  M2 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06) (f(1) = 1) (~sRGB)
 Mtrx : | 0.507255435 0.301234424 0.155698314 0 |
        | 0.239345714 0.694691539 0.0659779981 0 |
        | 0.000457756687 0.0473930761 0.777148783 0 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0478058 0.022888184 -0.0501709 |
        | 0.029525757 0.99050903 -0.017059326 |
        | -0.009246826 0.015060425 0.75190735 |
diff --git a/profiles/misc/BenQ_GL2450.icc.txt b/profiles/misc/BenQ_GL2450.icc.txt
index 73b1b40..5afe421 100644
--- a/profiles/misc/BenQ_GL2450.icc.txt
+++ b/profiles/misc/BenQ_GL2450.icc.txt
@@ -21,13 +21,14 @@
  'bTRC' : 'curv' :   2060 : 4936
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029) (f(1) = 1.01849)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029) (f(1) = 1.01849)
 bTRC : 16-bit table with 1024 entries
-  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
-Best : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0
-Inv  : 0.5000845, 1.00013, 0.0001144558, 0, 0, -0.009284973, 0
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029) (f(1) = 1.01849)
+Best : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (f(1) = 1.01849)
+Inv  : 0.5000845, 1.00013, 0.0001144558, 0, 0, -0.009284973, 0 (f(1) = 0.990837)
+Best Error: | 0.0113029 0.0113029 0.0113029 |
  XYZ : | 0.38839722 0.40229797 0.20140076 |
        | 0.19389343 0.7411041 0.065093994 |
        | 0.010299683 0.061203003 1.0146027 |
diff --git a/profiles/misc/BenQ_RL2455.icc.txt b/profiles/misc/BenQ_RL2455.icc.txt
index 0aef592..5a81e4f 100644
--- a/profiles/misc/BenQ_RL2455.icc.txt
+++ b/profiles/misc/BenQ_RL2455.icc.txt
@@ -31,32 +31,33 @@
  'K071' : 'ui08' :     10 : 52024
 
 rTRC : 16-bit table with 5 entries
-  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06) (f(1) = 1.00002)
 gTRC : 16-bit table with 5 entries
-  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06) (f(1) = 1.00002)
 bTRC : 16-bit table with 5 entries
-  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
-Best : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (D-gap: 2.13832e-06)
-Inv  : 0.4541523, 1.001511, 0.0001146138, 5.27827, 0.047364, -0.0007400513, -0 (D-gap: -1.89245e-06)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06) (f(1) = 1.00002)
+Best : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (D-gap: 2.13832e-06) (f(1) = 1.00002)
+Inv  : 0.4541523, 1.001511, 0.0001146138, 5.27827, 0.047364, -0.0007400513, -0 (D-gap: -1.89245e-06) (f(1) = 0.999992)
+Best Error: | 0.0248416 0.0248416 0.0248416 |
  XYZ : | 0.4651947 0.35595703 0.14302063 |
        | 0.23188782 0.6815338 0.08656311 |
        | 0.009918213 0.09286499 0.72210693 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05) (f(1) = 0.999855)
   A1 : 16-bit table with 256 entries
-  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05) (f(1) = 0.999855)
   A2 : 16-bit table with 256 entries
-  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05) (f(1) = 0.999855)
 CLUT : 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
-  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (~Identity)
+  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (f(1) = 1) (~Identity)
   B1 : 16-bit table with 4096 entries
-  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (~Identity)
+  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (f(1) = 1) (~Identity)
   B2 : 16-bit table with 4096 entries
-  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (~Identity)
+  ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (f(1) = 1) (~Identity)
 WTPT : | 0.96429443 1 0.82510376 |
 252 random bytes transformed to linear XYZD50 bytes:
 	192a1a 51680e 26320b 0d0818 100a26 312504 244213
diff --git a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
index f5581c7..0d24e19 100644
--- a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
@@ -19,18 +19,18 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.161658, 0.965477, 0.08204222, 0.8236057, 0.02352941, -0.05311584, 0 (Max error: 0.00190735) (D-gap: 0.000240505)
+  ~= : 1.161658, 0.965477, 0.08204222, 0.8236057, 0.02352941, -0.05311584, 0 (Max error: 0.00190735) (D-gap: 0.000240505) (f(1) = 1.00216)
   A1 : 16-bit table with 256 entries
-  ~= : 1.185196, 0.9845772, 0.0416452, 0.7782102, 0.01960784, -0.02090454, 0 (Max error: 0.00865173) (D-gap: 0.000137096)
+  ~= : 1.185196, 0.9845772, 0.0416452, 0.7782102, 0.01960784, -0.02090454, 0 (Max error: 0.00865173) (D-gap: 0.000137096) (f(1) = 1.01015)
   A2 : 16-bit table with 256 entries
-  ~= : 1.187326, 0.9800682, 0.03831189, 0.7821012, 0.03529412, -0.01689911, 0 (Max error: 0.00418091) (D-gap: 0.000131184)
+  ~= : 1.187326, 0.9800682, 0.03831189, 0.7821012, 0.03529412, -0.01689911, 0 (Max error: 0.00418091) (D-gap: 0.000131184) (f(1) = 1.00489)
   A3 : 16-bit table with 256 entries
-  ~= : 1.788781, 0.7681046, 0.3830559, 0.7655641, 0.01568628, -0.1776505, 0 (Max error: 0.0762317) (D-gap: 0.000264938)
+  ~= : 1.788781, 0.7681046, 0.3830559, 0.7655641, 0.01568628, -0.1776505, 0 (Max error: 0.0762317) (D-gap: 0.000264938) (f(1) = 1.10848)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.86979675 0.89930725 0.7805023 |
 252 random bytes transformed to linear XYZD50 bytes:
 	0e1b20 392210 0b0c05 1a1218 1c1305 17210b 231e10
diff --git a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
index ace871a..75d74c6 100644
--- a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
@@ -23,18 +23,18 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.054374, 1.018814, -0.007990699, 0.8365758, 0.007843138, 0.006622314, 0 (Max error: 0.0168037) (D-gap: 6.0935e-05)
+  ~= : 1.054374, 1.018814, -0.007990699, 0.8365758, 0.007843138, 0.006622314, 0 (Max error: 0.0168037) (D-gap: 6.0935e-05) (f(1) = 1.018)
   A1 : 16-bit table with 256 entries
-  ~= : 1.113842, 1.019768, 0.006776623, 0.7665369, 0.007843138, -0.003089905, 0 (Max error: 0.0232544) (D-gap: 4.07971e-05)
+  ~= : 1.113842, 1.019768, 0.006776623, 0.7665369, 0.007843138, -0.003089905, 0 (Max error: 0.0232544) (D-gap: 4.07971e-05) (f(1) = 1.02643)
   A2 : 16-bit table with 256 entries
-  ~= : 1.181166, 0.9961662, 0.03711115, 0.7081712, 0.007843138, -0.01995087, 0 (Max error: 0.0163422) (D-gap: 0.000101243)
+  ~= : 1.181166, 0.9961662, 0.03711115, 0.7081712, 0.007843138, -0.01995087, 0 (Max error: 0.0163422) (D-gap: 0.000101243) (f(1) = 1.01937)
   A3 : 16-bit table with 256 entries
-  ~= : 1.671706, 0.8024101, 0.3172798, 0.7159533, 0.007843137, -0.1457214, 0 (Max error: 0.0433578) (D-gap: 0.000295554)
+  ~= : 1.671706, 0.8024101, 0.3172798, 0.7159533, 0.007843137, -0.1457214, 0 (Max error: 0.0433578) (D-gap: 0.000295554) (f(1) = 1.06207)
 CLUT : 11 x 11 x 11 x 11 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.84480286 0.87620544 0.745697 |
 252 random bytes transformed to linear XYZD50 bytes:
 	111c23 3a220f 0c0e06 1b131a 1c1305 18220c 251f11
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index 8725d12..14035e3 100644
--- a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
@@ -23,19 +23,19 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.4499924, 7.476257, 4.947246, 1.200778, 0.01960784, -2.056915, 0 (Max error: 0.0593643) (D-gap: -7.66497e-05)
+  ~= : 0.4499924, 7.476257, 4.947246, 1.200778, 0.01960784, -2.056915, 0 (Max error: 0.0593643) (D-gap: -7.66497e-05) (f(1) = 1.05045)
   A1 : 16-bit table with 256 entries
-  ~= : 0.4521776, 7.18457, 4.681381, 1.205447, 0.01960784, -2.013153, 0 (Max error: 0.0558319) (D-gap: -7.66553e-05)
+  ~= : 0.4521776, 7.18457, 4.681381, 1.205447, 0.01960784, -2.013153, 0 (Max error: 0.0558319) (D-gap: -7.66553e-05) (f(1) = 1.04721)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7746541, 0.9274139, -0.1297604, 1.241552, 0.1490196, 0.1603584, 0 (Max error: 0.0166886) (D-gap: 9.95845e-05)
+  ~= : 0.7746541, 0.9274139, -0.1297604, 1.241552, 0.1490196, 0.1603584, 0 (Max error: 0.0166886) (D-gap: 9.95845e-05) (f(1) = 0.999653)
   A3 : 16-bit table with 256 entries
-  ~= : 0.7854362, 0.9449272, -0.01005363, 1.182879, 0.01568628, 0.00359726, 0 (Max error: 0.0640945) (D-gap: 5.65797e-05)
+  ~= : 0.7854362, 0.9449272, -0.01005363, 1.182879, 0.01568628, 0.00359726, 0 (Max error: 0.0640945) (D-gap: 5.65797e-05) (f(1) = 0.951984)
 CLUT : 17 x 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 256 entries
-  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.000143707)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.000143707) (f(1) = 0.996105)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.8448181 0.8761902 0.7456665 |
 252 random bytes transformed to linear XYZD50 bytes:
 	101b21 382210 0c0d06 1a1318 1b1205 18210c 231e11
diff --git a/profiles/misc/Color_Spin_Gamma_18.icc.txt b/profiles/misc/Color_Spin_Gamma_18.icc.txt
index 618a325..55327a0 100644
--- a/profiles/misc/Color_Spin_Gamma_18.icc.txt
+++ b/profiles/misc/Color_Spin_Gamma_18.icc.txt
@@ -15,11 +15,12 @@
  'gTRC' : 'curv' :     14 : 460
  'bTRC' : 'curv' :     14 : 460
 
-rTRC : 1.800781, 1, 0, 0, 0, 0, 0
-gTRC : 1.800781, 1, 0, 0, 0, 0, 0
-bTRC : 1.800781, 1, 0, 0, 0, 0, 0
-Best : 1.800781, 1, 0, 0, 0, 0, 0
-Inv  : 0.5553145, 1, -0, 0, 0, 0, 0
+rTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.5553145, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000189781 0.000189781 0.000189781 |
  XYZ : | 0.38511658 0.14303589 0.43605042 |
        | 0.7169037 0.06060791 0.2224884 |
        | 0.09706116 0.71391296 0.013916016 |
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index 5a41555..8c9607d 100644
--- a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
+++ b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
@@ -31,29 +31,30 @@
  'meta' : 'dict' :   2312 : 738448
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.006128, 1.167313, -0.1089448, 0.03579767, 0.1176471, 0.003585815, 0 (Max error: 0.0831201) (D-gap: 0.000162528)
+  ~= : 2.006128, 1.167313, -0.1089448, 0.03579767, 0.1176471, 0.003585815, 0 (Max error: 0.0831201) (D-gap: 0.000162528) (f(1) = 1.12387)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.287943, 0.9762955, 0.03624173, 0.03112842, 0.1921569, -0.02638245, 0 (Max error: 0.0558824) (D-gap: 0.000189447)
+  ~= : 2.287943, 0.9762955, 0.03624173, 0.03112842, 0.1921569, -0.02638245, 0 (Max error: 0.0558824) (D-gap: 0.000189447) (f(1) = 1.00244)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (Max error: 0.152941) (D-gap: 0.000200205)
-Best : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (D-gap: 0.000200205)
-Inv  : 0.4059491, 0.8591919, 0.0004654131, 6.467617e+08, 3.638034e-11, -0.02680969, -0 (D-gap: -0.00594747)
+  ~= : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (Max error: 0.152941) (D-gap: 0.000200205) (f(1) = 1.24191)
+Best : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (D-gap: 0.000200205) (f(1) = 1.24191)
+Inv  : 0.4059491, 0.8591919, 0.0004654131, 6.467617e+08, 3.638034e-11, -0.02680969, -0 (D-gap: -0.00594747) (f(1) = 0.913582)
+Best Error: | 0.11724 0.104035 0.152941 |
  XYZ : | 0.43673706 0.38032532 0.1471405 |
        | 0.21763611 0.72984314 0.052520752 |
        | 0.0026550293 0.06440735 0.75782776 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 2049 entries
-  ~= : 0.9956406, 1.001862, -0.1228046, 1.000015, 0.125, 0.1227303, 0 (Max error: 0.0187137) (D-gap: 0.00022085)
+  ~= : 0.9956406, 1.001862, -0.1228046, 1.000015, 0.125, 0.1227303, 0 (Max error: 0.0187137) (D-gap: 0.00022085) (f(1) = 1.00217)
   A1 : 16-bit table with 2049 entries
-  ~= : 0.9935906, 1.002388, -0.1220437, 1.000015, 0.125, 0.1218605, 0 (Max error: 0.0171154) (D-gap: 0.000234798)
+  ~= : 0.9935906, 1.002388, -0.1220437, 1.000015, 0.125, 0.1218605, 0 (Max error: 0.0171154) (D-gap: 0.000234798) (f(1) = 1.00281)
   A2 : 16-bit table with 2049 entries
-  ~= : 0.9960349, 1.003311, -0.02821074, 1.000015, 0.03125, 0.02817535, 0 (Max error: 0.020617) (D-gap: 0.000140041)
+  ~= : 0.9960349, 1.003311, -0.02821074, 1.000015, 0.03125, 0.02817535, 0 (Max error: 0.020617) (D-gap: 0.000140041) (f(1) = 1.00331)
 CLUT : 33 x 33 x 33 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9493561 1 1.1591797 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1a2c18 526c09 263409 0c0619 0f0727 2f2402 264611
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index ec88975..cf691f8 100644
--- a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
+++ b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
@@ -12,13 +12,14 @@
  'kTRC' : 'curv' :    524 : 388
 
 rTRC : 16-bit table with 256 entries
-  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06) (f(1) = 0.999931)
 gTRC : 16-bit table with 256 entries
-  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06) (f(1) = 0.999931)
 bTRC : 16-bit table with 256 entries
-  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
-Best : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (D-gap: -7.88318e-06)
-Inv  : 0.5756955, 1.000122, 1.526065e-05, 15.89691, 0.001480125, -3.051758e-05, -0 (D-gap: 7.43829e-05)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06) (f(1) = 0.999931)
+Best : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (D-gap: -7.88318e-06) (f(1) = 0.999931)
+Inv  : 0.5756955, 1.000122, 1.526065e-05, 15.89691, 0.001480125, -3.051758e-05, -0 (D-gap: 7.43829e-05) (f(1) = 1.00005)
+Best Error: | 0.000202144 0.000202144 0.000202144 |
  XYZ : | 0.9642029 0 0 |
        | 0 1 0 |
        | 0 0 0.8249054 |
diff --git a/profiles/misc/Generic_RGB_Gamma_18.icc.txt b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
index d08f084..2f6e5e5 100644
--- a/profiles/misc/Generic_RGB_Gamma_18.icc.txt
+++ b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
@@ -17,11 +17,12 @@
  'bTRC' : 'curv' :     14 : 1900
  'gTRC' : 'curv' :     14 : 1900
 
-rTRC : 1.800781, 1, 0, 0, 0, 0, 0
-gTRC : 1.800781, 1, 0, 0, 0, 0, 0
-bTRC : 1.800781, 1, 0, 0, 0, 0, 0
-Best : 1.800781, 1, 0, 0, 0, 0, 0
-Inv  : 0.5553145, 1, -0, 0, 0, 0, 0
+rTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.5553145, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000189781 0.000189781 0.000189781 |
  XYZ : | 0.45429993 0.35334778 0.15664673 |
        | 0.24191284 0.67362976 0.0844574 |
        | 0.014892578 0.09063721 0.719574 |
diff --git a/profiles/misc/Gray_Gamma_22.icc.txt b/profiles/misc/Gray_Gamma_22.icc.txt
index f6aac72..547757b 100644
--- a/profiles/misc/Gray_Gamma_22.icc.txt
+++ b/profiles/misc/Gray_Gamma_22.icc.txt
@@ -11,11 +11,12 @@
  'bkpt' : 'XYZ ' :     20 : 372
  'kTRC' : 'curv' :     14 : 392
 
-rTRC : 2.199219, 1, 0, 0, 0, 0, 0
-gTRC : 2.199219, 1, 0, 0, 0, 0, 0
-bTRC : 2.199219, 1, 0, 0, 0, 0, 0
-Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
+rTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167131 0.000167131 0.000167131 |
  XYZ : | 0.9642029 0 0 |
        | 0 1 0 |
        | 0 0 0.8249054 |
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index 72a4874..690c8d9 100644
--- a/profiles/misc/HD_709.icc.txt
+++ b/profiles/misc/HD_709.icc.txt
@@ -24,14 +24,15 @@
  'aagg' : 'para' :     32 : 2696
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.358963 0.4463501 0.15888977 |
        | 0.19592285 0.7428436 0.06123352 |
        | 0.009674072 0.043518066 0.77171326 |
diff --git a/profiles/misc/Japan_Color_2001_Coated.icc.txt b/profiles/misc/Japan_Color_2001_Coated.icc.txt
index f1c188b..789cb6c 100644
--- a/profiles/misc/Japan_Color_2001_Coated.icc.txt
+++ b/profiles/misc/Japan_Color_2001_Coated.icc.txt
@@ -19,18 +19,18 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.0495, 1.034943, 0.003219063, 0.5252918, 0.003921569, -0.003570557, 0 (Max error: 0.0335426) (D-gap: 7.2716e-05)
+  ~= : 1.0495, 1.034943, 0.003219063, 0.5252918, 0.003921569, -0.003570557, 0 (Max error: 0.0335426) (D-gap: 7.2716e-05) (f(1) = 1.03641)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117985, 1.022064, -0.02805667, 0.6270149, 0.02745098, 0.01732254, 0 (Max error: 0.00931168) (D-gap: 0.000110364)
+  ~= : 1.117985, 1.022064, -0.02805667, 0.6270149, 0.02745098, 0.01732254, 0 (Max error: 0.00931168) (D-gap: 0.000110364) (f(1) = 1.01061)
   A2 : 16-bit table with 256 entries
-  ~= : 1.159545, 0.9914627, 0.03615639, 0.3346303, 0.003921568, -0.02250671, 0 (Max error: 0.00820923) (D-gap: 0.000145535)
+  ~= : 1.159545, 0.9914627, 0.03615639, 0.3346303, 0.003921568, -0.02250671, 0 (Max error: 0.00820923) (D-gap: 0.000145535) (f(1) = 1.0095)
   A3 : 16-bit table with 256 entries
-  ~= : 1.517888, 0.8733749, 0.1790551, 0.3229572, 0.003921569, -0.07411957, 0 (Max error: 0.0159897) (D-gap: 0.000226001)
+  ~= : 1.517888, 0.8733749, 0.1790551, 0.3229572, 0.003921569, -0.07411957, 0 (Max error: 0.0159897) (D-gap: 0.000226001) (f(1) = 1.00636)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.75927734 0.78593445 0.664032 |
 252 random bytes transformed to linear XYZD50 bytes:
 	101d25 3d240f 0b0d05 1b131b 1d1406 17230c 241f11
diff --git a/profiles/misc/Kodak_sRGB.icc.txt b/profiles/misc/Kodak_sRGB.icc.txt
index 8193323..c321094 100644
--- a/profiles/misc/Kodak_sRGB.icc.txt
+++ b/profiles/misc/Kodak_sRGB.icc.txt
@@ -21,32 +21,33 @@
  'bTRC' : 'curv' :    524 : 149844
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304) (f(1) = 0.969177)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304) (f(1) = 0.969177)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
-Best : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (D-gap: 0.000183304)
-Inv  : 0.4194337, 1.135002, -0.004420613, 0.9345455, 0.004196231, -0.03895569, -0 (D-gap: -0.00769717)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304) (f(1) = 0.969177)
+Best : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (D-gap: 0.000183304) (f(1) = 0.969177)
+Inv  : 0.4194337, 1.135002, -0.004420613, 0.9345455, 0.004196231, -0.03895569, -0 (D-gap: -0.00769717) (f(1) = 1.01379)
+Best Error: | 0.0147646 0.0147646 0.0147646 |
  XYZ : | 0.43763733 0.38841248 0.14241028 |
        | 0.21495056 0.7129059 0.072128296 |
        | 0.011260986 0.080718994 0.72587585 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243) (f(1) = 1.00072)
   A1 : 16-bit table with 256 entries
-  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243) (f(1) = 1.00072)
   A2 : 16-bit table with 256 entries
-  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243) (f(1) = 1.00072)
 CLUT : 8 x 8 x 8 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05) (f(1) = 1.00486)
   B1 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05) (f(1) = 1.00486)
   B2 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05) (f(1) = 1.00486)
 WTPT : | 0.8594055 0.8912964 0.7357025 |
 252 random bytes transformed to linear XYZD50 bytes:
 	355632 a5d31d 4c6517 190f30 1e124a 5d4709 4e8727
diff --git a/profiles/misc/Lexmark_X110.icc.txt b/profiles/misc/Lexmark_X110.icc.txt
index a60e893..c16463d 100644
--- a/profiles/misc/Lexmark_X110.icc.txt
+++ b/profiles/misc/Lexmark_X110.icc.txt
@@ -14,14 +14,14 @@
 
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (8 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9505005 1 1.0888062 |
 252 random bytes transformed to linear XYZD50 bytes:
 	6fa094 d8f243 a7d043 825cbe 8365c0 a39f15 5c8161
diff --git a/profiles/misc/MR2416GSDF.icc.txt b/profiles/misc/MR2416GSDF.icc.txt
index bef099c..d36d6aa 100644
--- a/profiles/misc/MR2416GSDF.icc.txt
+++ b/profiles/misc/MR2416GSDF.icc.txt
@@ -18,13 +18,14 @@
  'bTRC' : 'curv' :    524 : 1592
 
 rTRC : 16-bit table with 256 entries
-  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509)
+  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509) (f(1) = 0.75806)
 gTRC : 16-bit table with 256 entries
-  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509)
+  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509) (f(1) = 0.75806)
 bTRC : 16-bit table with 256 entries
-  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509)
-Best : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (D-gap: 0.000188509)
-Inv  : 0.2692712, 2.136414, -0.00106762, 20.56, 0.0007629511, -0.1383667, -0 (D-gap: -0.0207493)
+  ~= : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (Max error: 0.0891655) (D-gap: 0.000188509) (f(1) = 0.75806)
+Best : 3.713728, 0.8151588, 0.1128933, 0.04863813, 0.01568628, 0.0004997253, 0 (D-gap: 0.000188509) (f(1) = 0.75806)
+Inv  : 0.2692712, 2.136414, -0.00106762, 20.56, 0.0007629511, -0.1383667, -0 (D-gap: -0.0207493) (f(1) = 1.08822)
+Best Error: | 0.0891655 0.0891655 0.0891655 |
  XYZ : | 0.4459076 0.3938141 0.13781738 |
        | 0.22624207 0.73461914 0.053771973 |
        | 0.004348755 0.08099365 0.7522278 |
diff --git a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
index 869c913..71e8020 100644
--- a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
@@ -14,14 +14,14 @@
 
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9642029 1 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	181915 7b8069 7b8069 7b8069 7b8069 7b8069 090a08
diff --git a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
index ddf037d..ca4eb3d 100644
--- a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
@@ -20,7 +20,7 @@
 
 rTRC : 16-bit table with 255 entries
 gTRC : 16-bit table with 255 entries
-  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000128567)
+  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000128567) (f(1) = 0.00387573)
 bTRC : 16-bit table with 255 entries
  XYZ : | 0.9642029 0 0.9642029 |
        | 1 0 1 |
@@ -28,14 +28,14 @@
  !!! This does not appear to use a D50 whitepoint, rather [1.92841 2 1.64981]
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9642029 1 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	181915 7b8069 7b8069 7b8069 7b8069 7b8069 090a08
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index 673eab9..9076f1c 100644
--- a/profiles/misc/Phase_One_P25.icc.txt
+++ b/profiles/misc/Phase_One_P25.icc.txt
@@ -19,10 +19,10 @@
  'tech' : 'sig ' :     12 : 219352
 
 rTRC : 16-bit table with 256 entries
-  ~= : 0.3872528, 1.663193, 0.01272831, 3.844358, 0.007843138, -0.212326, 0 (Max error: 0.0204617) (D-gap: 1.67042e-05)
+  ~= : 0.3872528, 1.663193, 0.01272831, 3.844358, 0.007843138, -0.212326, 0 (Max error: 0.0204617) (D-gap: 1.67042e-05) (f(1) = 1.00896)
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
-  ~= : 0.688842, 1.047989, -0.01162482, 2.721141, 0.01176471, 0.0254097, 0 (Max error: 0.0697136) (D-gap: 0.000136185)
+  ~= : 0.688842, 1.047989, -0.01162482, 2.721141, 0.01176471, 0.0254097, 0 (Max error: 0.0697136) (D-gap: 0.000136185) (f(1) = 1.05024)
  XYZ : | 0.64790344 0.35736084 0.15641785 |
        | 0.3829193 1.109726 0 |
        | 0.08326721 0.6792755 0.52342224 |
@@ -34,9 +34,9 @@
   A2 : 16-bit table with 256 entries
 CLUT : 33 x 33 x 33 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9634552 1 0.82403564 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1d5c40 86f80b 4a7913 2e1551 341674 8a6006 38a75e
diff --git a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
index c0f27d3..0be81c8 100644
--- a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
@@ -21,15 +21,15 @@
 
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A3 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A3 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 16 x 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.84552 0.87683105 0.74716187 |
 252 random bytes transformed to linear XYZD50 bytes:
 	162328 3a2310 090a05 1d151d 1b1306 18230c 211b10
diff --git a/profiles/misc/SM245B.icc.txt b/profiles/misc/SM245B.icc.txt
index 0ffa117..7575c03 100644
--- a/profiles/misc/SM245B.icc.txt
+++ b/profiles/misc/SM245B.icc.txt
@@ -20,13 +20,14 @@
  'view' : 'view' :     36 : 2368
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05) (f(1) = 0.99995)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05) (f(1) = 0.99995)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
-Best : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (D-gap: -1.06799e-05)
-Inv  : 0.4544528, 1.000282, 2.289464e-05, 257, 4.577707e-05, -0.0001144409, -0 (D-gap: 0.000944732)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05) (f(1) = 0.99995)
+Best : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (D-gap: -1.06799e-05) (f(1) = 0.99995)
+Inv  : 0.4544528, 1.000282, 2.289464e-05, 257, 4.577707e-05, -0.0001144409, -0 (D-gap: 0.000944732) (f(1) = 1.00002)
+Best Error: | 0.00392157 0.00392157 0.00392157 |
  XYZ : | 0.45872498 0.32295227 0.16848755 |
        | 0.2328949 0.6973877 0.06971741 |
        | 0.01411438 0.14978027 0.9237671 |
diff --git a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
index 0e23d15..ea34877 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -20,18 +20,18 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 3.096739, 0.7520752, 0.6144606, 0.7579767, 0.01960784, -0.223053, 0 (Max error: 0.397942) (D-gap: 0.00023533)
+  ~= : 3.096739, 0.7520752, 0.6144606, 0.7579767, 0.01960784, -0.223053, 0 (Max error: 0.397942) (D-gap: 0.00023533) (f(1) = 2.4071)
   A1 : 16-bit table with 256 entries
-  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314) (f(1) = 1.03662)
   A2 : 16-bit table with 256 entries
-  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314) (f(1) = 1.03662)
   A3 : 16-bit table with 256 entries
-  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314) (f(1) = 1.03662)
 CLUT : 16 x 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.9642029 1 0.82489014 |
 252 random bytes transformed to linear XYZD50 bytes:
 	121d22 36200e 090a05 191117 181106 131d0a 221d12
diff --git a/profiles/misc/ThinkpadX1YogaV2.icc.txt b/profiles/misc/ThinkpadX1YogaV2.icc.txt
index c1ae231..ab4f566 100644
--- a/profiles/misc/ThinkpadX1YogaV2.icc.txt
+++ b/profiles/misc/ThinkpadX1YogaV2.icc.txt
@@ -20,11 +20,12 @@
  'dmnd' : 'mluc' :     68 : 1280
  'dmdd' : 'mluc' :     68 : 1348
 
-rTRC : 2.199997, 1, 0, 0, 0, 0, 0
-gTRC : 2.199997, 1, 0, 0, 0, 0, 0
-bTRC : 2.199997, 1, 0, 0, 0, 0, 0
-Best : 2.199997, 1, 0, 0, 0, 0, 0
-Inv  : 0.4545461, 1, -0, 0, 0, 0, 0
+rTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4545461, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167012 0.000167012 0.000167012 |
  XYZ : | 0.5669861 0.26065063 0.13656616 |
        | 0.2580719 0.6846466 0.057281494 |
        | 0.00044250488 0.044403076 0.78004456 |
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index 2916122..990ab81 100644
--- a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
+++ b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
@@ -19,18 +19,18 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.7884726, 1.139404, 0.1396209, 2.132296, 0.003921569, -0.2085495, 0 (Max error: 0.00648499) (D-gap: 0.000136248)
+  ~= : 0.7884726, 1.139404, 0.1396209, 2.132296, 0.003921569, -0.2085495, 0 (Max error: 0.00648499) (D-gap: 0.000136248) (f(1) = 1.00553)
   A1 : 16-bit table with 256 entries
-  ~= : 1.001599, 0.9828033, -0.01541652, 1.622568, 0.01568628, 0.02549744, 0 (Max error: 0.00873214) (D-gap: 4.53889e-05)
+  ~= : 1.001599, 0.9828033, -0.01541652, 1.622568, 0.01568628, 0.02549744, 0 (Max error: 0.00873214) (D-gap: 4.53889e-05) (f(1) = 0.992756)
   A2 : 16-bit table with 256 entries
-  ~= : 1.043431, 1.001129, -0.01570399, 1.68677, 0.01568628, 0.02659988, 0 (Max error: 0.0127546) (D-gap: 0.00014074)
+  ~= : 1.043431, 1.001129, -0.01570399, 1.68677, 0.01568628, 0.02659988, 0 (Max error: 0.0127546) (D-gap: 0.00014074) (f(1) = 1.01135)
   A3 : 16-bit table with 256 entries
-  ~= : 2.249374, 0.7321663, 1.020107, 1.840467, 0.003921569, -1.044983, 0 (Max error: 0.515724) (D-gap: 8.38134e-05)
+  ~= : 2.249374, 0.7321663, 1.020107, 1.840467, 0.003921569, -1.044983, 0 (Max error: 0.515724) (D-gap: 8.38134e-05) (f(1) = 2.4856)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 WTPT : | 0.70840454 0.73594666 0.5710449 |
 252 random bytes transformed to linear XYZD50 bytes:
 	121f24 392210 0a0c06 1b141c 1d1407 151f0c 242014
diff --git a/profiles/misc/XPS13_9360.icc.txt b/profiles/misc/XPS13_9360.icc.txt
index 6acfb72..988c9e9 100644
--- a/profiles/misc/XPS13_9360.icc.txt
+++ b/profiles/misc/XPS13_9360.icc.txt
@@ -20,11 +20,12 @@
  'dmnd' : 'mluc' :     62 : 1252
  'dmdd' : 'mluc' :     50 : 1316
 
-rTRC : 2.199997, 1, 0, 0, 0, 0, 0
-gTRC : 2.199997, 1, 0, 0, 0, 0, 0
-bTRC : 2.199997, 1, 0, 0, 0, 0, 0
-Best : 2.199997, 1, 0, 0, 0, 0, 0
-Inv  : 0.4545461, 1, -0, 0, 0, 0, 0
+rTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+gTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+bTRC : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Best : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
+Inv  : 0.4545461, 1, -0, 0, 0, 0, 0 (f(1) = 1)
+Best Error: | 0.000167012 0.000167012 0.000167012 |
  XYZ : | 0.43795776 0.38423157 0.14201355 |
        | 0.2230835 0.71687317 0.060058594 |
        | 0.014511108 0.09725952 0.7131195 |
diff --git a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
index c13a784..bea44b4 100644
--- a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
+++ b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
@@ -22,15 +22,15 @@
 
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A3 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A3 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1 0 0 |
        | 0 1 0 |
        | 0 0 1 |
diff --git a/profiles/misc/calibrated_nonzero_black.icc.txt b/profiles/misc/calibrated_nonzero_black.icc.txt
index 762fd08..3d398a2 100644
--- a/profiles/misc/calibrated_nonzero_black.icc.txt
+++ b/profiles/misc/calibrated_nonzero_black.icc.txt
@@ -19,13 +19,14 @@
  'vcgt' : 'vcgt' :   1554 : 2180
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06) (f(1) = 0.999908)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06) (f(1) = 0.999908)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
-Best : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (D-gap: -2.67266e-06)
-Inv  : 0.4545792, 1.001312, -0.00129106, 3.02353, 0.001297017, 1.907349e-05, -0 (D-gap: 0.000822931)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06) (f(1) = 0.999908)
+Best : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (D-gap: -2.67266e-06) (f(1) = 0.999908)
+Inv  : 0.4545792, 1.001312, -0.00129106, 3.02353, 0.001297017, 1.907349e-05, -0 (D-gap: 0.000822931) (f(1) = 1.00003)
+Best Error: | 0.0047445 0.0047445 0.0047445 |
  XYZ : | 0.436615 0.38534546 0.14224243 |
        | 0.22212219 0.71839905 0.0594635 |
        | 0.012954712 0.09654236 0.71539307 |
diff --git a/profiles/misc/crbug_1017960_19.icc.txt b/profiles/misc/crbug_1017960_19.icc.txt
index 28f3f51..5707278 100644
--- a/profiles/misc/crbug_1017960_19.icc.txt
+++ b/profiles/misc/crbug_1017960_19.icc.txt
@@ -21,13 +21,14 @@
  'mmod' : 'mmod' :     40 : 3860
 
 rTRC : 16-bit table with 256 entries
-  ~= : 4.841902, 0.719986, 0.3762827, 0.1407054, 0.2431373, -0.02175903, 0 (Max error: 0.127342) (D-gap: -2.65129e-05)
+  ~= : 4.841902, 0.719986, 0.3762827, 0.1407054, 0.2431373, -0.02175903, 0 (Max error: 0.127342) (D-gap: -2.65129e-05) (f(1) = 1.53802)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.197707, 1.013412, -0.02046552, 0.09246967, 0.1333333, 0.003822327, 0 (Max error: 0.0139048) (D-gap: 5.78072e-05)
+  ~= : 2.197707, 1.013412, -0.02046552, 0.09246967, 0.1333333, 0.003822327, 0 (Max error: 0.0139048) (D-gap: 5.78072e-05) (f(1) = 0.988342)
 bTRC : 16-bit table with 256 entries
-  ~= : 1.923471, 1.129272, 0.06547091, 0.0077821, 0.003921569, -0.005767822, 0 (Max error: 0.169685) (D-gap: 0.00018987)
-Best : 4.841902, 0.719986, 0.3762827, 0.1407054, 0.2431373, -0.02175903, 0 (D-gap: -2.65129e-05)
-Inv  : 0.2065304, 4.906921, 0.1067699, 7.107047, 0.03421073, -0.5224304, -0 (D-gap: 0.000164136)
+  ~= : 1.923471, 1.129272, 0.06547091, 0.0077821, 0.003921569, -0.005767822, 0 (Max error: 0.169685) (D-gap: 0.00018987) (f(1) = 1.40215)
+Best : 4.841902, 0.719986, 0.3762827, 0.1407054, 0.2431373, -0.02175903, 0 (D-gap: -2.65129e-05) (f(1) = 1.53802)
+Inv  : 0.2065304, 4.906921, 0.1067699, 7.107047, 0.03421073, -0.5224304, -0 (D-gap: 0.000164136) (f(1) = 0.872658)
+Best Error: | 0.127342 0.127342 0.127342 |
  XYZ : | 0.3805542 0.434021 0.14962769 |
        | 0.21951294 0.68196106 0.098526 |
        | 0.04006958 0.088272095 0.6965637 |
diff --git a/profiles/misc/crbug_976551.icc.txt b/profiles/misc/crbug_976551.icc.txt
index 3075ac9..c1b823a 100644
--- a/profiles/misc/crbug_976551.icc.txt
+++ b/profiles/misc/crbug_976551.icc.txt
@@ -21,13 +21,14 @@
  'mmod' : 'mmod' :     40 : 13080
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (Max error: 0.0193188) (D-gap: 0.00012941)
+  ~= : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (Max error: 0.0193188) (D-gap: 0.00012941) (f(1) = 1.01437)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.436169, 1.070824, -0.07745938, 0.1031524, 0.07233626, 0.007606506, 0 (Max error: 0.0184169) (D-gap: 0.000144845)
+  ~= : 1.436169, 1.070824, -0.07745938, 0.1031524, 0.07233626, 0.007606506, 0 (Max error: 0.0184169) (D-gap: 0.000144845) (f(1) = 0.998066)
 bTRC : 16-bit table with 1024 entries
-  ~= : 1.508441, 1.110535, -0.05764122, 0.09840215, 0.07722384, 0.003158569, 0 (Max error: 0.0494118) (D-gap: 0.000133727)
-Best : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (D-gap: 0.00012941)
-Inv  : 0.6947112, 0.8958664, -0.006158261, 9.985308, 0.007537957, 0.06882095, -0 (D-gap: -0.000705704)
+  ~= : 1.508441, 1.110535, -0.05764122, 0.09840215, 0.07722384, 0.003158569, 0 (Max error: 0.0494118) (D-gap: 0.000133727) (f(1) = 1.08383)
+Best : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (D-gap: 0.00012941) (f(1) = 1.01437)
+Inv  : 0.6947112, 0.8958664, -0.006158261, 9.985308, 0.007537957, 0.06882095, -0 (D-gap: -0.000705704) (f(1) = 0.990749)
+Best Error: | 0.0193188 0.0178842 0.0199659 |
  XYZ : | 0.512558 0.29548645 0.15614319 |
        | 0.24029541 0.7005768 0.059127808 |
        | -0.0010375977 0.042297363 0.7836609 |
diff --git a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index a89b043..cba6c58 100644
--- a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
@@ -16,13 +16,14 @@
  'cprt' : 'mluc' :     60 : 1944
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (Max error: 0.00611324) (D-gap: 2.42817e-05)
+  ~= : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (Max error: 0.00611324) (D-gap: 2.42817e-05) (f(1) = 1.00117)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.197513, 1.010475, -0.009469209, 0.009727627, 0.02352941, 0.0001678467, 0 (Max error: 0.00431907) (D-gap: 2.74072e-05)
+  ~= : 2.197513, 1.010475, -0.009469209, 0.009727627, 0.02352941, 0.0001678467, 0 (Max error: 0.00431907) (D-gap: 2.74072e-05) (f(1) = 1.00237)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.261958, 1.004646, -0.004023268, 0.0077821, 0.01960785, 6.103516e-05, 0 (Max error: 0.00378567) (D-gap: -8.82382e-06)
-Best : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (D-gap: 2.42817e-05)
-Inv  : 0.4480209, 0.9897156, 7.550931e-05, 82.90323, 0.0004730297, 0.004066467, -0 (D-gap: -0.000688914)
+  ~= : 2.261958, 1.004646, -0.004023268, 0.0077821, 0.01960785, 6.103516e-05, 0 (Max error: 0.00378567) (D-gap: -8.82382e-06) (f(1) = 1.00146)
+Best : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (D-gap: 2.42817e-05) (f(1) = 1.00117)
+Inv  : 0.4480209, 0.9897156, 7.550931e-05, 82.90323, 0.0004730297, 0.004066467, -0 (D-gap: -0.000688914) (f(1) = 0.999474)
+Best Error: | 0.00611324 0.0057922 0.00695762 |
  XYZ : | 0.4492798 0.38258362 0.13233948 |
        | 0.22447205 0.7223511 0.05317688 |
        | 0.0011291504 0.05355835 0.7702179 |
diff --git a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
index 6beaaff..d485d75 100644
--- a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
@@ -17,13 +17,14 @@
  'MS00' : 'MS10' :   7838 : 2308
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285) (f(1) = 1.00411)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285) (f(1) = 1.00411)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
-Best : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (D-gap: 0.000209285)
-Inv  : 0.4148793, 1.144882, 5.240855e-05, 12.91457, 0.003036545, -0.05947113, -0 (D-gap: -0.00262654)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285) (f(1) = 1.00411)
+Best : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (D-gap: 0.000209285) (f(1) = 1.00411)
+Inv  : 0.4148793, 1.144882, 5.240855e-05, 12.91457, 0.003036545, -0.05947113, -0 (D-gap: -0.00262654) (f(1) = 0.998199)
+Best Error: | 0.00262654 0.00262654 0.00262654 |
  XYZ : | 0.43547058 0.3885498 0.14019775 |
        | 0.22172546 0.7219696 0.05630493 |
        | 0.0134887695 0.08792114 0.7234802 |
diff --git a/profiles/misc/sRGB_HP.icc.txt b/profiles/misc/sRGB_HP.icc.txt
index 8be3d85..77c5a77 100644
--- a/profiles/misc/sRGB_HP.icc.txt
+++ b/profiles/misc/sRGB_HP.icc.txt
@@ -24,14 +24,15 @@
  'bTRC' : 'curv' :   2060 : 1084
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/misc/sRGB_HP_2.icc.txt b/profiles/misc/sRGB_HP_2.icc.txt
index 11ad119..2244c9f 100644
--- a/profiles/misc/sRGB_HP_2.icc.txt
+++ b/profiles/misc/sRGB_HP_2.icc.txt
@@ -24,14 +24,15 @@
  'bTRC' : 'curv' :   2060 : 5201
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/misc/sRGB_ICC_v4_beta.icc.txt b/profiles/misc/sRGB_ICC_v4_beta.icc.txt
index 365a796..7a68b6d 100644
--- a/profiles/misc/sRGB_ICC_v4_beta.icc.txt
+++ b/profiles/misc/sRGB_ICC_v4_beta.icc.txt
@@ -17,21 +17,21 @@
 
  A2B : "A", CLUT, "M", Matrix, "B"
  "A" : 3 inputs
-  A0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  A2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  A0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  A2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "M" : 3 inputs
-  M0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  M2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  M0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  M2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 Mtrx : | 1 0 0 0 |
        | 0 1 0 0 |
        | 0 0 1 0 |
  "B" : 3 outputs
-  B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
-  B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
+  B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
+  B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
 CHAD : | 1.0479126 0.02293396 -0.050201416 |
        | 0.02960205 0.99046326 -0.017074585 |
        | -0.009246826 0.015060425 0.7517853 |
diff --git a/profiles/misc/sRGB_black_scaled.icc.txt b/profiles/misc/sRGB_black_scaled.icc.txt
index 5011a31..31aafa9 100644
--- a/profiles/misc/sRGB_black_scaled.icc.txt
+++ b/profiles/misc/sRGB_black_scaled.icc.txt
@@ -23,14 +23,15 @@
  'chad' : 'sf32' :     44 : 3004
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/misc/sRGB_lcms.icc.txt b/profiles/misc/sRGB_lcms.icc.txt
index f14bc45..654a897 100644
--- a/profiles/misc/sRGB_lcms.icc.txt
+++ b/profiles/misc/sRGB_lcms.icc.txt
@@ -17,12 +17,13 @@
  'bTRC' : 'para' :     32 : 588
  'chrm' : 'chrm' :     36 : 620
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
+Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
  XYZ : | 0.43585205 0.3853302 0.14302063 |
        | 0.22238159 0.717041 0.06059265 |
        | 0.013916016 0.09713745 0.71383667 |
diff --git a/profiles/mobile/Display_P3_LUT.icc.txt b/profiles/mobile/Display_P3_LUT.icc.txt
index 452db31..b8440f4 100644
--- a/profiles/mobile/Display_P3_LUT.icc.txt
+++ b/profiles/mobile/Display_P3_LUT.icc.txt
@@ -18,14 +18,15 @@
  'gTRC' : 'curv' :   2060 : 508
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.51512146 0.29197693 0.15710449 |
        | 0.24119568 0.6922455 0.0665741 |
        | -0.0010375977 0.041885376 0.7840729 |
diff --git a/profiles/mobile/Display_P3_parametric.icc.txt b/profiles/mobile/Display_P3_parametric.icc.txt
index 2f49357..8d44193 100644
--- a/profiles/mobile/Display_P3_parametric.icc.txt
+++ b/profiles/mobile/Display_P3_parametric.icc.txt
@@ -17,12 +17,13 @@
  'bTRC' : 'para' :     32 : 508
  'gTRC' : 'para' :     32 : 508
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
+Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
  XYZ : | 0.51512146 0.29197693 0.15710449 |
        | 0.24119568 0.6922455 0.0665741 |
        | -0.0010375977 0.041885376 0.7840729 |
diff --git a/profiles/mobile/iPhone7p.icc.txt b/profiles/mobile/iPhone7p.icc.txt
index 458cbe4..b144521 100644
--- a/profiles/mobile/iPhone7p.icc.txt
+++ b/profiles/mobile/iPhone7p.icc.txt
@@ -16,12 +16,13 @@
  'bTRC' : 'para' :     32 : 472
  'gTRC' : 'para' :     32 : 472
 
-rTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
-gTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
-bTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
+rTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (f(1) = 1) (~sRGB)
+gTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (f(1) = 1) (~sRGB)
+bTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (f(1) = 1) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
-Inv  : 0.4166677, 1.136909, -0, 12.98771, 0.003002951, -0.05482483, -0 (D-gap: -3.19481e-05)
+Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (f(1) = 1) (~sRGB)
+Inv  : 0.4166677, 1.136909, -0, 12.98771, 0.003002951, -0.05482483, -0 (D-gap: -3.19481e-05) (f(1) = 1)
+Best Error: | 7.4923e-05 7.4923e-05 7.4923e-05 |
  XYZ : | 0.51512146 0.29197693 0.15710449 |
        | 0.24119568 0.6922455 0.0665741 |
        | -0.0010528564 0.041885376 0.7840729 |
diff --git a/profiles/mobile/sRGB_LUT.icc.txt b/profiles/mobile/sRGB_LUT.icc.txt
index ba047ab..6cc0ecc 100644
--- a/profiles/mobile/sRGB_LUT.icc.txt
+++ b/profiles/mobile/sRGB_LUT.icc.txt
@@ -18,14 +18,15 @@
  'gTRC' : 'curv' :   2060 : 520
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
-Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
+Best Error: | 0.00197129 0.00197129 0.00197129 |
  XYZ : | 0.43603516 0.38511658 0.14305115 |
        | 0.2224884 0.7169037 0.06060791 |
        | 0.013916016 0.09706116 0.71391296 |
diff --git a/profiles/mobile/sRGB_parametric.icc.txt b/profiles/mobile/sRGB_parametric.icc.txt
index a31fee1..f2ede7e 100644
--- a/profiles/mobile/sRGB_parametric.icc.txt
+++ b/profiles/mobile/sRGB_parametric.icc.txt
@@ -17,12 +17,13 @@
  'bTRC' : 'para' :     32 : 520
  'gTRC' : 'para' :     32 : 520
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
+Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
  XYZ : | 0.43603516 0.38511658 0.14305115 |
        | 0.2224884 0.7169037 0.06060791 |
        | 0.013916016 0.09706116 0.71391296 |
diff --git a/profiles/sRGB_Facebook.icc.txt b/profiles/sRGB_Facebook.icc.txt
index d03ca1b..89af818 100644
--- a/profiles/sRGB_Facebook.icc.txt
+++ b/profiles/sRGB_Facebook.icc.txt
@@ -17,14 +17,15 @@
  'bTRC' : 'curv' :     64 : 460
 
 rTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (f(1) = 0.997005) (~sRGB)
 gTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (f(1) = 0.997005) (~sRGB)
 bTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (f(1) = 0.997005) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (D-gap: 0.000140188) (~sRGB)
-Inv  : 0.4196866, 1.120888, -0.0006199979, 12.9133, 0.003097581, -0.04740906, -0 (D-gap: -0.00190929)
+Best : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (D-gap: 0.000140188) (f(1) = 0.997005) (~sRGB)
+Inv  : 0.4196866, 1.120888, -0.0006199979, 12.9133, 0.003097581, -0.04740906, -0 (D-gap: -0.00190929) (f(1) = 1.00132)
+Best Error: | 0.00213668 0.00213668 0.00213668 |
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/skcms.cc b/skcms.cc
index 1b24afc..c54acb6 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -230,7 +230,7 @@
     return l + (h-l)*t;
 }
 
-static float max_roundtrip_error(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf) {
+float skcms_MaxRoundtripError(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf) {
     uint32_t N = curve->table_entries > 256 ? curve->table_entries : 256;
     const float dx = 1.0f / (N - 1);
     float err = 0;
@@ -243,7 +243,7 @@
 }
 
 bool skcms_AreApproximateInverses(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf) {
-    return max_roundtrip_error(curve, inv_tf) < (1/512.0f);
+    return skcms_MaxRoundtripError(curve, inv_tf) < (1/512.0f);
 }
 
 // Additional ICC signature values that are only used internally
@@ -1897,7 +1897,7 @@
             continue;
         }
 
-        float err = max_roundtrip_error(curve, &tf_inv);
+        float err = skcms_MaxRoundtripError(curve, &tf_inv);
         if (*max_error > err) {
             *max_error = err;
             *approx    = tf;
@@ -2559,7 +2559,7 @@
 
         float err = 0;
         for (int j = 0; j < 3; ++j) {
-            err = fmaxf_(err, max_roundtrip_error(&profile->trc[j], &inv));
+            err = fmaxf_(err, skcms_MaxRoundtripError(&profile->trc[j], &inv));
         }
         if (min_max_error > err) {
             min_max_error = err;
diff --git a/skcms_internal.h b/skcms_internal.h
index 0eaa9dd..cc6d578 100644
--- a/skcms_internal.h
+++ b/skcms_internal.h
@@ -31,6 +31,8 @@
     void skcms_GetTagByIndex    (const skcms_ICCProfile*, uint32_t idx, skcms_ICCTag*);
     bool skcms_GetTagBySignature(const skcms_ICCProfile*, uint32_t sig, skcms_ICCTag*);
 
+    float skcms_MaxRoundtripError(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf);
+
     // 252 of a random shuffle of all possible bytes.
     // 252 is evenly divisible by 3 and 4.  Only 192, 10, 241, and 43 are missing.
     // Used for ICC profile equivalence testing.
diff --git a/test_only.c b/test_only.c
index 1689a4b..bda718f 100644
--- a/test_only.c
+++ b/test_only.c
@@ -128,6 +128,8 @@
         fprintf(fp, " (D-gap: %.6g)", (n_at_d - l_at_d));
     }
 
+    fprintf(fp, " (f(1) = %.6g)", skcms_TransferFunction_eval(tf, 1.0f));
+
     skcms_Curve curve;
     curve.table_entries = 0;
     curve.parametric = *tf;
@@ -198,6 +200,11 @@
         skcms_TransferFunction inv;
         if (skcms_TransferFunction_invert(&best_single_curve.trc[0].parametric, &inv)) {
             dump_transfer_function(fp, "Inv ", &inv, 0.0f);
+
+            fprintf(fp, "Best Error: | %.6g %.6g %.6g |\n",
+                skcms_MaxRoundtripError(&profile->trc[0], &inv),
+                skcms_MaxRoundtripError(&profile->trc[1], &inv),
+                skcms_MaxRoundtripError(&profile->trc[2], &inv));
         } else {
             fprintf(fp, "*** could not invert Best ***\n");
         }