\frac{x \cdot y - z \cdot t}{a}\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot t \le -3.1759666608905339 \cdot 10^{152} \lor \neg \left(x \cdot y - z \cdot t \le 4.045438151205097 \cdot 10^{152}\right):\\
\;\;\;\;\frac{x \cdot y}{a} - \frac{t}{\frac{a}{z}}\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot y - z \cdot t\right) \cdot \frac{1}{a}\\
\end{array}double code(double x, double y, double z, double t, double a) {
return ((double) (((double) (((double) (x * y)) - ((double) (z * t)))) / a));
}
double code(double x, double y, double z, double t, double a) {
double VAR;
if (((((double) (((double) (x * y)) - ((double) (z * t)))) <= -3.175966660890534e+152) || !(((double) (((double) (x * y)) - ((double) (z * t)))) <= 4.045438151205097e+152))) {
VAR = ((double) (((double) (((double) (x * y)) / a)) - ((double) (t / ((double) (a / z))))));
} else {
VAR = ((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (1.0 / a))));
}
return VAR;
}




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 | 6.0 |
| Herbie | 4.9 |
if (- (* x y) (* z t)) < -3.1759666608905339e152 or 4.045438151205097e152 < (- (* x y) (* z t)) Initial program 20.3
rmApplied div-sub20.3
Simplified20.3
rmApplied associate-/l*12.4
if -3.1759666608905339e152 < (- (* x y) (* z t)) < 4.045438151205097e152Initial program 1.0
rmApplied div-inv1.1
Final simplification4.9
herbie shell --seed 2020171
(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))