\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.8719024022082672 \cdot 10^{+146}:\\
\;\;\;\;\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 4.0195818366949153 \cdot 10^{+79}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\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}{\frac{\left(4 \cdot a\right) \cdot c}{\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 r3021328 = b;
double r3021329 = 0.0;
bool r3021330 = r3021328 >= r3021329;
double r3021331 = -r3021328;
double r3021332 = r3021328 * r3021328;
double r3021333 = 4.0;
double r3021334 = a;
double r3021335 = r3021333 * r3021334;
double r3021336 = c;
double r3021337 = r3021335 * r3021336;
double r3021338 = r3021332 - r3021337;
double r3021339 = sqrt(r3021338);
double r3021340 = r3021331 - r3021339;
double r3021341 = 2.0;
double r3021342 = r3021341 * r3021334;
double r3021343 = r3021340 / r3021342;
double r3021344 = r3021341 * r3021336;
double r3021345 = r3021331 + r3021339;
double r3021346 = r3021344 / r3021345;
double r3021347 = r3021330 ? r3021343 : r3021346;
return r3021347;
}
double f(double a, double b, double c) {
double r3021348 = b;
double r3021349 = -1.8719024022082672e+146;
bool r3021350 = r3021348 <= r3021349;
double r3021351 = 0.0;
bool r3021352 = r3021348 >= r3021351;
double r3021353 = -r3021348;
double r3021354 = r3021348 * r3021348;
double r3021355 = 4.0;
double r3021356 = a;
double r3021357 = r3021355 * r3021356;
double r3021358 = c;
double r3021359 = r3021357 * r3021358;
double r3021360 = r3021354 - r3021359;
double r3021361 = sqrt(r3021360);
double r3021362 = r3021353 - r3021361;
double r3021363 = 2.0;
double r3021364 = r3021363 * r3021356;
double r3021365 = r3021362 / r3021364;
double r3021366 = r3021358 * r3021363;
double r3021367 = r3021358 / r3021348;
double r3021368 = r3021356 * r3021367;
double r3021369 = r3021368 - r3021348;
double r3021370 = r3021363 * r3021369;
double r3021371 = r3021366 / r3021370;
double r3021372 = r3021352 ? r3021365 : r3021371;
double r3021373 = 4.0195818366949153e+79;
bool r3021374 = r3021348 <= r3021373;
double r3021375 = sqrt(r3021361);
double r3021376 = r3021375 * r3021375;
double r3021377 = r3021353 - r3021376;
double r3021378 = r3021377 / r3021364;
double r3021379 = r3021361 + r3021353;
double r3021380 = r3021366 / r3021379;
double r3021381 = r3021352 ? r3021378 : r3021380;
double r3021382 = r3021370 / r3021364;
double r3021383 = r3021359 / r3021362;
double r3021384 = r3021366 / r3021383;
double r3021385 = r3021352 ? r3021382 : r3021384;
double r3021386 = r3021374 ? r3021381 : r3021385;
double r3021387 = r3021350 ? r3021372 : r3021386;
return r3021387;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.8719024022082672e+146Initial program 36.6
Taylor expanded around -inf 7.3
Simplified1.6
if -1.8719024022082672e+146 < b < 4.0195818366949153e+79Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 4.0195818366949153e+79 < b Initial program 40.5
Taylor expanded around inf 10.5
Simplified4.9
rmApplied flip-+4.9
Simplified4.9
Final simplification6.8
herbie shell --seed 2019125
(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)))))))