\frac{x \cdot y - z \cdot t}{a}\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}double f(double x, double y, double z, double t, double a) {
double r36777585 = x;
double r36777586 = y;
double r36777587 = r36777585 * r36777586;
double r36777588 = z;
double r36777589 = t;
double r36777590 = r36777588 * r36777589;
double r36777591 = r36777587 - r36777590;
double r36777592 = a;
double r36777593 = r36777591 / r36777592;
return r36777593;
}
double f(double x, double y, double z, double t, double a) {
double r36777594 = x;
double r36777595 = y;
double r36777596 = z;
double r36777597 = t;
double r36777598 = r36777596 * r36777597;
double r36777599 = -r36777598;
double r36777600 = fma(r36777594, r36777595, r36777599);
double r36777601 = a;
double r36777602 = r36777600 / r36777601;
return r36777602;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 7.3 |
|---|---|
| Target | 6.1 |
| Herbie | 7.3 |
Initial program 7.3
rmApplied fma-neg7.3
Final simplification7.3
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t a)
:name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
: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))