\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 -4.204149651109244671037537951320463168697 \cdot 10^{105}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + \left(4 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{\sqrt[3]{c} \cdot \sqrt[3]{c}}{\sqrt[3]{\sqrt[3]{b}} \cdot \sqrt[3]{\sqrt[3]{b}}}\right) \cdot \frac{\sqrt[3]{c}}{\sqrt[3]{\sqrt[3]{b}}}\right) - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.112548483872930282376646755087531588032 \cdot 10^{99}:\\
\;\;\;\;\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 r54229 = b;
double r54230 = 0.0;
bool r54231 = r54229 >= r54230;
double r54232 = -r54229;
double r54233 = r54229 * r54229;
double r54234 = 4.0;
double r54235 = a;
double r54236 = r54234 * r54235;
double r54237 = c;
double r54238 = r54236 * r54237;
double r54239 = r54233 - r54238;
double r54240 = sqrt(r54239);
double r54241 = r54232 - r54240;
double r54242 = 2.0;
double r54243 = r54242 * r54235;
double r54244 = r54241 / r54243;
double r54245 = r54242 * r54237;
double r54246 = r54232 + r54240;
double r54247 = r54245 / r54246;
double r54248 = r54231 ? r54244 : r54247;
return r54248;
}
double f(double a, double b, double c) {
double r54249 = b;
double r54250 = -4.2041496511092447e+105;
bool r54251 = r54249 <= r54250;
double r54252 = 0.0;
bool r54253 = r54249 >= r54252;
double r54254 = 2.0;
double r54255 = pow(r54249, r54254);
double r54256 = r54255 - r54255;
double r54257 = 4.0;
double r54258 = a;
double r54259 = r54257 * r54258;
double r54260 = c;
double r54261 = r54259 * r54260;
double r54262 = r54256 + r54261;
double r54263 = r54249 * r54249;
double r54264 = r54263 - r54261;
double r54265 = sqrt(r54264);
double r54266 = r54265 - r54249;
double r54267 = r54262 / r54266;
double r54268 = 2.0;
double r54269 = r54268 * r54258;
double r54270 = r54267 / r54269;
double r54271 = r54268 * r54260;
double r54272 = cbrt(r54249);
double r54273 = r54272 * r54272;
double r54274 = r54258 / r54273;
double r54275 = cbrt(r54260);
double r54276 = r54275 * r54275;
double r54277 = cbrt(r54272);
double r54278 = r54277 * r54277;
double r54279 = r54276 / r54278;
double r54280 = r54274 * r54279;
double r54281 = r54275 / r54277;
double r54282 = r54280 * r54281;
double r54283 = r54268 * r54282;
double r54284 = r54254 * r54249;
double r54285 = r54283 - r54284;
double r54286 = r54271 / r54285;
double r54287 = r54253 ? r54270 : r54286;
double r54288 = 1.1125484838729303e+99;
bool r54289 = r54249 <= r54288;
double r54290 = -r54249;
double r54291 = r54290 - r54265;
double r54292 = r54291 / r54269;
double r54293 = sqrt(r54265);
double r54294 = r54293 * r54293;
double r54295 = r54290 + r54294;
double r54296 = r54271 / r54295;
double r54297 = r54253 ? r54292 : r54296;
double r54298 = r54258 * r54260;
double r54299 = r54298 / r54249;
double r54300 = r54268 * r54299;
double r54301 = r54300 - r54284;
double r54302 = r54301 / r54269;
double r54303 = r54290 + r54265;
double r54304 = r54271 / r54303;
double r54305 = r54253 ? r54302 : r54304;
double r54306 = r54289 ? r54297 : r54305;
double r54307 = r54251 ? r54287 : r54306;
return r54307;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2041496511092447e+105Initial program 29.9
Taylor expanded around -inf 6.9
rmApplied add-cube-cbrt6.9
Applied times-frac2.7
rmApplied add-cube-cbrt2.7
Applied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*r*2.7
rmApplied flip--2.7
Simplified2.7
Simplified2.7
if -4.2041496511092447e+105 < b < 1.1125484838729303e+99Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 1.1125484838729303e+99 < b Initial program 47.2
Taylor expanded around inf 10.1
Final simplification7.9
herbie shell --seed 2019353
(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)))))))