\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\left(4 \cdot a\right) \cdot c}{-\left(\left(a \cdot 2\right) \cdot \sqrt{\sqrt[3]{{\left({b}^{2} - 4 \cdot \left(a \cdot c\right)\right)}^{3}}} + \left(a \cdot 2\right) \cdot b\right)}double f(double a, double b, double c) {
double r41563 = b;
double r41564 = -r41563;
double r41565 = r41563 * r41563;
double r41566 = 4.0;
double r41567 = a;
double r41568 = r41566 * r41567;
double r41569 = c;
double r41570 = r41568 * r41569;
double r41571 = r41565 - r41570;
double r41572 = sqrt(r41571);
double r41573 = r41564 + r41572;
double r41574 = 2.0;
double r41575 = r41574 * r41567;
double r41576 = r41573 / r41575;
return r41576;
}
double f(double a, double b, double c) {
double r41577 = 4.0;
double r41578 = a;
double r41579 = r41577 * r41578;
double r41580 = c;
double r41581 = r41579 * r41580;
double r41582 = 2.0;
double r41583 = r41578 * r41582;
double r41584 = b;
double r41585 = 2.0;
double r41586 = pow(r41584, r41585);
double r41587 = r41578 * r41580;
double r41588 = r41577 * r41587;
double r41589 = r41586 - r41588;
double r41590 = 3.0;
double r41591 = pow(r41589, r41590);
double r41592 = cbrt(r41591);
double r41593 = sqrt(r41592);
double r41594 = r41583 * r41593;
double r41595 = r41583 * r41584;
double r41596 = r41594 + r41595;
double r41597 = -r41596;
double r41598 = r41581 / r41597;
return r41598;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.4
rmApplied flip-+28.4
Simplified0.5
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.4
rmApplied add-cbrt-cube0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019208
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))