\left(\left(x - \frac{16}{116}\right) \cdot 3\right) \cdot y\left(\left(\left(x - \frac{16}{{\left(\sqrt[3]{116}\right)}^{3}}\right) + \left(\left(-\frac{16}{{\left(\sqrt[3]{116}\right)}^{3}}\right) + \frac{16}{{\left(\sqrt[3]{116}\right)}^{3}}\right)\right) \cdot 3\right) \cdot ydouble f(double x, double y) {
double r499839 = x;
double r499840 = 16.0;
double r499841 = 116.0;
double r499842 = r499840 / r499841;
double r499843 = r499839 - r499842;
double r499844 = 3.0;
double r499845 = r499843 * r499844;
double r499846 = y;
double r499847 = r499845 * r499846;
return r499847;
}
double f(double x, double y) {
double r499848 = x;
double r499849 = 16.0;
double r499850 = 116.0;
double r499851 = cbrt(r499850);
double r499852 = 3.0;
double r499853 = pow(r499851, r499852);
double r499854 = r499849 / r499853;
double r499855 = r499848 - r499854;
double r499856 = -r499854;
double r499857 = r499856 + r499854;
double r499858 = r499855 + r499857;
double r499859 = 3.0;
double r499860 = r499858 * r499859;
double r499861 = y;
double r499862 = r499860 * r499861;
return r499862;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.6 |
Initial program 0.2
rmApplied add-cube-cbrt0.6
Applied add-cube-cbrt1.5
Applied times-frac1.6
Applied add-sqr-sqrt33.2
Applied prod-diff33.2
Simplified0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019322 +o rules:numerics
(FPCore (x y)
:name "Data.Colour.CIE:cieLAB from colour-2.3.3, A"
:precision binary64
:herbie-target
(* y (- (* x 3) 0.41379310344827586))
(* (* (- x (/ 16 116)) 3) y))