\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 r41299 = b;
double r41300 = -r41299;
double r41301 = r41299 * r41299;
double r41302 = 4.0;
double r41303 = a;
double r41304 = r41302 * r41303;
double r41305 = c;
double r41306 = r41304 * r41305;
double r41307 = r41301 - r41306;
double r41308 = sqrt(r41307);
double r41309 = r41300 + r41308;
double r41310 = 2.0;
double r41311 = r41310 * r41303;
double r41312 = r41309 / r41311;
return r41312;
}
double f(double a, double b, double c) {
double r41313 = 2.0;
double r41314 = c;
double r41315 = r41313 * r41314;
double r41316 = b;
double r41317 = -r41316;
double r41318 = r41316 * r41316;
double r41319 = 4.0;
double r41320 = a;
double r41321 = r41319 * r41320;
double r41322 = r41321 * r41314;
double r41323 = r41318 - r41322;
double r41324 = sqrt(r41323);
double r41325 = r41317 - r41324;
double r41326 = r41315 / r41325;
return r41326;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
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 2019308
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))