\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.39530753508131067 \cdot 10^{151}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\left(\sqrt[3]{\frac{a}{\frac{b}{c}}} \cdot \sqrt[3]{\frac{a}{\frac{b}{c}}}\right) \cdot \sqrt[3]{\frac{a}{\frac{b}{c}}}\right) - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le -5.50995912690988267 \cdot 10^{-302}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 8.4679895979154315 \cdot 10^{133}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(4 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r25524 = b;
double r25525 = 0.0;
bool r25526 = r25524 >= r25525;
double r25527 = 2.0;
double r25528 = c;
double r25529 = r25527 * r25528;
double r25530 = -r25524;
double r25531 = r25524 * r25524;
double r25532 = 4.0;
double r25533 = a;
double r25534 = r25532 * r25533;
double r25535 = r25534 * r25528;
double r25536 = r25531 - r25535;
double r25537 = sqrt(r25536);
double r25538 = r25530 - r25537;
double r25539 = r25529 / r25538;
double r25540 = r25530 + r25537;
double r25541 = r25527 * r25533;
double r25542 = r25540 / r25541;
double r25543 = r25526 ? r25539 : r25542;
return r25543;
}
double f(double a, double b, double c) {
double r25544 = b;
double r25545 = -1.3953075350813107e+151;
bool r25546 = r25544 <= r25545;
double r25547 = 0.0;
bool r25548 = r25544 >= r25547;
double r25549 = 2.0;
double r25550 = c;
double r25551 = r25549 * r25550;
double r25552 = -r25544;
double r25553 = r25544 * r25544;
double r25554 = 4.0;
double r25555 = a;
double r25556 = r25554 * r25555;
double r25557 = r25556 * r25550;
double r25558 = r25553 - r25557;
double r25559 = sqrt(r25558);
double r25560 = r25552 - r25559;
double r25561 = r25551 / r25560;
double r25562 = r25544 / r25550;
double r25563 = r25555 / r25562;
double r25564 = cbrt(r25563);
double r25565 = r25564 * r25564;
double r25566 = r25565 * r25564;
double r25567 = r25549 * r25566;
double r25568 = 2.0;
double r25569 = r25568 * r25544;
double r25570 = r25567 - r25569;
double r25571 = r25549 * r25555;
double r25572 = r25570 / r25571;
double r25573 = r25548 ? r25561 : r25572;
double r25574 = -5.509959126909883e-302;
bool r25575 = r25544 <= r25574;
double r25576 = r25555 * r25550;
double r25577 = r25576 / r25544;
double r25578 = r25549 * r25577;
double r25579 = r25544 - r25578;
double r25580 = r25552 - r25579;
double r25581 = r25551 / r25580;
double r25582 = r25552 + r25559;
double r25583 = r25582 / r25571;
double r25584 = r25548 ? r25581 : r25583;
double r25585 = 8.467989597915432e+133;
bool r25586 = r25544 <= r25585;
double r25587 = r25557 / r25560;
double r25588 = r25587 / r25571;
double r25589 = r25548 ? r25561 : r25588;
double r25590 = r25586 ? r25589 : r25584;
double r25591 = r25575 ? r25584 : r25590;
double r25592 = r25546 ? r25573 : r25591;
return r25592;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3953075350813107e+151Initial program 62.9
Taylor expanded around -inf 10.8
rmApplied associate-/l*2.0
rmApplied add-cube-cbrt2.0
if -1.3953075350813107e+151 < b < -5.509959126909883e-302 or 8.467989597915432e+133 < b Initial program 19.5
Taylor expanded around inf 8.4
if -5.509959126909883e-302 < b < 8.467989597915432e+133Initial program 8.8
rmApplied flip-+8.8
Simplified8.8
Final simplification7.8
herbie shell --seed 2020034
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))