\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -6.402360759158876957705774252884197536155 \cdot 10^{102}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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}{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 0.01064842317658122247681085070780682144687:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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}{\mathsf{fma}\left(\sqrt[3]{b} \cdot \sqrt[3]{b}, -\sqrt[3]{b}, \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}{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}double f(double a, double b, double c) {
double r34357 = b;
double r34358 = 0.0;
bool r34359 = r34357 >= r34358;
double r34360 = -r34357;
double r34361 = r34357 * r34357;
double r34362 = 4.0;
double r34363 = a;
double r34364 = r34362 * r34363;
double r34365 = c;
double r34366 = r34364 * r34365;
double r34367 = r34361 - r34366;
double r34368 = sqrt(r34367);
double r34369 = r34360 - r34368;
double r34370 = 2.0;
double r34371 = r34370 * r34363;
double r34372 = r34369 / r34371;
double r34373 = r34370 * r34365;
double r34374 = r34360 + r34368;
double r34375 = r34373 / r34374;
double r34376 = r34359 ? r34372 : r34375;
return r34376;
}
double f(double a, double b, double c) {
double r34377 = b;
double r34378 = -6.402360759158877e+102;
bool r34379 = r34377 <= r34378;
double r34380 = 0.0;
bool r34381 = r34377 >= r34380;
double r34382 = -r34377;
double r34383 = r34377 * r34377;
double r34384 = 4.0;
double r34385 = a;
double r34386 = r34384 * r34385;
double r34387 = c;
double r34388 = r34386 * r34387;
double r34389 = r34383 - r34388;
double r34390 = sqrt(r34389);
double r34391 = r34382 - r34390;
double r34392 = 2.0;
double r34393 = r34392 * r34385;
double r34394 = r34391 / r34393;
double r34395 = r34392 * r34387;
double r34396 = r34385 * r34387;
double r34397 = r34396 / r34377;
double r34398 = -2.0;
double r34399 = r34377 * r34398;
double r34400 = fma(r34397, r34392, r34399);
double r34401 = r34395 / r34400;
double r34402 = r34381 ? r34394 : r34401;
double r34403 = 0.010648423176581222;
bool r34404 = r34377 <= r34403;
double r34405 = cbrt(r34377);
double r34406 = r34405 * r34405;
double r34407 = -r34405;
double r34408 = fma(r34406, r34407, r34390);
double r34409 = r34395 / r34408;
double r34410 = r34381 ? r34394 : r34409;
double r34411 = r34400 / r34393;
double r34412 = r34382 + r34390;
double r34413 = r34395 / r34412;
double r34414 = r34381 ? r34411 : r34413;
double r34415 = r34404 ? r34410 : r34414;
double r34416 = r34379 ? r34402 : r34415;
return r34416;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -6.402360759158877e+102Initial program 30.8
Taylor expanded around -inf 6.1
Simplified6.1
if -6.402360759158877e+102 < b < 0.010648423176581222Initial program 9.1
rmApplied add-cube-cbrt9.3
Applied distribute-rgt-neg-in9.3
Applied fma-def9.3
if 0.010648423176581222 < b Initial program 32.9
Taylor expanded around inf 12.8
Simplified12.8
Final simplification9.4
herbie shell --seed 2019305 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))