\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 -6.2188582860194007 \cdot 10^{53}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.56852622064957373 \cdot 10^{69}:\\
\;\;\;\;\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) + \left|\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{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}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \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}}}\\
\end{array}double f(double a, double b, double c) {
double r103 = b;
double r104 = 0.0;
bool r105 = r103 >= r104;
double r106 = -r103;
double r107 = r103 * r103;
double r108 = 4.0;
double r109 = a;
double r110 = r108 * r109;
double r111 = c;
double r112 = r110 * r111;
double r113 = r107 - r112;
double r114 = sqrt(r113);
double r115 = r106 - r114;
double r116 = 2.0;
double r117 = r116 * r109;
double r118 = r115 / r117;
double r119 = r116 * r111;
double r120 = r106 + r114;
double r121 = r119 / r120;
double r122 = r105 ? r118 : r121;
return r122;
}
double f(double a, double b, double c) {
double r123 = b;
double r124 = -6.218858286019401e+53;
bool r125 = r123 <= r124;
double r126 = 0.0;
bool r127 = r123 >= r126;
double r128 = -r123;
double r129 = r123 * r123;
double r130 = 4.0;
double r131 = a;
double r132 = r130 * r131;
double r133 = c;
double r134 = r132 * r133;
double r135 = r129 - r134;
double r136 = sqrt(r135);
double r137 = r128 - r136;
double r138 = 2.0;
double r139 = r138 * r131;
double r140 = r137 / r139;
double r141 = r138 * r133;
double r142 = r131 * r133;
double r143 = r142 / r123;
double r144 = r138 * r143;
double r145 = r144 - r123;
double r146 = r128 + r145;
double r147 = r141 / r146;
double r148 = r127 ? r140 : r147;
double r149 = 2.5685262206495737e+69;
bool r150 = r123 <= r149;
double r151 = cbrt(r136);
double r152 = r151 * r151;
double r153 = fabs(r152);
double r154 = cbrt(r135);
double r155 = sqrt(r154);
double r156 = r153 * r155;
double r157 = r128 + r156;
double r158 = r141 / r157;
double r159 = r127 ? r140 : r158;
double r160 = r123 - r144;
double r161 = r128 - r160;
double r162 = r161 / r139;
double r163 = fabs(r154);
double r164 = r163 * r155;
double r165 = r128 + r164;
double r166 = r141 / r165;
double r167 = r127 ? r162 : r166;
double r168 = r150 ? r159 : r167;
double r169 = r125 ? r148 : r168;
return r169;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.218858286019401e+53Initial program 24.8
Taylor expanded around -inf 7.3
if -6.218858286019401e+53 < b < 2.5685262206495737e+69Initial program 9.6
rmApplied add-cube-cbrt9.8
Applied sqrt-prod9.8
Simplified9.8
rmApplied add-sqr-sqrt9.8
Applied cbrt-prod9.9
if 2.5685262206495737e+69 < b Initial program 41.4
rmApplied add-cube-cbrt41.4
Applied sqrt-prod41.4
Simplified41.4
Taylor expanded around inf 11.0
Final simplification9.4
herbie shell --seed 2020025
(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)))))))