\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{\frac{4 \cdot \left(a \cdot c\right)}{2}}{a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r38481 = b;
double r38482 = -r38481;
double r38483 = r38481 * r38481;
double r38484 = 4.0;
double r38485 = a;
double r38486 = r38484 * r38485;
double r38487 = c;
double r38488 = r38486 * r38487;
double r38489 = r38483 - r38488;
double r38490 = sqrt(r38489);
double r38491 = r38482 + r38490;
double r38492 = 2.0;
double r38493 = r38492 * r38485;
double r38494 = r38491 / r38493;
return r38494;
}
double f(double a, double b, double c) {
double r38495 = 4.0;
double r38496 = a;
double r38497 = c;
double r38498 = r38496 * r38497;
double r38499 = r38495 * r38498;
double r38500 = 2.0;
double r38501 = r38499 / r38500;
double r38502 = r38501 / r38496;
double r38503 = b;
double r38504 = -r38503;
double r38505 = r38503 * r38503;
double r38506 = r38495 * r38496;
double r38507 = r38506 * r38497;
double r38508 = r38505 - r38507;
double r38509 = sqrt(r38508);
double r38510 = r38504 - r38509;
double r38511 = r38502 / r38510;
return r38511;
}



Bits error versus a



Bits error versus b



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