\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)} \cdot \frac{c \cdot \left(4 \cdot a\right)}{a}double f(double a, double b, double c) {
double r39539 = b;
double r39540 = -r39539;
double r39541 = r39539 * r39539;
double r39542 = 4.0;
double r39543 = a;
double r39544 = r39542 * r39543;
double r39545 = c;
double r39546 = r39544 * r39545;
double r39547 = r39541 - r39546;
double r39548 = sqrt(r39547);
double r39549 = r39540 + r39548;
double r39550 = 2.0;
double r39551 = r39550 * r39543;
double r39552 = r39549 / r39551;
return r39552;
}
double f(double a, double b, double c) {
double r39553 = 1.0;
double r39554 = 2.0;
double r39555 = b;
double r39556 = -r39555;
double r39557 = r39555 * r39555;
double r39558 = 4.0;
double r39559 = a;
double r39560 = r39558 * r39559;
double r39561 = c;
double r39562 = r39560 * r39561;
double r39563 = r39557 - r39562;
double r39564 = sqrt(r39563);
double r39565 = r39556 - r39564;
double r39566 = r39554 * r39565;
double r39567 = r39553 / r39566;
double r39568 = r39561 * r39560;
double r39569 = r39568 / r39559;
double r39570 = r39567 * r39569;
return r39570;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.6
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019325 +o rules:numerics
(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)))