\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.3565673828125:\\
\;\;\;\;\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 - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r872556 = b;
double r872557 = -r872556;
double r872558 = r872556 * r872556;
double r872559 = 4.0;
double r872560 = /* ERROR: no posit support in C */;
double r872561 = a;
double r872562 = c;
double r872563 = r872561 * r872562;
double r872564 = r872560 * r872563;
double r872565 = r872558 - r872564;
double r872566 = sqrt(r872565);
double r872567 = r872557 - r872566;
double r872568 = 2.0;
double r872569 = /* ERROR: no posit support in C */;
double r872570 = r872569 * r872561;
double r872571 = r872567 / r872570;
return r872571;
}
double f(double a, double b, double c) {
double r872572 = b;
double r872573 = -0.3565673828125;
bool r872574 = r872572 <= r872573;
double r872575 = -r872572;
double r872576 = r872575 + r872572;
double r872577 = r872575 + r872575;
double r872578 = r872576 * r872577;
double r872579 = 4.0;
double r872580 = a;
double r872581 = c;
double r872582 = r872580 * r872581;
double r872583 = r872579 * r872582;
double r872584 = r872578 + r872583;
double r872585 = 2.0;
double r872586 = r872585 * r872580;
double r872587 = r872572 * r872572;
double r872588 = r872587 - r872583;
double r872589 = sqrt(r872588);
double r872590 = r872575 + r872589;
double r872591 = r872586 * r872590;
double r872592 = r872584 / r872591;
double r872593 = r872575 - r872589;
double r872594 = r872593 / r872585;
double r872595 = r872594 / r872580;
double r872596 = r872574 ? r872592 : r872595;
return r872596;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -0.3565673828125Initial program 3.5
rmApplied p16-flip--3.1
Applied associate-/l/3.2
Simplified0.9
if -0.3565673828125 < b Initial program 0.5
rmApplied associate-/r*0.5
Final simplification0.6
herbie shell --seed 2019119
(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)))