\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.597887911264436 \cdot 10^{131}:\\
\;\;\;\;\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 1.38600558623442774 \cdot 10^{112}:\\
\;\;\;\;\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{\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}}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\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 r32803 = b;
double r32804 = 0.0;
bool r32805 = r32803 >= r32804;
double r32806 = 2.0;
double r32807 = c;
double r32808 = r32806 * r32807;
double r32809 = -r32803;
double r32810 = r32803 * r32803;
double r32811 = 4.0;
double r32812 = a;
double r32813 = r32811 * r32812;
double r32814 = r32813 * r32807;
double r32815 = r32810 - r32814;
double r32816 = sqrt(r32815);
double r32817 = r32809 - r32816;
double r32818 = r32808 / r32817;
double r32819 = r32809 + r32816;
double r32820 = r32806 * r32812;
double r32821 = r32819 / r32820;
double r32822 = r32805 ? r32818 : r32821;
return r32822;
}
double f(double a, double b, double c) {
double r32823 = b;
double r32824 = -1.597887911264436e+131;
bool r32825 = r32823 <= r32824;
double r32826 = 0.0;
bool r32827 = r32823 >= r32826;
double r32828 = 2.0;
double r32829 = c;
double r32830 = r32828 * r32829;
double r32831 = -r32823;
double r32832 = r32823 * r32823;
double r32833 = 4.0;
double r32834 = a;
double r32835 = r32833 * r32834;
double r32836 = r32835 * r32829;
double r32837 = r32832 - r32836;
double r32838 = sqrt(r32837);
double r32839 = r32831 - r32838;
double r32840 = r32830 / r32839;
double r32841 = r32834 * r32829;
double r32842 = r32841 / r32823;
double r32843 = r32828 * r32842;
double r32844 = 2.0;
double r32845 = r32844 * r32823;
double r32846 = r32843 - r32845;
double r32847 = r32828 * r32834;
double r32848 = r32846 / r32847;
double r32849 = r32827 ? r32840 : r32848;
double r32850 = 1.3860055862344277e+112;
bool r32851 = r32823 <= r32850;
double r32852 = sqrt(r32838);
double r32853 = cbrt(r32837);
double r32854 = fabs(r32853);
double r32855 = sqrt(r32853);
double r32856 = r32854 * r32855;
double r32857 = sqrt(r32856);
double r32858 = r32852 * r32857;
double r32859 = r32831 + r32858;
double r32860 = r32859 / r32847;
double r32861 = r32827 ? r32840 : r32860;
double r32862 = r32823 - r32843;
double r32863 = r32831 - r32862;
double r32864 = r32830 / r32863;
double r32865 = r32831 + r32838;
double r32866 = r32865 / r32847;
double r32867 = r32827 ? r32864 : r32866;
double r32868 = r32851 ? r32861 : r32867;
double r32869 = r32825 ? r32849 : r32868;
return r32869;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.597887911264436e+131Initial program 57.0
rmApplied add-sqr-sqrt57.0
Applied sqrt-prod57.0
Taylor expanded around -inf 11.0
if -1.597887911264436e+131 < b < 1.3860055862344277e+112Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.3860055862344277e+112 < b Initial program 30.8
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2020081
(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))))