\frac{\left(\frac{\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)}\frac{\frac{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} - b}{2}}{a}double f(double a, double b, double c) {
double r649090 = b;
double r649091 = -r649090;
double r649092 = r649090 * r649090;
double r649093 = 4.0;
double r649094 = /* ERROR: no posit support in C */;
double r649095 = a;
double r649096 = c;
double r649097 = r649095 * r649096;
double r649098 = r649094 * r649097;
double r649099 = r649092 - r649098;
double r649100 = sqrt(r649099);
double r649101 = r649091 + r649100;
double r649102 = 2.0;
double r649103 = /* ERROR: no posit support in C */;
double r649104 = r649103 * r649095;
double r649105 = r649101 / r649104;
return r649105;
}
double f(double a, double b, double c) {
double r649106 = b;
double r649107 = r649106 * r649106;
double r649108 = c;
double r649109 = a;
double r649110 = 4.0;
double r649111 = r649109 * r649110;
double r649112 = r649108 * r649111;
double r649113 = r649107 - r649112;
double r649114 = sqrt(r649113);
double r649115 = r649114 - r649106;
double r649116 = 2.0;
double r649117 = r649115 / r649116;
double r649118 = r649117 / r649109;
return r649118;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 1.6
Simplified1.6
rmApplied associate-/r*1.5
rmApplied associate-*l*1.5
Final simplification1.5
herbie shell --seed 2019121 +o rules:numerics
(FPCore (a b c)
:name "quadp (p42, positive)"
(/.p16 (+.p16 (neg.p16 b) (sqrt.p16 (-.p16 (*.p16 b b) (*.p16 (real->posit16 4) (*.p16 a c))))) (*.p16 (real->posit16 2) a)))