\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.0042572021484375:\\
\;\;\;\;\frac{\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}}{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 r829116 = b;
double r829117 = -r829116;
double r829118 = r829116 * r829116;
double r829119 = 4.0;
double r829120 = /* ERROR: no posit support in C */;
double r829121 = a;
double r829122 = c;
double r829123 = r829121 * r829122;
double r829124 = r829120 * r829123;
double r829125 = r829118 - r829124;
double r829126 = sqrt(r829125);
double r829127 = r829117 - r829126;
double r829128 = 2.0;
double r829129 = /* ERROR: no posit support in C */;
double r829130 = r829129 * r829121;
double r829131 = r829127 / r829130;
return r829131;
}
double f(double a, double b, double c) {
double r829132 = b;
double r829133 = -0.0042572021484375;
bool r829134 = r829132 <= r829133;
double r829135 = -r829132;
double r829136 = r829135 + r829132;
double r829137 = r829135 + r829135;
double r829138 = r829136 * r829137;
double r829139 = 4.0;
double r829140 = a;
double r829141 = c;
double r829142 = r829140 * r829141;
double r829143 = r829139 * r829142;
double r829144 = r829138 + r829143;
double r829145 = 2.0;
double r829146 = r829144 / r829145;
double r829147 = r829146 / r829140;
double r829148 = r829132 * r829132;
double r829149 = r829148 - r829143;
double r829150 = sqrt(r829149);
double r829151 = r829135 + r829150;
double r829152 = r829147 / r829151;
double r829153 = r829139 * r829140;
double r829154 = r829153 * r829141;
double r829155 = r829148 - r829154;
double r829156 = sqrt(r829155);
double r829157 = r829135 - r829156;
double r829158 = r829145 * r829140;
double r829159 = r829157 / r829158;
double r829160 = r829134 ? r829152 : r829159;
return r829160;
}



Bits error versus a



Bits error versus b



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