\frac{x \cdot y - z \cdot t}{a}\frac{1}{a} \cdot \left(x \cdot y - z \cdot t\right)double f(double x, double y, double z, double t, double a) {
double r827187 = x;
double r827188 = y;
double r827189 = r827187 * r827188;
double r827190 = z;
double r827191 = t;
double r827192 = r827190 * r827191;
double r827193 = r827189 - r827192;
double r827194 = a;
double r827195 = r827193 / r827194;
return r827195;
}
double f(double x, double y, double z, double t, double a) {
double r827196 = 1.0;
double r827197 = a;
double r827198 = r827196 / r827197;
double r827199 = x;
double r827200 = y;
double r827201 = r827199 * r827200;
double r827202 = z;
double r827203 = t;
double r827204 = r827202 * r827203;
double r827205 = r827201 - r827204;
double r827206 = r827198 * r827205;
return r827206;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.5 |
|---|---|
| Target | 5.9 |
| Herbie | 7.6 |
Initial program 7.5
rmApplied pow17.5
rmApplied *-un-lft-identity7.5
Applied unpow-prod-down7.5
Applied associate-/l*7.8
Simplified7.8
rmApplied div-inv7.9
Applied associate-/r*7.7
Simplified7.7
rmApplied div-inv7.7
Simplified7.6
Final simplification7.6
herbie shell --seed 2020049
(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))