\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3} \le 2.6700920132462433 \cdot 10^{-124} \lor \neg \left(\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3} \le 1.88286256702668593 \cdot 10^{247}\right):\\
\;\;\;\;\frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3} + a1 \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3}\\
\end{array}double code(double a1, double a2, double a3, double a0, double a4) {
return ((double) (((double) (((double) (((double) (((double) (((double) (a1 * a2)) * a2)) - ((double) (((double) (a1 * a1)) * a3)))) + ((double) (((double) (a0 * a1)) * a4)))) - ((double) (((double) (a0 * a2)) * a3)))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3))))));
}
double code(double a1, double a2, double a3, double a0, double a4) {
double VAR;
if (((((double) (((double) (((double) (((double) (((double) (((double) (a1 * a2)) * a2)) - ((double) (((double) (a1 * a1)) * a3)))) + ((double) (((double) (a0 * a1)) * a4)))) - ((double) (((double) (a0 * a2)) * a3)))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3)))))) <= 2.6700920132462433e-124) || !(((double) (((double) (((double) (((double) (((double) (((double) (a1 * a2)) * a2)) - ((double) (((double) (a1 * a1)) * a3)))) + ((double) (((double) (a0 * a1)) * a4)))) - ((double) (((double) (a0 * a2)) * a3)))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3)))))) <= 1.882862567026686e+247))) {
VAR = ((double) (((double) (((double) (a0 * ((double) (((double) (a1 * a4)) - ((double) (a2 * a3)))))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3)))))) + ((double) (a1 * 1.0))));
} else {
VAR = ((double) (((double) (((double) (((double) (((double) (((double) (a1 * a2)) * a2)) - ((double) (((double) (a1 * a1)) * a3)))) + ((double) (((double) (a0 * a1)) * a4)))) - ((double) (((double) (a0 * a2)) * a3)))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3))))));
}
return VAR;
}



Bits error versus a1



Bits error versus a2



Bits error versus a3



Bits error versus a0



Bits error versus a4
Results
if (/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3))) < 2.6700920132462433e-124 or 1.88286256702668593e247 < (/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3))) Initial program 46.9
Simplified26.5
if 2.6700920132462433e-124 < (/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3))) < 1.88286256702668593e247Initial program 0.7
Final simplification22.4
herbie shell --seed 2020153
(FPCore (a1 a2 a3 a0 a4)
:name "(/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3)))"
:precision binary64
(/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3))))