\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{1}{1}}{\frac{\frac{2}{4} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{c}}double f(double a, double b, double c) {
double r31806 = b;
double r31807 = -r31806;
double r31808 = r31806 * r31806;
double r31809 = 4.0;
double r31810 = a;
double r31811 = r31809 * r31810;
double r31812 = c;
double r31813 = r31811 * r31812;
double r31814 = r31808 - r31813;
double r31815 = sqrt(r31814);
double r31816 = r31807 + r31815;
double r31817 = 2.0;
double r31818 = r31817 * r31810;
double r31819 = r31816 / r31818;
return r31819;
}
double f(double a, double b, double c) {
double r31820 = 1.0;
double r31821 = r31820 / r31820;
double r31822 = 2.0;
double r31823 = 4.0;
double r31824 = r31822 / r31823;
double r31825 = b;
double r31826 = -r31825;
double r31827 = r31825 * r31825;
double r31828 = a;
double r31829 = r31823 * r31828;
double r31830 = c;
double r31831 = r31829 * r31830;
double r31832 = r31827 - r31831;
double r31833 = sqrt(r31832);
double r31834 = r31826 - r31833;
double r31835 = r31824 * r31834;
double r31836 = r31835 / r31830;
double r31837 = r31821 / r31836;
return r31837;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.5
rmApplied flip-+43.6
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.5
Simplified0.5
rmApplied div-inv0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2020083
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))