\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}a1 + \frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3}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) {
return ((double) (a1 + ((double) (((double) (a0 * ((double) (((double) (a1 * a4)) - ((double) (a2 * a3)))))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3))))))));
}



Bits error versus a1



Bits error versus a2



Bits error versus a3



Bits error versus a0



Bits error versus a4
Results
Initial program 39.6
Simplified23.1
Final simplification23.1
herbie shell --seed 2020152
(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))))