\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.313033184082771095167859158207475942236 \cdot 10^{154}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 929319867835151.5:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(a \cdot \frac{c}{b}\right) - 2 \cdot b}\\
\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 r30568 = b;
double r30569 = 0.0;
bool r30570 = r30568 >= r30569;
double r30571 = 2.0;
double r30572 = c;
double r30573 = r30571 * r30572;
double r30574 = -r30568;
double r30575 = r30568 * r30568;
double r30576 = 4.0;
double r30577 = a;
double r30578 = r30576 * r30577;
double r30579 = r30578 * r30572;
double r30580 = r30575 - r30579;
double r30581 = sqrt(r30580);
double r30582 = r30574 - r30581;
double r30583 = r30573 / r30582;
double r30584 = r30574 + r30581;
double r30585 = r30571 * r30577;
double r30586 = r30584 / r30585;
double r30587 = r30570 ? r30583 : r30586;
return r30587;
}
double f(double a, double b, double c) {
double r30588 = b;
double r30589 = -1.3130331840827711e+154;
bool r30590 = r30588 <= r30589;
double r30591 = 0.0;
bool r30592 = r30588 >= r30591;
double r30593 = 2.0;
double r30594 = c;
double r30595 = r30593 * r30594;
double r30596 = -r30588;
double r30597 = r30588 * r30588;
double r30598 = 4.0;
double r30599 = a;
double r30600 = r30598 * r30599;
double r30601 = r30600 * r30594;
double r30602 = r30597 - r30601;
double r30603 = sqrt(r30602);
double r30604 = r30596 - r30603;
double r30605 = r30595 / r30604;
double r30606 = r30599 * r30594;
double r30607 = r30606 / r30588;
double r30608 = r30593 * r30607;
double r30609 = r30608 - r30588;
double r30610 = r30596 + r30609;
double r30611 = r30593 * r30599;
double r30612 = r30610 / r30611;
double r30613 = r30592 ? r30605 : r30612;
double r30614 = 929319867835151.5;
bool r30615 = r30588 <= r30614;
double r30616 = cbrt(r30602);
double r30617 = fabs(r30616);
double r30618 = sqrt(r30616);
double r30619 = r30617 * r30618;
double r30620 = r30596 - r30619;
double r30621 = r30595 / r30620;
double r30622 = r30596 + r30603;
double r30623 = r30622 / r30611;
double r30624 = r30592 ? r30621 : r30623;
double r30625 = r30594 / r30588;
double r30626 = r30599 * r30625;
double r30627 = r30593 * r30626;
double r30628 = 2.0;
double r30629 = r30628 * r30588;
double r30630 = r30627 - r30629;
double r30631 = r30595 / r30630;
double r30632 = r30592 ? r30631 : r30623;
double r30633 = r30615 ? r30624 : r30632;
double r30634 = r30590 ? r30613 : r30633;
return r30634;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3130331840827711e+154Initial program 64.0
Taylor expanded around -inf 11.5
if -1.3130331840827711e+154 < b < 929319867835151.5Initial program 9.4
rmApplied add-cube-cbrt9.6
Applied sqrt-prod9.6
Simplified9.6
if 929319867835151.5 < b Initial program 22.7
Taylor expanded around inf 8.2
rmApplied *-un-lft-identity8.2
Applied times-frac5.0
Simplified5.0
Final simplification8.4
herbie shell --seed 2019208
(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))))