\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)}\frac{\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + \left(4 \cdot a\right) \cdot c}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r815744 = b;
double r815745 = -r815744;
double r815746 = r815744 * r815744;
double r815747 = 4.0;
double r815748 = /* ERROR: no posit support in C */;
double r815749 = a;
double r815750 = c;
double r815751 = r815749 * r815750;
double r815752 = r815748 * r815751;
double r815753 = r815746 - r815752;
double r815754 = sqrt(r815753);
double r815755 = r815745 - r815754;
double r815756 = 2.0;
double r815757 = /* ERROR: no posit support in C */;
double r815758 = r815757 * r815749;
double r815759 = r815755 / r815758;
return r815759;
}
double f(double a, double b, double c) {
double r815760 = b;
double r815761 = -r815760;
double r815762 = r815761 + r815760;
double r815763 = r815761 + r815761;
double r815764 = r815762 * r815763;
double r815765 = 4.0;
double r815766 = a;
double r815767 = r815765 * r815766;
double r815768 = c;
double r815769 = r815767 * r815768;
double r815770 = r815764 + r815769;
double r815771 = 2.0;
double r815772 = r815771 * r815766;
double r815773 = r815770 / r815772;
double r815774 = r815760 * r815760;
double r815775 = r815774 - r815769;
double r815776 = sqrt(r815775);
double r815777 = r815761 + r815776;
double r815778 = r815773 / r815777;
return r815778;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 1.5
rmApplied p16-flip--2.5
Applied associate-/l/2.6
Simplified1.8
rmApplied associate-/r*1.7
rmApplied associate-*r*1.7
rmApplied associate-*r*1.7
Final simplification1.7
herbie shell --seed 2019124
(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)))