\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 r864613 = b;
double r864614 = -r864613;
double r864615 = r864613 * r864613;
double r864616 = 4.0;
double r864617 = /* ERROR: no posit support in C */;
double r864618 = a;
double r864619 = c;
double r864620 = r864618 * r864619;
double r864621 = r864617 * r864620;
double r864622 = r864615 - r864621;
double r864623 = sqrt(r864622);
double r864624 = r864614 - r864623;
double r864625 = 2.0;
double r864626 = /* ERROR: no posit support in C */;
double r864627 = r864626 * r864618;
double r864628 = r864624 / r864627;
return r864628;
}
double f(double a, double b, double c) {
double r864629 = b;
double r864630 = -0.059906005859375;
bool r864631 = r864629 <= r864630;
double r864632 = -r864629;
double r864633 = r864632 + r864629;
double r864634 = r864632 + r864632;
double r864635 = r864633 * r864634;
double r864636 = 4.0;
double r864637 = a;
double r864638 = c;
double r864639 = r864637 * r864638;
double r864640 = r864636 * r864639;
double r864641 = r864635 + r864640;
double r864642 = 2.0;
double r864643 = r864642 * r864637;
double r864644 = r864641 / r864643;
double r864645 = r864629 * r864629;
double r864646 = r864645 - r864640;
double r864647 = sqrt(r864646);
double r864648 = r864632 + r864647;
double r864649 = r864644 / r864648;
double r864650 = r864636 * r864637;
double r864651 = r864650 * r864638;
double r864652 = r864645 - r864651;
double r864653 = sqrt(r864652);
double r864654 = r864632 - r864653;
double r864655 = r864654 / r864643;
double r864656 = r864631 ? r864649 : r864655;
return r864656;
}



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)))