\frac{x \cdot y - z \cdot t}{a}\frac{\mathsf{fma}\left(x, y, -t \cdot z\right) + z \cdot \left(\left(-t\right) + t\right)}{a}double f(double x, double y, double z, double t, double a) {
double r554621 = x;
double r554622 = y;
double r554623 = r554621 * r554622;
double r554624 = z;
double r554625 = t;
double r554626 = r554624 * r554625;
double r554627 = r554623 - r554626;
double r554628 = a;
double r554629 = r554627 / r554628;
return r554629;
}
double f(double x, double y, double z, double t, double a) {
double r554630 = x;
double r554631 = y;
double r554632 = t;
double r554633 = z;
double r554634 = r554632 * r554633;
double r554635 = -r554634;
double r554636 = fma(r554630, r554631, r554635);
double r554637 = -r554632;
double r554638 = r554637 + r554632;
double r554639 = r554633 * r554638;
double r554640 = r554636 + r554639;
double r554641 = a;
double r554642 = r554640 / r554641;
return r554642;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




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