\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 -1.8858229491725349 \cdot 10^{86}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.42999718571120756 \cdot 10^{88}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r44751 = b;
double r44752 = 0.0;
bool r44753 = r44751 >= r44752;
double r44754 = -r44751;
double r44755 = r44751 * r44751;
double r44756 = 4.0;
double r44757 = a;
double r44758 = r44756 * r44757;
double r44759 = c;
double r44760 = r44758 * r44759;
double r44761 = r44755 - r44760;
double r44762 = sqrt(r44761);
double r44763 = r44754 - r44762;
double r44764 = 2.0;
double r44765 = r44764 * r44757;
double r44766 = r44763 / r44765;
double r44767 = r44764 * r44759;
double r44768 = r44754 + r44762;
double r44769 = r44767 / r44768;
double r44770 = r44753 ? r44766 : r44769;
return r44770;
}
double f(double a, double b, double c) {
double r44771 = b;
double r44772 = -1.885822949172535e+86;
bool r44773 = r44771 <= r44772;
double r44774 = 0.0;
bool r44775 = r44771 >= r44774;
double r44776 = -r44771;
double r44777 = r44771 * r44771;
double r44778 = 4.0;
double r44779 = a;
double r44780 = r44778 * r44779;
double r44781 = c;
double r44782 = r44780 * r44781;
double r44783 = r44777 - r44782;
double r44784 = sqrt(r44783);
double r44785 = r44776 - r44784;
double r44786 = 2.0;
double r44787 = r44786 * r44779;
double r44788 = r44785 / r44787;
double r44789 = r44786 * r44781;
double r44790 = r44779 * r44781;
double r44791 = r44790 / r44771;
double r44792 = r44786 * r44791;
double r44793 = 2.0;
double r44794 = r44793 * r44771;
double r44795 = r44792 - r44794;
double r44796 = r44789 / r44795;
double r44797 = r44775 ? r44788 : r44796;
double r44798 = 1.4299971857112076e+88;
bool r44799 = r44771 <= r44798;
double r44800 = sqrt(r44784);
double r44801 = r44800 * r44800;
double r44802 = r44776 + r44801;
double r44803 = r44789 / r44802;
double r44804 = r44775 ? r44788 : r44803;
double r44805 = r44795 / r44787;
double r44806 = r44776 + r44784;
double r44807 = r44789 / r44806;
double r44808 = r44775 ? r44805 : r44807;
double r44809 = r44799 ? r44804 : r44808;
double r44810 = r44773 ? r44797 : r44809;
return r44810;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.885822949172535e+86Initial program 29.6
Taylor expanded around -inf 6.8
if -1.885822949172535e+86 < b < 1.4299971857112076e+88Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.4299971857112076e+88 < b Initial program 45.2
Taylor expanded around inf 10.1
Final simplification8.7
herbie shell --seed 2020042
(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)))))))