\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 r815629 = x;
double r815630 = y;
double r815631 = r815629 * r815630;
double r815632 = z;
double r815633 = t;
double r815634 = r815632 * r815633;
double r815635 = r815631 - r815634;
double r815636 = a;
double r815637 = r815635 / r815636;
return r815637;
}
double f(double x, double y, double z, double t, double a) {
double r815638 = x;
double r815639 = y;
double r815640 = z;
double r815641 = t;
double r815642 = r815640 * r815641;
double r815643 = -r815642;
double r815644 = fma(r815638, r815639, r815643);
double r815645 = a;
double r815646 = r815644 / r815645;
return r815646;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 7.9 |
|---|---|
| Target | 6.0 |
| Herbie | 7.9 |
Initial program 7.9
rmApplied fma-neg7.9
Final simplification7.9
herbie shell --seed 2020047 +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))