\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 r553872 = x;
double r553873 = y;
double r553874 = r553872 * r553873;
double r553875 = z;
double r553876 = t;
double r553877 = r553875 * r553876;
double r553878 = r553874 - r553877;
double r553879 = a;
double r553880 = r553878 / r553879;
return r553880;
}
double f(double x, double y, double z, double t, double a) {
double r553881 = x;
double r553882 = y;
double r553883 = -r553882;
double r553884 = t;
double r553885 = z;
double r553886 = r553884 * r553885;
double r553887 = fma(r553881, r553883, r553886);
double r553888 = a;
double r553889 = -r553888;
double r553890 = r553887 / r553889;
return r553890;
}




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 frac-2neg7.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))