\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 -4.05734525598461 \cdot 10^{150}:\\
\;\;\;\;\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 2.824222875658889 \cdot 10^{106}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 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 r36639 = b;
double r36640 = 0.0;
bool r36641 = r36639 >= r36640;
double r36642 = 2.0;
double r36643 = c;
double r36644 = r36642 * r36643;
double r36645 = -r36639;
double r36646 = r36639 * r36639;
double r36647 = 4.0;
double r36648 = a;
double r36649 = r36647 * r36648;
double r36650 = r36649 * r36643;
double r36651 = r36646 - r36650;
double r36652 = sqrt(r36651);
double r36653 = r36645 - r36652;
double r36654 = r36644 / r36653;
double r36655 = r36645 + r36652;
double r36656 = r36642 * r36648;
double r36657 = r36655 / r36656;
double r36658 = r36641 ? r36654 : r36657;
return r36658;
}
double f(double a, double b, double c) {
double r36659 = b;
double r36660 = -4.05734525598461e+150;
bool r36661 = r36659 <= r36660;
double r36662 = 0.0;
bool r36663 = r36659 >= r36662;
double r36664 = 2.0;
double r36665 = c;
double r36666 = r36664 * r36665;
double r36667 = -r36659;
double r36668 = r36659 * r36659;
double r36669 = 4.0;
double r36670 = a;
double r36671 = r36669 * r36670;
double r36672 = r36671 * r36665;
double r36673 = r36668 - r36672;
double r36674 = sqrt(r36673);
double r36675 = r36667 - r36674;
double r36676 = r36666 / r36675;
double r36677 = r36670 * r36665;
double r36678 = r36677 / r36659;
double r36679 = r36664 * r36678;
double r36680 = 2.0;
double r36681 = r36680 * r36659;
double r36682 = r36679 - r36681;
double r36683 = r36664 * r36670;
double r36684 = r36682 / r36683;
double r36685 = r36663 ? r36676 : r36684;
double r36686 = 2.8242228756588895e+106;
bool r36687 = r36659 <= r36686;
double r36688 = sqrt(r36674);
double r36689 = r36688 * r36688;
double r36690 = r36667 + r36689;
double r36691 = r36690 / r36683;
double r36692 = r36663 ? r36676 : r36691;
double r36693 = r36666 / r36682;
double r36694 = r36667 + r36674;
double r36695 = r36694 / r36683;
double r36696 = r36663 ? r36693 : r36695;
double r36697 = r36687 ? r36692 : r36696;
double r36698 = r36661 ? r36685 : r36697;
return r36698;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.05734525598461e+150Initial program 61.3
rmApplied add-sqr-sqrt61.3
Applied sqrt-prod61.3
Taylor expanded around -inf 11.3
if -4.05734525598461e+150 < b < 2.8242228756588895e+106Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 2.8242228756588895e+106 < b Initial program 30.5
Taylor expanded around inf 6.9
Final simplification8.7
herbie shell --seed 2020062
(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))))