\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.21980614846907847 \cdot 10^{162}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 2.5329642823852832 \cdot 10^{69}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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)}{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 r51632 = b;
double r51633 = 0.0;
bool r51634 = r51632 >= r51633;
double r51635 = -r51632;
double r51636 = r51632 * r51632;
double r51637 = 4.0;
double r51638 = a;
double r51639 = r51637 * r51638;
double r51640 = c;
double r51641 = r51639 * r51640;
double r51642 = r51636 - r51641;
double r51643 = sqrt(r51642);
double r51644 = r51635 - r51643;
double r51645 = 2.0;
double r51646 = r51645 * r51638;
double r51647 = r51644 / r51646;
double r51648 = r51645 * r51640;
double r51649 = r51635 + r51643;
double r51650 = r51648 / r51649;
double r51651 = r51634 ? r51647 : r51650;
return r51651;
}
double f(double a, double b, double c) {
double r51652 = b;
double r51653 = -6.2198061484690785e+162;
bool r51654 = r51652 <= r51653;
double r51655 = 0.0;
bool r51656 = r51652 >= r51655;
double r51657 = -r51652;
double r51658 = r51652 * r51652;
double r51659 = 4.0;
double r51660 = a;
double r51661 = r51659 * r51660;
double r51662 = c;
double r51663 = r51661 * r51662;
double r51664 = r51658 - r51663;
double r51665 = sqrt(r51664);
double r51666 = r51657 - r51665;
double r51667 = 2.0;
double r51668 = r51667 * r51660;
double r51669 = r51666 / r51668;
double r51670 = r51667 * r51662;
double r51671 = r51660 * r51662;
double r51672 = r51671 / r51652;
double r51673 = r51667 * r51672;
double r51674 = 2.0;
double r51675 = r51674 * r51652;
double r51676 = r51673 - r51675;
double r51677 = r51670 / r51676;
double r51678 = r51656 ? r51669 : r51677;
double r51679 = 2.5329642823852832e+69;
bool r51680 = r51652 <= r51679;
double r51681 = cbrt(r51657);
double r51682 = r51681 * r51681;
double r51683 = -r51665;
double r51684 = fma(r51682, r51681, r51683);
double r51685 = r51684 / r51668;
double r51686 = r51657 + r51665;
double r51687 = r51670 / r51686;
double r51688 = r51656 ? r51685 : r51687;
double r51689 = r51676 / r51668;
double r51690 = r51656 ? r51689 : r51687;
double r51691 = r51680 ? r51688 : r51690;
double r51692 = r51654 ? r51678 : r51691;
return r51692;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -6.2198061484690785e+162Initial program 37.7
Taylor expanded around -inf 7.4
if -6.2198061484690785e+162 < b < 2.5329642823852832e+69Initial program 9.1
rmApplied add-cube-cbrt9.2
Applied fma-neg9.2
if 2.5329642823852832e+69 < b Initial program 42.5
Taylor expanded around inf 11.0
Final simplification9.3
herbie shell --seed 2020020 +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)))))))