\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 -1.290694061730984065554897075384835267389 \cdot 10^{154}:\\
\;\;\;\;\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{c \cdot 2}{\left(-b\right) + \left(\frac{2 \cdot a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\
\;\;\;\;\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{c \cdot 2}{\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| + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r36271 = b;
double r36272 = 0.0;
bool r36273 = r36271 >= r36272;
double r36274 = -r36271;
double r36275 = r36271 * r36271;
double r36276 = 4.0;
double r36277 = a;
double r36278 = r36276 * r36277;
double r36279 = c;
double r36280 = r36278 * r36279;
double r36281 = r36275 - r36280;
double r36282 = sqrt(r36281);
double r36283 = r36274 - r36282;
double r36284 = 2.0;
double r36285 = r36284 * r36277;
double r36286 = r36283 / r36285;
double r36287 = r36284 * r36279;
double r36288 = r36274 + r36282;
double r36289 = r36287 / r36288;
double r36290 = r36273 ? r36286 : r36289;
return r36290;
}
double f(double a, double b, double c) {
double r36291 = b;
double r36292 = -1.290694061730984e+154;
bool r36293 = r36291 <= r36292;
double r36294 = 0.0;
bool r36295 = r36291 >= r36294;
double r36296 = -r36291;
double r36297 = r36291 * r36291;
double r36298 = 4.0;
double r36299 = a;
double r36300 = r36298 * r36299;
double r36301 = c;
double r36302 = r36300 * r36301;
double r36303 = r36297 - r36302;
double r36304 = sqrt(r36303);
double r36305 = r36296 - r36304;
double r36306 = 2.0;
double r36307 = r36306 * r36299;
double r36308 = r36305 / r36307;
double r36309 = r36301 * r36306;
double r36310 = r36291 / r36301;
double r36311 = r36307 / r36310;
double r36312 = r36311 - r36291;
double r36313 = r36296 + r36312;
double r36314 = r36309 / r36313;
double r36315 = r36295 ? r36308 : r36314;
double r36316 = 3.628799960716312e+50;
bool r36317 = r36291 <= r36316;
double r36318 = cbrt(r36303);
double r36319 = sqrt(r36318);
double r36320 = fabs(r36318);
double r36321 = r36319 * r36320;
double r36322 = r36321 + r36296;
double r36323 = r36309 / r36322;
double r36324 = r36295 ? r36308 : r36323;
double r36325 = r36291 - r36311;
double r36326 = r36296 - r36325;
double r36327 = r36326 / r36307;
double r36328 = r36304 + r36296;
double r36329 = r36309 / r36328;
double r36330 = r36295 ? r36327 : r36329;
double r36331 = r36317 ? r36324 : r36330;
double r36332 = r36293 ? r36315 : r36331;
return r36332;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.290694061730984e+154Initial program 37.9
Taylor expanded around -inf 6.0
Simplified1.2
if -1.290694061730984e+154 < b < 3.628799960716312e+50Initial program 8.4
rmApplied add-cube-cbrt8.7
Applied sqrt-prod8.7
Simplified8.7
if 3.628799960716312e+50 < b Initial program 38.2
Taylor expanded around inf 11.3
Simplified6.2
Final simplification6.9
herbie shell --seed 2019179
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))