\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.204149651109244671037537951320463168697 \cdot 10^{105}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + \left(4 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.112548483872930282376646755087531588032 \cdot 10^{99}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r61529 = b;
double r61530 = 0.0;
bool r61531 = r61529 >= r61530;
double r61532 = -r61529;
double r61533 = r61529 * r61529;
double r61534 = 4.0;
double r61535 = a;
double r61536 = r61534 * r61535;
double r61537 = c;
double r61538 = r61536 * r61537;
double r61539 = r61533 - r61538;
double r61540 = sqrt(r61539);
double r61541 = r61532 - r61540;
double r61542 = 2.0;
double r61543 = r61542 * r61535;
double r61544 = r61541 / r61543;
double r61545 = r61542 * r61537;
double r61546 = r61532 + r61540;
double r61547 = r61545 / r61546;
double r61548 = r61531 ? r61544 : r61547;
return r61548;
}
double f(double a, double b, double c) {
double r61549 = b;
double r61550 = -4.2041496511092447e+105;
bool r61551 = r61549 <= r61550;
double r61552 = 0.0;
bool r61553 = r61549 >= r61552;
double r61554 = 2.0;
double r61555 = pow(r61549, r61554);
double r61556 = r61555 - r61555;
double r61557 = 4.0;
double r61558 = a;
double r61559 = r61557 * r61558;
double r61560 = c;
double r61561 = r61559 * r61560;
double r61562 = r61556 + r61561;
double r61563 = r61549 * r61549;
double r61564 = r61563 - r61561;
double r61565 = sqrt(r61564);
double r61566 = r61565 - r61549;
double r61567 = r61562 / r61566;
double r61568 = 2.0;
double r61569 = r61568 * r61558;
double r61570 = r61567 / r61569;
double r61571 = r61568 * r61560;
double r61572 = -r61549;
double r61573 = cbrt(r61549);
double r61574 = r61573 * r61573;
double r61575 = r61558 / r61574;
double r61576 = r61560 / r61573;
double r61577 = r61575 * r61576;
double r61578 = r61568 * r61577;
double r61579 = r61578 - r61549;
double r61580 = r61572 + r61579;
double r61581 = r61571 / r61580;
double r61582 = r61553 ? r61570 : r61581;
double r61583 = 1.1125484838729303e+99;
bool r61584 = r61549 <= r61583;
double r61585 = r61572 - r61565;
double r61586 = r61585 / r61569;
double r61587 = sqrt(r61565);
double r61588 = r61587 * r61587;
double r61589 = r61572 + r61588;
double r61590 = r61571 / r61589;
double r61591 = r61553 ? r61586 : r61590;
double r61592 = r61558 * r61560;
double r61593 = r61592 / r61549;
double r61594 = r61568 * r61593;
double r61595 = r61549 - r61594;
double r61596 = r61572 - r61595;
double r61597 = r61596 / r61569;
double r61598 = r61572 + r61565;
double r61599 = r61571 / r61598;
double r61600 = r61553 ? r61597 : r61599;
double r61601 = r61584 ? r61591 : r61600;
double r61602 = r61551 ? r61582 : r61601;
return r61602;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2041496511092447e+105Initial program 29.9
Taylor expanded around -inf 6.9
rmApplied add-cube-cbrt6.9
Applied times-frac2.7
rmApplied flip--2.7
Simplified2.7
Simplified2.7
if -4.2041496511092447e+105 < b < 1.1125484838729303e+99Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 1.1125484838729303e+99 < b Initial program 47.2
Taylor expanded around inf 10.1
Final simplification7.9
herbie shell --seed 2019353
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))