\begin{array}{l}
\mathbf{if}\;b \ge 0.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.3167628934435038 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.276690291884487 \cdot 10^{80}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r32329 = b;
double r32330 = 0.0;
bool r32331 = r32329 >= r32330;
double r32332 = 2.0;
double r32333 = c;
double r32334 = r32332 * r32333;
double r32335 = -r32329;
double r32336 = r32329 * r32329;
double r32337 = 4.0;
double r32338 = a;
double r32339 = r32337 * r32338;
double r32340 = r32339 * r32333;
double r32341 = r32336 - r32340;
double r32342 = sqrt(r32341);
double r32343 = r32335 - r32342;
double r32344 = r32334 / r32343;
double r32345 = r32335 + r32342;
double r32346 = r32332 * r32338;
double r32347 = r32345 / r32346;
double r32348 = r32331 ? r32344 : r32347;
return r32348;
}
double f(double a, double b, double c) {
double r32349 = b;
double r32350 = -3.316762893443504e+154;
bool r32351 = r32349 <= r32350;
double r32352 = 0.0;
bool r32353 = r32349 >= r32352;
double r32354 = 2.0;
double r32355 = c;
double r32356 = r32354 * r32355;
double r32357 = -r32349;
double r32358 = r32349 * r32349;
double r32359 = 4.0;
double r32360 = a;
double r32361 = r32359 * r32360;
double r32362 = r32361 * r32355;
double r32363 = r32358 - r32362;
double r32364 = sqrt(r32363);
double r32365 = r32357 - r32364;
double r32366 = r32356 / r32365;
double r32367 = r32360 * r32355;
double r32368 = r32367 / r32349;
double r32369 = r32354 * r32368;
double r32370 = r32369 - r32349;
double r32371 = r32370 - r32349;
double r32372 = r32354 * r32360;
double r32373 = r32371 / r32372;
double r32374 = r32353 ? r32366 : r32373;
double r32375 = 2.2766902918844874e+80;
bool r32376 = r32349 <= r32375;
double r32377 = sqrt(r32364);
double r32378 = r32377 * r32377;
double r32379 = r32357 - r32378;
double r32380 = r32356 / r32379;
double r32381 = r32364 - r32349;
double r32382 = r32381 / r32372;
double r32383 = r32353 ? r32380 : r32382;
double r32384 = r32349 - r32369;
double r32385 = r32357 - r32384;
double r32386 = r32356 / r32385;
double r32387 = r32353 ? r32386 : r32382;
double r32388 = r32376 ? r32383 : r32387;
double r32389 = r32351 ? r32374 : r32388;
return r32389;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.316762893443504e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.1
if -3.316762893443504e+154 < b < 2.2766902918844874e+80Initial program 8.6
Simplified8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 2.2766902918844874e+80 < b Initial program 28.8
Simplified28.8
Taylor expanded around inf 7.0
Final simplification8.6
herbie shell --seed 2019199
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))