\frac{x \cdot y - z \cdot t}{a}\frac{x \cdot y - z \cdot t}{a}double f(double x, double y, double z, double t, double a) {
double r740992 = x;
double r740993 = y;
double r740994 = r740992 * r740993;
double r740995 = z;
double r740996 = t;
double r740997 = r740995 * r740996;
double r740998 = r740994 - r740997;
double r740999 = a;
double r741000 = r740998 / r740999;
return r741000;
}
double f(double x, double y, double z, double t, double a) {
double r741001 = x;
double r741002 = y;
double r741003 = r741001 * r741002;
double r741004 = z;
double r741005 = t;
double r741006 = r741004 * r741005;
double r741007 = r741003 - r741006;
double r741008 = a;
double r741009 = r741007 / r741008;
return r741009;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.7 |
|---|---|
| Target | 6.3 |
| Herbie | 7.7 |
Initial program 7.7
Final simplification7.7
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y z t a)
:name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
:precision binary64
:herbie-target
(if (< z -2.468684968699548e+170) (- (* (/ y a) x) (* (/ t a) z)) (if (< z 6.309831121978371e-71) (/ (- (* x y) (* z t)) a) (- (* (/ y a) x) (* (/ t a) z))))
(/ (- (* x y) (* z t)) a))