\frac{x \cdot y - z \cdot t}{a}\frac{\mathsf{fma}\left(x, y, -t \cdot z\right)}{a}double f(double x, double y, double z, double t, double a) {
double r590672 = x;
double r590673 = y;
double r590674 = r590672 * r590673;
double r590675 = z;
double r590676 = t;
double r590677 = r590675 * r590676;
double r590678 = r590674 - r590677;
double r590679 = a;
double r590680 = r590678 / r590679;
return r590680;
}
double f(double x, double y, double z, double t, double a) {
double r590681 = x;
double r590682 = y;
double r590683 = t;
double r590684 = z;
double r590685 = r590683 * r590684;
double r590686 = -r590685;
double r590687 = fma(r590681, r590682, r590686);
double r590688 = a;
double r590689 = r590687 / r590688;
return r590689;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 7.3 |
|---|---|
| Target | 5.7 |
| Herbie | 7.3 |
Initial program 7.3
rmApplied prod-diff7.3
Simplified7.3
Final simplification7.3
herbie shell --seed 2019323 +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))