\begin{array}{l}
\mathbf{if}\;b \ge 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.3441037991607355 \cdot 10^{+154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.2036515185994908 \cdot 10^{+104}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right|} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r400253 = b;
double r400254 = 0.0;
bool r400255 = r400253 >= r400254;
double r400256 = 2.0;
double r400257 = c;
double r400258 = r400256 * r400257;
double r400259 = -r400253;
double r400260 = r400253 * r400253;
double r400261 = 4.0;
double r400262 = a;
double r400263 = r400261 * r400262;
double r400264 = r400263 * r400257;
double r400265 = r400260 - r400264;
double r400266 = sqrt(r400265);
double r400267 = r400259 - r400266;
double r400268 = r400258 / r400267;
double r400269 = r400259 + r400266;
double r400270 = r400256 * r400262;
double r400271 = r400269 / r400270;
double r400272 = r400255 ? r400268 : r400271;
return r400272;
}
double f(double a, double b, double c) {
double r400273 = b;
double r400274 = -1.3441037991607355e+154;
bool r400275 = r400273 <= r400274;
double r400276 = 0.0;
bool r400277 = r400273 >= r400276;
double r400278 = 2.0;
double r400279 = c;
double r400280 = r400278 * r400279;
double r400281 = -r400273;
double r400282 = r400273 * r400273;
double r400283 = 4.0;
double r400284 = a;
double r400285 = r400283 * r400284;
double r400286 = r400285 * r400279;
double r400287 = r400282 - r400286;
double r400288 = sqrt(r400287);
double r400289 = r400281 - r400288;
double r400290 = r400280 / r400289;
double r400291 = r400284 * r400279;
double r400292 = r400291 / r400273;
double r400293 = r400278 * r400292;
double r400294 = r400293 - r400273;
double r400295 = r400294 + r400281;
double r400296 = r400278 * r400284;
double r400297 = r400295 / r400296;
double r400298 = r400277 ? r400290 : r400297;
double r400299 = 2.2036515185994908e+104;
bool r400300 = r400273 <= r400299;
double r400301 = cbrt(r400287);
double r400302 = sqrt(r400301);
double r400303 = fabs(r400301);
double r400304 = r400302 * r400303;
double r400305 = sqrt(r400304);
double r400306 = sqrt(r400288);
double r400307 = r400305 * r400306;
double r400308 = r400281 - r400307;
double r400309 = r400280 / r400308;
double r400310 = r400288 + r400281;
double r400311 = r400310 / r400296;
double r400312 = r400277 ? r400309 : r400311;
double r400313 = r400292 - r400273;
double r400314 = r400278 * r400313;
double r400315 = r400280 / r400314;
double r400316 = r400277 ? r400315 : r400311;
double r400317 = r400300 ? r400312 : r400316;
double r400318 = r400275 ? r400298 : r400317;
return r400318;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3441037991607355e+154Initial program 60.9
Taylor expanded around -inf 8.9
if -1.3441037991607355e+154 < b < 2.2036515185994908e+104Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
Simplified8.8
if 2.2036515185994908e+104 < b Initial program 29.6
rmApplied add-sqr-sqrt29.6
Applied sqrt-prod29.6
Taylor expanded around inf 5.5
Simplified5.5
Final simplification8.0
herbie shell --seed 2019153
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))