\frac{x \cdot y - z \cdot t}{a}\frac{{\left(x \cdot y - z \cdot t\right)}^{1}}{a}double f(double x, double y, double z, double t, double a) {
double r550295 = x;
double r550296 = y;
double r550297 = r550295 * r550296;
double r550298 = z;
double r550299 = t;
double r550300 = r550298 * r550299;
double r550301 = r550297 - r550300;
double r550302 = a;
double r550303 = r550301 / r550302;
return r550303;
}
double f(double x, double y, double z, double t, double a) {
double r550304 = x;
double r550305 = y;
double r550306 = r550304 * r550305;
double r550307 = z;
double r550308 = t;
double r550309 = r550307 * r550308;
double r550310 = r550306 - r550309;
double r550311 = 1.0;
double r550312 = pow(r550310, r550311);
double r550313 = a;
double r550314 = r550312 / r550313;
return r550314;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.8 |
|---|---|
| Target | 5.8 |
| Herbie | 7.8 |
Initial program 7.8
rmApplied pow17.8
Final simplification7.8
herbie shell --seed 2019303
(FPCore (x y z t a)
:name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
:precision binary64
:herbie-target
(if (< z -2.46868496869954822e170) (- (* (/ y a) x) (* (/ t a) z)) (if (< z 6.30983112197837121e-71) (/ (- (* x y) (* z t)) a) (- (* (/ y a) x) (* (/ t a) z))))
(/ (- (* x y) (* z t)) a))