\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 -5.00500656176984215351659893827263540922 \cdot 10^{132}:\\
\;\;\;\;\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(-2, b, \frac{-\frac{1}{\frac{-1}{b}}}{b} - 1\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.015331758515464961171689383119317842937 \cdot 10^{62}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r30495 = b;
double r30496 = 0.0;
bool r30497 = r30495 >= r30496;
double r30498 = -r30495;
double r30499 = r30495 * r30495;
double r30500 = 4.0;
double r30501 = a;
double r30502 = r30500 * r30501;
double r30503 = c;
double r30504 = r30502 * r30503;
double r30505 = r30499 - r30504;
double r30506 = sqrt(r30505);
double r30507 = r30498 - r30506;
double r30508 = 2.0;
double r30509 = r30508 * r30501;
double r30510 = r30507 / r30509;
double r30511 = r30508 * r30503;
double r30512 = r30498 + r30506;
double r30513 = r30511 / r30512;
double r30514 = r30497 ? r30510 : r30513;
return r30514;
}
double f(double a, double b, double c) {
double r30515 = b;
double r30516 = -5.005006561769842e+132;
bool r30517 = r30515 <= r30516;
double r30518 = 0.0;
bool r30519 = r30515 >= r30518;
double r30520 = -r30515;
double r30521 = r30515 * r30515;
double r30522 = 4.0;
double r30523 = a;
double r30524 = r30522 * r30523;
double r30525 = c;
double r30526 = r30524 * r30525;
double r30527 = r30521 - r30526;
double r30528 = sqrt(r30527);
double r30529 = r30520 - r30528;
double r30530 = 2.0;
double r30531 = r30530 * r30523;
double r30532 = r30529 / r30531;
double r30533 = r30530 * r30525;
double r30534 = -2.0;
double r30535 = 1.0;
double r30536 = -1.0;
double r30537 = r30536 / r30515;
double r30538 = r30535 / r30537;
double r30539 = -r30538;
double r30540 = r30539 / r30515;
double r30541 = r30540 - r30535;
double r30542 = fma(r30534, r30515, r30541);
double r30543 = r30533 / r30542;
double r30544 = r30519 ? r30532 : r30543;
double r30545 = 3.015331758515465e+62;
bool r30546 = r30515 <= r30545;
double r30547 = sqrt(r30528);
double r30548 = r30547 * r30547;
double r30549 = r30520 - r30548;
double r30550 = r30549 / r30531;
double r30551 = r30520 + r30528;
double r30552 = r30533 / r30551;
double r30553 = r30519 ? r30550 : r30552;
double r30554 = r30523 * r30525;
double r30555 = r30554 / r30515;
double r30556 = r30530 * r30555;
double r30557 = 2.0;
double r30558 = r30557 * r30515;
double r30559 = r30556 - r30558;
double r30560 = r30559 / r30531;
double r30561 = r30519 ? r30560 : r30552;
double r30562 = r30546 ? r30553 : r30561;
double r30563 = r30517 ? r30544 : r30562;
return r30563;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.005006561769842e+132Initial program 33.6
rmApplied expm1-log1p-u34.1
Taylor expanded around -inf 6.0
Simplified1.9
if -5.005006561769842e+132 < b < 3.015331758515465e+62Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 3.015331758515465e+62 < b Initial program 39.7
rmApplied add-sqr-sqrt39.7
Applied sqrt-prod39.8
Taylor expanded around inf 11.0
Final simplification7.9
herbie shell --seed 2020001 +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)))))))