double f(double a, double b_2, double c) {
double r561572 = b_2;
double r561573 = -r561572;
double r561574 = r561572 * r561572;
double r561575 = a;
double r561576 = c;
double r561577 = r561575 * r561576;
double r561578 = r561574 - r561577;
double r561579 = sqrt(r561578);
double r561580 = r561573 - r561579;
double r561581 = r561580 / r561575;
return r561581;
}
double f(double a, double b_2, double c) {
double r561582 = b_2;
double r561583 = 0.37518310546875;
bool r561584 = r561582 <= r561583;
double r561585 = a;
double r561586 = c;
double r561587 = r561585 * r561586;
double r561588 = -r561582;
double r561589 = r561588 + r561582;
double r561590 = r561588 + r561588;
double r561591 = r561589 * r561590;
double r561592 = r561587 + r561591;
double r561593 = r561592 / r561585;
double r561594 = r561582 * r561582;
double r561595 = r561594 - r561587;
double r561596 = sqrt(r561595);
double r561597 = r561588 + r561596;
double r561598 = r561593 / r561597;
double r561599 = r561588 - r561596;
double r561600 = r561599 / r561585;
double r561601 = r561584 ? r561598 : r561600;
return r561601;
}
\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le 0.37518310546875:\\
\;\;\;\;\frac{\frac{a \cdot c + \left(\left(-b_2\right) + b_2\right) \cdot \left(\left(-b_2\right) + \left(-b_2\right)\right)}{a}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\
\end{array}


Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < 0.37518310546875Initial program 2.4
rmApplied p16-flip--2.2
Applied associate-/l/2.3
Simplified0.7
rmApplied associate-/r*0.5
if 0.37518310546875 < b_2 Initial program 0.4
Final simplification0.5
herbie shell --seed 2019101 +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))