\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{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\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 r30594 = b;
double r30595 = 0.0;
bool r30596 = r30594 >= r30595;
double r30597 = -r30594;
double r30598 = r30594 * r30594;
double r30599 = 4.0;
double r30600 = a;
double r30601 = r30599 * r30600;
double r30602 = c;
double r30603 = r30601 * r30602;
double r30604 = r30598 - r30603;
double r30605 = sqrt(r30604);
double r30606 = r30597 - r30605;
double r30607 = 2.0;
double r30608 = r30607 * r30600;
double r30609 = r30606 / r30608;
double r30610 = r30607 * r30602;
double r30611 = r30597 + r30605;
double r30612 = r30610 / r30611;
double r30613 = r30596 ? r30609 : r30612;
return r30613;
}
double f(double a, double b, double c) {
double r30614 = b;
double r30615 = -5.005006561769842e+132;
bool r30616 = r30614 <= r30615;
double r30617 = 0.0;
bool r30618 = r30614 >= r30617;
double r30619 = -r30614;
double r30620 = r30614 * r30614;
double r30621 = 4.0;
double r30622 = a;
double r30623 = r30621 * r30622;
double r30624 = c;
double r30625 = r30623 * r30624;
double r30626 = r30620 - r30625;
double r30627 = sqrt(r30626);
double r30628 = r30619 - r30627;
double r30629 = 2.0;
double r30630 = r30629 * r30622;
double r30631 = r30628 / r30630;
double r30632 = r30629 * r30624;
double r30633 = -2.0;
double r30634 = 1.0;
double r30635 = -1.0;
double r30636 = r30635 / r30614;
double r30637 = r30634 / r30636;
double r30638 = -r30637;
double r30639 = r30638 / r30614;
double r30640 = r30639 - r30634;
double r30641 = fma(r30633, r30614, r30640);
double r30642 = r30632 / r30641;
double r30643 = r30618 ? r30631 : r30642;
double r30644 = 3.015331758515465e+62;
bool r30645 = r30614 <= r30644;
double r30646 = sqrt(r30627);
double r30647 = r30646 * r30646;
double r30648 = r30619 - r30647;
double r30649 = r30648 / r30630;
double r30650 = r30619 + r30627;
double r30651 = r30632 / r30650;
double r30652 = r30618 ? r30649 : r30651;
double r30653 = r30622 * r30624;
double r30654 = r30653 / r30614;
double r30655 = r30629 * r30654;
double r30656 = r30614 - r30655;
double r30657 = r30619 - r30656;
double r30658 = r30657 / r30630;
double r30659 = r30618 ? r30658 : r30651;
double r30660 = r30645 ? r30652 : r30659;
double r30661 = r30616 ? r30643 : r30660;
return r30661;
}



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
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)))))))