\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w
\begin{array}{l}
\mathbf{if}\;\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w = -inf.0 \lor \neg \left(\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w \le -3.0863394663857411 \cdot 10^{-261} \lor \neg \left(\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w \le 5.5686220451728958 \cdot 10^{-247} \lor \neg \left(\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w \le 8.1337808913498459 \cdot 10^{266}\right)\right)\right):\\
\;\;\;\;\left(b \cdot a\right) \cdot \left(x \cdot y - z \cdot w\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(a \cdot x\right) \cdot b\right) \cdot y - \left(\left(a \cdot z\right) \cdot b\right) \cdot w\\
\end{array}double code(double a, double x, double b, double y, double z, double w) {
return ((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w))));
}
double code(double a, double x, double b, double y, double z, double w) {
double VAR;
if (((((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w)))) <= -inf.0) || !((((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w)))) <= -3.086339466385741e-261) || !((((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w)))) <= 5.568622045172896e-247) || !(((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w)))) <= 8.133780891349846e+266))))) {
VAR = ((double) (((double) (b * a)) * ((double) (((double) (x * y)) - ((double) (z * w))))));
} else {
VAR = ((double) (((double) (((double) (((double) (a * x)) * b)) * y)) - ((double) (((double) (((double) (a * z)) * b)) * w))));
}
return VAR;
}



Bits error versus a



Bits error versus x



Bits error versus b



Bits error versus y



Bits error versus z



Bits error versus w
Results
if (- (* (* (* a x) b) y) (* (* (* a z) b) w)) < -inf.0 or -3.0863394663857411e-261 < (- (* (* (* a x) b) y) (* (* (* a z) b) w)) < 5.5686220451728958e-247 or 8.1337808913498459e266 < (- (* (* (* a x) b) y) (* (* (* a z) b) w)) Initial program 35.1
Simplified11.4
if -inf.0 < (- (* (* (* a x) b) y) (* (* (* a z) b) w)) < -3.0863394663857411e-261 or 5.5686220451728958e-247 < (- (* (* (* a x) b) y) (* (* (* a z) b) w)) < 8.1337808913498459e266Initial program 2.3
Final simplification5.8
herbie shell --seed 2020153
(FPCore (a x b y z w)
:name "(- (* (* (* a x) b) y) (* (* (* a z) b) w))"
:precision binary64
(- (* (* (* a x) b) y) (* (* (* a z) b) w)))