double f(double a, double b, double c) {
double r644533 = b;
double r644534 = -r644533;
double r644535 = r644533 * r644533;
double r644536 = 4.0;
double r644537 = a;
double r644538 = c;
double r644539 = r644537 * r644538;
double r644540 = r644536 * r644539;
double r644541 = r644535 - r644540;
double r644542 = sqrt(r644541);
double r644543 = r644534 - r644542;
double r644544 = 2.0;
double r644545 = r644544 * r644537;
double r644546 = r644543 / r644545;
return r644546;
}
double f(double a, double b, double c) {
double r644547 = b;
double r644548 = -0.4461669921875;
bool r644549 = r644547 <= r644548;
double r644550 = -r644547;
double r644551 = r644550 + r644547;
double r644552 = r644550 + r644550;
double r644553 = r644551 * r644552;
double r644554 = 4.0;
double r644555 = a;
double r644556 = c;
double r644557 = r644555 * r644556;
double r644558 = r644554 * r644557;
double r644559 = r644553 + r644558;
double r644560 = 2.0;
double r644561 = r644560 * r644555;
double r644562 = r644547 * r644547;
double r644563 = r644562 - r644558;
double r644564 = sqrt(r644563);
double r644565 = r644550 + r644564;
double r644566 = r644561 * r644565;
double r644567 = r644559 / r644566;
double r644568 = r644554 * r644555;
double r644569 = r644568 * r644556;
double r644570 = r644562 - r644569;
double r644571 = sqrt(r644570);
double r644572 = r644550 - r644571;
double r644573 = r644572 / r644560;
double r644574 = r644573 / r644555;
double r644575 = r644549 ? r644567 : r644574;
return r644575;
}
\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -0.4461669921875:\\
\;\;\;\;\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2}}{a}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c
if b < -0.4461669921875Initial program 3.6
rmApplied p16-flip--3.2
Applied associate-/l/3.3
Simplified0.9
if -0.4461669921875 < b Initial program 0.5
rmApplied associate-/r*0.5
rmApplied associate-*r*0.5
Final simplification0.6
herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c)
:name "quadm (p42, negative)"
(/.p16 (-.p16 (neg.p16 b) (sqrt.p16 (-.p16 (*.p16 b b) (*.p16 (real->posit16 4) (*.p16 a c))))) (*.p16 (real->posit16 2) a)))