\begin{array}{l}
\mathbf{if}\;b \ge 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.6591205563674021 \cdot 10^{+111}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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}{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.7208928294906154 \cdot 10^{+70}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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) + \sqrt{\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right)} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(a \cdot \frac{c}{b} - b\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 r1088312 = b;
double r1088313 = 0.0;
bool r1088314 = r1088312 >= r1088313;
double r1088315 = -r1088312;
double r1088316 = r1088312 * r1088312;
double r1088317 = 4.0;
double r1088318 = a;
double r1088319 = r1088317 * r1088318;
double r1088320 = c;
double r1088321 = r1088319 * r1088320;
double r1088322 = r1088316 - r1088321;
double r1088323 = sqrt(r1088322);
double r1088324 = r1088315 - r1088323;
double r1088325 = 2.0;
double r1088326 = r1088325 * r1088318;
double r1088327 = r1088324 / r1088326;
double r1088328 = r1088325 * r1088320;
double r1088329 = r1088315 + r1088323;
double r1088330 = r1088328 / r1088329;
double r1088331 = r1088314 ? r1088327 : r1088330;
return r1088331;
}
double f(double a, double b, double c) {
double r1088332 = b;
double r1088333 = -1.6591205563674021e+111;
bool r1088334 = r1088332 <= r1088333;
double r1088335 = 0.0;
bool r1088336 = r1088332 >= r1088335;
double r1088337 = -r1088332;
double r1088338 = r1088332 * r1088332;
double r1088339 = 4.0;
double r1088340 = a;
double r1088341 = r1088339 * r1088340;
double r1088342 = c;
double r1088343 = r1088341 * r1088342;
double r1088344 = r1088338 - r1088343;
double r1088345 = sqrt(r1088344);
double r1088346 = r1088337 - r1088345;
double r1088347 = 2.0;
double r1088348 = r1088347 * r1088340;
double r1088349 = r1088346 / r1088348;
double r1088350 = r1088342 * r1088347;
double r1088351 = r1088342 / r1088332;
double r1088352 = r1088340 * r1088351;
double r1088353 = r1088352 - r1088332;
double r1088354 = r1088347 * r1088353;
double r1088355 = r1088350 / r1088354;
double r1088356 = r1088336 ? r1088349 : r1088355;
double r1088357 = 2.7208928294906154e+70;
bool r1088358 = r1088332 <= r1088357;
double r1088359 = cbrt(r1088345);
double r1088360 = r1088359 * r1088359;
double r1088361 = r1088359 * r1088360;
double r1088362 = sqrt(r1088361);
double r1088363 = sqrt(r1088345);
double r1088364 = r1088362 * r1088363;
double r1088365 = r1088337 + r1088364;
double r1088366 = r1088350 / r1088365;
double r1088367 = r1088336 ? r1088349 : r1088366;
double r1088368 = r1088354 / r1088348;
double r1088369 = r1088345 + r1088337;
double r1088370 = r1088350 / r1088369;
double r1088371 = r1088336 ? r1088368 : r1088370;
double r1088372 = r1088358 ? r1088367 : r1088371;
double r1088373 = r1088334 ? r1088356 : r1088372;
return r1088373;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.6591205563674021e+111Initial program 30.9
rmApplied add-sqr-sqrt30.9
Taylor expanded around -inf 6.2
Simplified2.0
if -1.6591205563674021e+111 < b < 2.7208928294906154e+70Initial program 8.8
rmApplied add-sqr-sqrt9.0
rmApplied add-cube-cbrt9.1
if 2.7208928294906154e+70 < b Initial program 39.2
Taylor expanded around inf 10.2
Simplified5.0
Final simplification6.7
herbie shell --seed 2019124
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))