\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.33861703157570726 \cdot 10^{154}:\\
\;\;\;\;\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 1.77017414835012383 \cdot 10^{70}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \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}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}}{\sqrt[3]{\sqrt[3]{b}} \cdot \sqrt[3]{\sqrt[3]{b}}} \cdot \frac{c}{\sqrt[3]{\sqrt[3]{b}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \frac{\sqrt{{\left(b \cdot b\right)}^{3} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}}{\sqrt{\left(b \cdot b\right) \cdot \left(b \cdot b\right) + \left(\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right) + \left(b \cdot b\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right)\right)}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r115 = b;
double r116 = 0.0;
bool r117 = r115 >= r116;
double r118 = 2.0;
double r119 = c;
double r120 = r118 * r119;
double r121 = -r115;
double r122 = r115 * r115;
double r123 = 4.0;
double r124 = a;
double r125 = r123 * r124;
double r126 = r125 * r119;
double r127 = r122 - r126;
double r128 = sqrt(r127);
double r129 = r121 - r128;
double r130 = r120 / r129;
double r131 = r121 + r128;
double r132 = r118 * r124;
double r133 = r131 / r132;
double r134 = r117 ? r130 : r133;
return r134;
}
double f(double a, double b, double c) {
double r135 = b;
double r136 = -1.3386170315757073e+154;
bool r137 = r135 <= r136;
double r138 = 0.0;
bool r139 = r135 >= r138;
double r140 = 2.0;
double r141 = c;
double r142 = r140 * r141;
double r143 = -r135;
double r144 = r135 * r135;
double r145 = 4.0;
double r146 = a;
double r147 = r145 * r146;
double r148 = r147 * r141;
double r149 = r144 - r148;
double r150 = sqrt(r149);
double r151 = r143 - r150;
double r152 = r142 / r151;
double r153 = r146 * r141;
double r154 = r153 / r135;
double r155 = r140 * r154;
double r156 = r155 - r135;
double r157 = r143 + r156;
double r158 = r140 * r146;
double r159 = r157 / r158;
double r160 = r139 ? r152 : r159;
double r161 = 1.7701741483501238e+70;
bool r162 = r135 <= r161;
double r163 = cbrt(r149);
double r164 = fabs(r163);
double r165 = sqrt(r163);
double r166 = r164 * r165;
double r167 = r143 - r166;
double r168 = r142 / r167;
double r169 = r143 + r150;
double r170 = r169 / r158;
double r171 = r139 ? r168 : r170;
double r172 = cbrt(r135);
double r173 = r172 * r172;
double r174 = r146 / r173;
double r175 = cbrt(r172);
double r176 = r175 * r175;
double r177 = r174 / r176;
double r178 = r141 / r175;
double r179 = r177 * r178;
double r180 = r140 * r179;
double r181 = r135 - r180;
double r182 = r143 - r181;
double r183 = r142 / r182;
double r184 = 3.0;
double r185 = pow(r144, r184);
double r186 = pow(r148, r184);
double r187 = r185 - r186;
double r188 = sqrt(r187);
double r189 = r144 * r144;
double r190 = r148 * r148;
double r191 = r144 * r148;
double r192 = r190 + r191;
double r193 = r189 + r192;
double r194 = sqrt(r193);
double r195 = r188 / r194;
double r196 = r143 + r195;
double r197 = r196 / r158;
double r198 = r139 ? r183 : r197;
double r199 = r162 ? r171 : r198;
double r200 = r137 ? r160 : r199;
return r200;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3386170315757073e+154Initial program 64.0
Taylor expanded around -inf 11.6
if -1.3386170315757073e+154 < b < 1.7701741483501238e+70Initial program 9.0
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 1.7701741483501238e+70 < b Initial program 27.6
Taylor expanded around inf 7.2
rmApplied add-cube-cbrt7.2
Applied times-frac3.7
rmApplied add-cube-cbrt3.7
Applied *-un-lft-identity3.7
Applied times-frac3.7
Applied associate-*r*3.7
Simplified3.7
rmApplied flip3--3.7
Applied sqrt-div3.7
Final simplification8.0
herbie shell --seed 2020025
(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))))