\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 -3.8033732176976724 \cdot 10^{+43}:\\
\;\;\;\;\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{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.514329182216526 \cdot 10^{+146}:\\
\;\;\;\;\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{\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}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - \left(\frac{c}{\sqrt[3]{b}} \cdot \frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}}\right) \cdot 2\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 r893343 = b;
double r893344 = 0.0;
bool r893345 = r893343 >= r893344;
double r893346 = 2.0;
double r893347 = c;
double r893348 = r893346 * r893347;
double r893349 = -r893343;
double r893350 = r893343 * r893343;
double r893351 = 4.0;
double r893352 = a;
double r893353 = r893351 * r893352;
double r893354 = r893353 * r893347;
double r893355 = r893350 - r893354;
double r893356 = sqrt(r893355);
double r893357 = r893349 - r893356;
double r893358 = r893348 / r893357;
double r893359 = r893349 + r893356;
double r893360 = r893346 * r893352;
double r893361 = r893359 / r893360;
double r893362 = r893345 ? r893358 : r893361;
return r893362;
}
double f(double a, double b, double c) {
double r893363 = b;
double r893364 = -3.8033732176976724e+43;
bool r893365 = r893363 <= r893364;
double r893366 = 0.0;
bool r893367 = r893363 >= r893366;
double r893368 = 2.0;
double r893369 = c;
double r893370 = r893368 * r893369;
double r893371 = -r893363;
double r893372 = r893363 * r893363;
double r893373 = 4.0;
double r893374 = a;
double r893375 = r893373 * r893374;
double r893376 = r893375 * r893369;
double r893377 = r893372 - r893376;
double r893378 = sqrt(r893377);
double r893379 = r893371 - r893378;
double r893380 = r893370 / r893379;
double r893381 = r893374 / r893363;
double r893382 = r893381 * r893369;
double r893383 = r893382 - r893363;
double r893384 = r893368 * r893383;
double r893385 = r893368 * r893374;
double r893386 = r893384 / r893385;
double r893387 = r893367 ? r893380 : r893386;
double r893388 = 3.514329182216526e+146;
bool r893389 = r893363 <= r893388;
double r893390 = sqrt(r893378);
double r893391 = r893390 * r893390;
double r893392 = r893371 + r893391;
double r893393 = r893392 / r893385;
double r893394 = r893367 ? r893380 : r893393;
double r893395 = cbrt(r893363);
double r893396 = r893369 / r893395;
double r893397 = r893395 * r893395;
double r893398 = r893374 / r893397;
double r893399 = r893396 * r893398;
double r893400 = r893399 * r893368;
double r893401 = r893363 - r893400;
double r893402 = r893371 - r893401;
double r893403 = r893370 / r893402;
double r893404 = r893378 + r893371;
double r893405 = r893404 / r893385;
double r893406 = r893367 ? r893403 : r893405;
double r893407 = r893389 ? r893394 : r893406;
double r893408 = r893365 ? r893387 : r893407;
return r893408;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.8033732176976724e+43Initial program 35.3
rmApplied add-sqr-sqrt35.4
Taylor expanded around -inf 10.8
Simplified5.6
if -3.8033732176976724e+43 < b < 3.514329182216526e+146Initial program 8.9
rmApplied add-sqr-sqrt9.0
if 3.514329182216526e+146 < b Initial program 36.1
Taylor expanded around inf 6.5
rmApplied add-cube-cbrt6.5
Applied times-frac1.3
Final simplification6.9
herbie shell --seed 2019135
(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))))