\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -5.300564053552496 \cdot 10^{+135}:\\
\;\;\;\;\mathsf{fma}\left(-2, \frac{b_2}{a}, \frac{c}{b_2} \cdot \frac{1}{2}\right)\\
\mathbf{elif}\;b_2 \le 3.318234109021414 \cdot 10^{-122}:\\
\;\;\;\;\left(\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2\right) \cdot \frac{1}{a}\\
\mathbf{elif}\;b_2 \le 13471615.147294592:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(a, -c, 0\right)}{b_2 + \sqrt{b_2 \cdot b_2 - c \cdot a}}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\
\end{array}double f(double a, double b_2, double c) {
double r696636 = b_2;
double r696637 = -r696636;
double r696638 = r696636 * r696636;
double r696639 = a;
double r696640 = c;
double r696641 = r696639 * r696640;
double r696642 = r696638 - r696641;
double r696643 = sqrt(r696642);
double r696644 = r696637 + r696643;
double r696645 = r696644 / r696639;
return r696645;
}
double f(double a, double b_2, double c) {
double r696646 = b_2;
double r696647 = -5.300564053552496e+135;
bool r696648 = r696646 <= r696647;
double r696649 = -2.0;
double r696650 = a;
double r696651 = r696646 / r696650;
double r696652 = c;
double r696653 = r696652 / r696646;
double r696654 = 0.5;
double r696655 = r696653 * r696654;
double r696656 = fma(r696649, r696651, r696655);
double r696657 = 3.318234109021414e-122;
bool r696658 = r696646 <= r696657;
double r696659 = r696646 * r696646;
double r696660 = r696652 * r696650;
double r696661 = r696659 - r696660;
double r696662 = sqrt(r696661);
double r696663 = r696662 - r696646;
double r696664 = 1.0;
double r696665 = r696664 / r696650;
double r696666 = r696663 * r696665;
double r696667 = 13471615.147294592;
bool r696668 = r696646 <= r696667;
double r696669 = -r696652;
double r696670 = 0.0;
double r696671 = fma(r696650, r696669, r696670);
double r696672 = r696646 + r696662;
double r696673 = r696671 / r696672;
double r696674 = r696673 / r696650;
double r696675 = -0.5;
double r696676 = r696675 * r696653;
double r696677 = r696668 ? r696674 : r696676;
double r696678 = r696658 ? r696666 : r696677;
double r696679 = r696648 ? r696656 : r696678;
return r696679;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < -5.300564053552496e+135Initial program 54.8
Simplified54.8
Taylor expanded around -inf 2.4
Simplified2.4
if -5.300564053552496e+135 < b_2 < 3.318234109021414e-122Initial program 11.9
Simplified11.9
rmApplied div-inv12.0
if 3.318234109021414e-122 < b_2 < 13471615.147294592Initial program 33.7
Simplified33.7
rmApplied add-sqr-sqrt33.7
Applied sqrt-prod34.0
Applied fma-neg34.1
rmApplied add-exp-log36.6
Simplified36.1
rmApplied flip--36.2
Applied log-div36.2
Applied exp-diff36.3
Simplified18.4
Simplified15.7
if 13471615.147294592 < b_2 Initial program 55.0
Simplified55.0
Taylor expanded around inf 5.4
Final simplification9.0
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b_2 c)
:name "quad2p (problem 3.2.1, positive)"
(/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))