\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.333835582926585050250881012823307756098 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{1 \cdot \left(\frac{a}{b} - \frac{b}{c}\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 4.620002785864606786875053449427149180535 \cdot 10^{67}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\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 r52358 = b;
double r52359 = 0.0;
bool r52360 = r52358 >= r52359;
double r52361 = -r52358;
double r52362 = r52358 * r52358;
double r52363 = 4.0;
double r52364 = a;
double r52365 = r52363 * r52364;
double r52366 = c;
double r52367 = r52365 * r52366;
double r52368 = r52362 - r52367;
double r52369 = sqrt(r52368);
double r52370 = r52361 - r52369;
double r52371 = 2.0;
double r52372 = r52371 * r52364;
double r52373 = r52370 / r52372;
double r52374 = r52371 * r52366;
double r52375 = r52361 + r52369;
double r52376 = r52374 / r52375;
double r52377 = r52360 ? r52373 : r52376;
return r52377;
}
double f(double a, double b, double c) {
double r52378 = b;
double r52379 = -1.333835582926585e+154;
bool r52380 = r52378 <= r52379;
double r52381 = 0.0;
bool r52382 = r52378 >= r52381;
double r52383 = 1.0;
double r52384 = c;
double r52385 = r52384 / r52378;
double r52386 = a;
double r52387 = r52378 / r52386;
double r52388 = r52385 - r52387;
double r52389 = r52383 * r52388;
double r52390 = 1.0;
double r52391 = r52386 / r52378;
double r52392 = r52378 / r52384;
double r52393 = r52391 - r52392;
double r52394 = r52383 * r52393;
double r52395 = r52390 / r52394;
double r52396 = r52382 ? r52389 : r52395;
double r52397 = 4.620002785864607e+67;
bool r52398 = r52378 <= r52397;
double r52399 = -r52378;
double r52400 = r52378 * r52378;
double r52401 = 4.0;
double r52402 = r52401 * r52386;
double r52403 = r52402 * r52384;
double r52404 = r52400 - r52403;
double r52405 = sqrt(r52404);
double r52406 = sqrt(r52405);
double r52407 = r52406 * r52406;
double r52408 = r52399 - r52407;
double r52409 = 2.0;
double r52410 = r52409 * r52386;
double r52411 = r52408 / r52410;
double r52412 = r52409 * r52384;
double r52413 = r52399 + r52405;
double r52414 = r52412 / r52413;
double r52415 = r52382 ? r52411 : r52414;
double r52416 = 2.0;
double r52417 = pow(r52378, r52416);
double r52418 = r52417 - r52417;
double r52419 = r52386 * r52384;
double r52420 = r52401 * r52419;
double r52421 = r52418 + r52420;
double r52422 = r52399 - r52405;
double r52423 = r52421 / r52422;
double r52424 = r52412 / r52423;
double r52425 = r52382 ? r52389 : r52424;
double r52426 = r52398 ? r52415 : r52425;
double r52427 = r52380 ? r52396 : r52426;
return r52427;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.333835582926585e+154Initial program 37.8
Taylor expanded around inf 37.8
Taylor expanded around 0 37.8
Simplified37.8
rmApplied clear-num37.8
Taylor expanded around -inf 1.9
Simplified1.9
if -1.333835582926585e+154 < b < 4.620002785864607e+67Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 4.620002785864607e+67 < b Initial program 40.5
Taylor expanded around inf 10.7
Taylor expanded around 0 5.4
Simplified5.4
rmApplied flip-+5.4
Simplified5.4
Final simplification6.9
herbie shell --seed 2019304
(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)))))))