\frac{\left(\left(-b\right) - \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)\right)}{\left(\left(2\right) \cdot a\right)}\begin{array}{l}
\mathbf{if}\;b \le -0.059906005859375:\\
\;\;\;\;\frac{\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r864608 = b;
double r864609 = -r864608;
double r864610 = r864608 * r864608;
double r864611 = 4.0;
double r864612 = /* ERROR: no posit support in C */;
double r864613 = a;
double r864614 = c;
double r864615 = r864613 * r864614;
double r864616 = r864612 * r864615;
double r864617 = r864610 - r864616;
double r864618 = sqrt(r864617);
double r864619 = r864609 - r864618;
double r864620 = 2.0;
double r864621 = /* ERROR: no posit support in C */;
double r864622 = r864621 * r864613;
double r864623 = r864619 / r864622;
return r864623;
}
double f(double a, double b, double c) {
double r864624 = b;
double r864625 = -0.059906005859375;
bool r864626 = r864624 <= r864625;
double r864627 = -r864624;
double r864628 = r864627 + r864624;
double r864629 = r864627 + r864627;
double r864630 = r864628 * r864629;
double r864631 = 4.0;
double r864632 = a;
double r864633 = c;
double r864634 = r864632 * r864633;
double r864635 = r864631 * r864634;
double r864636 = r864630 + r864635;
double r864637 = 2.0;
double r864638 = r864637 * r864632;
double r864639 = r864636 / r864638;
double r864640 = r864624 * r864624;
double r864641 = r864640 - r864635;
double r864642 = sqrt(r864641);
double r864643 = r864627 + r864642;
double r864644 = r864639 / r864643;
double r864645 = r864631 * r864632;
double r864646 = r864645 * r864633;
double r864647 = r864640 - r864646;
double r864648 = sqrt(r864647);
double r864649 = r864627 - r864648;
double r864650 = r864649 / r864638;
double r864651 = r864626 ? r864644 : r864650;
return r864651;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -0.059906005859375Initial program 2.9
rmApplied p16-flip--2.6
Applied associate-/l/2.7
Simplified0.8
rmApplied associate-/r*0.7
if -0.059906005859375 < b Initial program 0.5
rmApplied associate-*r*0.5
Final simplification0.6
herbie shell --seed 2019107 +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)))