\frac{x \cdot y - z \cdot t}{a}\left(x \cdot y - z \cdot t\right) \cdot \frac{1}{a}double f(double x, double y, double z, double t, double a) {
double r899084 = x;
double r899085 = y;
double r899086 = r899084 * r899085;
double r899087 = z;
double r899088 = t;
double r899089 = r899087 * r899088;
double r899090 = r899086 - r899089;
double r899091 = a;
double r899092 = r899090 / r899091;
return r899092;
}
double f(double x, double y, double z, double t, double a) {
double r899093 = x;
double r899094 = y;
double r899095 = r899093 * r899094;
double r899096 = z;
double r899097 = t;
double r899098 = r899096 * r899097;
double r899099 = r899095 - r899098;
double r899100 = 1.0;
double r899101 = a;
double r899102 = r899100 / r899101;
double r899103 = r899099 * r899102;
return r899103;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.6 |
|---|---|
| Target | 5.9 |
| Herbie | 7.7 |
Initial program 7.6
rmApplied *-un-lft-identity7.6
Applied *-un-lft-identity7.6
Applied times-frac7.6
Simplified7.6
rmApplied div-inv7.7
Final simplification7.7
herbie shell --seed 2019353
(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))