\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r29813 = b;
double r29814 = -r29813;
double r29815 = r29813 * r29813;
double r29816 = 4.0;
double r29817 = a;
double r29818 = r29816 * r29817;
double r29819 = c;
double r29820 = r29818 * r29819;
double r29821 = r29815 - r29820;
double r29822 = sqrt(r29821);
double r29823 = r29814 + r29822;
double r29824 = 2.0;
double r29825 = r29824 * r29817;
double r29826 = r29823 / r29825;
return r29826;
}
double f(double a, double b, double c) {
double r29827 = 2.0;
double r29828 = c;
double r29829 = r29827 * r29828;
double r29830 = b;
double r29831 = -r29830;
double r29832 = r29830 * r29830;
double r29833 = 4.0;
double r29834 = a;
double r29835 = r29833 * r29834;
double r29836 = r29835 * r29828;
double r29837 = r29832 - r29836;
double r29838 = sqrt(r29837);
double r29839 = r29831 - r29838;
double r29840 = r29829 / r29839;
return r29840;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.8
rmApplied flip-+43.8
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
rmApplied associate-/r*0.2
Simplified0.2
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2019351
(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)))