\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.00655881829761357 \cdot 10^{145}:\\
\;\;\;\;\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 \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.402171051432718 \cdot 10^{122}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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 \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{{b}^{\frac{1}{2}}}\right)\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 r37560 = b;
double r37561 = 0.0;
bool r37562 = r37560 >= r37561;
double r37563 = 2.0;
double r37564 = c;
double r37565 = r37563 * r37564;
double r37566 = -r37560;
double r37567 = r37560 * r37560;
double r37568 = 4.0;
double r37569 = a;
double r37570 = r37568 * r37569;
double r37571 = r37570 * r37564;
double r37572 = r37567 - r37571;
double r37573 = sqrt(r37572);
double r37574 = r37566 - r37573;
double r37575 = r37565 / r37574;
double r37576 = r37566 + r37573;
double r37577 = r37563 * r37569;
double r37578 = r37576 / r37577;
double r37579 = r37562 ? r37575 : r37578;
return r37579;
}
double f(double a, double b, double c) {
double r37580 = b;
double r37581 = -1.0065588182976136e+145;
bool r37582 = r37580 <= r37581;
double r37583 = 0.0;
bool r37584 = r37580 >= r37583;
double r37585 = 2.0;
double r37586 = c;
double r37587 = r37585 * r37586;
double r37588 = -r37580;
double r37589 = r37580 * r37580;
double r37590 = 4.0;
double r37591 = a;
double r37592 = r37590 * r37591;
double r37593 = r37592 * r37586;
double r37594 = r37589 - r37593;
double r37595 = sqrt(r37594);
double r37596 = r37588 - r37595;
double r37597 = r37587 / r37596;
double r37598 = r37591 * r37586;
double r37599 = r37598 / r37580;
double r37600 = r37585 * r37599;
double r37601 = 2.0;
double r37602 = r37601 * r37580;
double r37603 = r37600 - r37602;
double r37604 = r37585 * r37591;
double r37605 = r37603 / r37604;
double r37606 = r37584 ? r37597 : r37605;
double r37607 = 4.402171051432718e+122;
bool r37608 = r37580 <= r37607;
double r37609 = sqrt(r37595);
double r37610 = r37609 * r37609;
double r37611 = r37588 + r37610;
double r37612 = r37611 / r37604;
double r37613 = r37584 ? r37597 : r37612;
double r37614 = sqrt(r37580);
double r37615 = r37591 / r37614;
double r37616 = 0.5;
double r37617 = pow(r37580, r37616);
double r37618 = r37586 / r37617;
double r37619 = r37615 * r37618;
double r37620 = r37585 * r37619;
double r37621 = r37580 - r37620;
double r37622 = r37588 - r37621;
double r37623 = r37587 / r37622;
double r37624 = r37588 + r37595;
double r37625 = r37624 / r37604;
double r37626 = r37584 ? r37623 : r37625;
double r37627 = r37608 ? r37613 : r37626;
double r37628 = r37582 ? r37606 : r37627;
return r37628;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0065588182976136e+145Initial program 61.2
Taylor expanded around -inf 11.9
if -1.0065588182976136e+145 < b < 4.402171051432718e+122Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.6
if 4.402171051432718e+122 < b Initial program 32.7
Taylor expanded around inf 6.1
rmApplied add-sqr-sqrt6.1
Applied times-frac2.1
Simplified2.1
Final simplification7.6
herbie shell --seed 2020036
(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))))