\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 r31548 = b;
double r31549 = -r31548;
double r31550 = r31548 * r31548;
double r31551 = 4.0;
double r31552 = a;
double r31553 = r31551 * r31552;
double r31554 = c;
double r31555 = r31553 * r31554;
double r31556 = r31550 - r31555;
double r31557 = sqrt(r31556);
double r31558 = r31549 + r31557;
double r31559 = 2.0;
double r31560 = r31559 * r31552;
double r31561 = r31558 / r31560;
return r31561;
}
double f(double a, double b, double c) {
double r31562 = 0.0;
double r31563 = 4.0;
double r31564 = a;
double r31565 = c;
double r31566 = r31564 * r31565;
double r31567 = r31563 * r31566;
double r31568 = r31562 + r31567;
double r31569 = 2.0;
double r31570 = r31569 * r31564;
double r31571 = b;
double r31572 = -r31571;
double r31573 = r31571 * r31571;
double r31574 = r31563 * r31564;
double r31575 = r31574 * r31565;
double r31576 = r31573 - r31575;
double r31577 = sqrt(r31576);
double r31578 = r31572 - r31577;
double r31579 = r31570 * r31578;
double r31580 = r31568 / r31579;
return r31580;
}



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)))