\frac{\left(\left(-b_2\right) - \left(\sqrt{\left(\left(b_2 \cdot b_2\right) - \left(a \cdot c\right)\right)}\right)\right)}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le 0.0019683837890625:\\
\;\;\;\;\frac{\frac{\left(b_2 + \left(-b_2\right)\right) \cdot \left(\left(-b_2\right) + \left(-b_2\right)\right) + c \cdot a}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\
\end{array}double f(double a, double b_2, double c) {
double r1627601 = b_2;
double r1627602 = -r1627601;
double r1627603 = r1627601 * r1627601;
double r1627604 = a;
double r1627605 = c;
double r1627606 = r1627604 * r1627605;
double r1627607 = r1627603 - r1627606;
double r1627608 = sqrt(r1627607);
double r1627609 = r1627602 - r1627608;
double r1627610 = r1627609 / r1627604;
return r1627610;
}
double f(double a, double b_2, double c) {
double r1627611 = b_2;
double r1627612 = 0.0019683837890625;
bool r1627613 = r1627611 <= r1627612;
double r1627614 = -r1627611;
double r1627615 = r1627611 + r1627614;
double r1627616 = r1627614 + r1627614;
double r1627617 = r1627615 * r1627616;
double r1627618 = c;
double r1627619 = a;
double r1627620 = r1627618 * r1627619;
double r1627621 = r1627617 + r1627620;
double r1627622 = r1627611 * r1627611;
double r1627623 = r1627619 * r1627618;
double r1627624 = r1627622 - r1627623;
double r1627625 = sqrt(r1627624);
double r1627626 = r1627614 + r1627625;
double r1627627 = r1627621 / r1627626;
double r1627628 = r1627627 / r1627619;
double r1627629 = r1627614 - r1627625;
double r1627630 = r1627629 / r1627619;
double r1627631 = r1627613 ? r1627628 : r1627630;
return r1627631;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < 0.0019683837890625Initial program 3.0
rmApplied p16-flip--2.7
rmApplied difference-of-squares3.1
rmApplied associate-/l*3.3
rmApplied p16-flip--3.4
Applied associate-/r/3.4
Applied associate-/r*3.4
Simplified0.6
if 0.0019683837890625 < b_2 Initial program 0.4
Final simplification0.5
herbie shell --seed 2019135 +o rules:numerics
(FPCore (a b_2 c)
:name "quad2m (problem 3.2.1, negative)"
(/.p16 (-.p16 (neg.p16 b_2) (sqrt.p16 (-.p16 (*.p16 b_2 b_2) (*.p16 a c)))) a))