\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.028200009108187875261653423186597465196 \cdot 10^{115}:\\
\;\;\;\;\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{\frac{-2 \cdot b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 0.01064842317658122247681085070780682144687:\\
\;\;\;\;\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{\frac{\mathsf{fma}\left(\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}, \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}, -b\right)}{2}}{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{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r33364 = b;
double r33365 = 0.0;
bool r33366 = r33364 >= r33365;
double r33367 = 2.0;
double r33368 = c;
double r33369 = r33367 * r33368;
double r33370 = -r33364;
double r33371 = r33364 * r33364;
double r33372 = 4.0;
double r33373 = a;
double r33374 = r33372 * r33373;
double r33375 = r33374 * r33368;
double r33376 = r33371 - r33375;
double r33377 = sqrt(r33376);
double r33378 = r33370 - r33377;
double r33379 = r33369 / r33378;
double r33380 = r33370 + r33377;
double r33381 = r33367 * r33373;
double r33382 = r33380 / r33381;
double r33383 = r33366 ? r33379 : r33382;
return r33383;
}
double f(double a, double b, double c) {
double r33384 = b;
double r33385 = -3.028200009108188e+115;
bool r33386 = r33384 <= r33385;
double r33387 = 0.0;
bool r33388 = r33384 >= r33387;
double r33389 = 2.0;
double r33390 = c;
double r33391 = r33389 * r33390;
double r33392 = -r33384;
double r33393 = r33384 * r33384;
double r33394 = 4.0;
double r33395 = a;
double r33396 = r33394 * r33395;
double r33397 = r33396 * r33390;
double r33398 = r33393 - r33397;
double r33399 = sqrt(r33398);
double r33400 = r33392 - r33399;
double r33401 = r33391 / r33400;
double r33402 = -2.0;
double r33403 = r33402 * r33384;
double r33404 = r33403 / r33389;
double r33405 = r33404 / r33395;
double r33406 = r33388 ? r33401 : r33405;
double r33407 = 0.010648423176581222;
bool r33408 = r33384 <= r33407;
double r33409 = sqrt(r33399);
double r33410 = fma(r33409, r33409, r33392);
double r33411 = r33410 / r33389;
double r33412 = r33411 / r33395;
double r33413 = r33388 ? r33401 : r33412;
double r33414 = r33395 * r33390;
double r33415 = r33414 / r33384;
double r33416 = r33389 * r33415;
double r33417 = r33384 - r33416;
double r33418 = r33392 - r33417;
double r33419 = r33391 / r33418;
double r33420 = r33399 - r33384;
double r33421 = r33420 / r33389;
double r33422 = r33421 / r33395;
double r33423 = r33388 ? r33419 : r33422;
double r33424 = r33408 ? r33413 : r33423;
double r33425 = r33386 ? r33406 : r33424;
return r33425;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -3.028200009108188e+115Initial program 51.0
Simplified51.0
rmApplied add-sqr-sqrt51.0
Applied sqrt-prod51.0
Applied fma-neg51.0
Taylor expanded around -inf 3.4
Simplified3.4
if -3.028200009108188e+115 < b < 0.010648423176581222Initial program 9.3
Simplified9.3
rmApplied add-sqr-sqrt9.3
Applied sqrt-prod9.4
Applied fma-neg9.4
if 0.010648423176581222 < b Initial program 22.5
Simplified22.5
Taylor expanded around inf 9.2
Final simplification8.4
herbie shell --seed 2019305 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))