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



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.05734525598461e+150Initial program 61.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))))