\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r31432 = b;
double r31433 = -r31432;
double r31434 = r31432 * r31432;
double r31435 = 4.0;
double r31436 = a;
double r31437 = r31435 * r31436;
double r31438 = c;
double r31439 = r31437 * r31438;
double r31440 = r31434 - r31439;
double r31441 = sqrt(r31440);
double r31442 = r31433 + r31441;
double r31443 = 2.0;
double r31444 = r31443 * r31436;
double r31445 = r31442 / r31444;
return r31445;
}
double f(double a, double b, double c) {
double r31446 = 0.0;
double r31447 = 4.0;
double r31448 = a;
double r31449 = c;
double r31450 = r31448 * r31449;
double r31451 = r31447 * r31450;
double r31452 = r31446 + r31451;
double r31453 = 2.0;
double r31454 = r31453 * r31448;
double r31455 = b;
double r31456 = -r31455;
double r31457 = r31455 * r31455;
double r31458 = r31447 * r31448;
double r31459 = r31458 * r31449;
double r31460 = r31457 - r31459;
double r31461 = sqrt(r31460);
double r31462 = r31456 - r31461;
double r31463 = r31454 * r31462;
double r31464 = r31452 / r31463;
return r31464;
}



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
Final simplification0.4
herbie shell --seed 2020060
(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)))