\sqrt{\left(\left(\left(\left(\frac{\left(\frac{\left(\frac{a}{b}\right)}{c}\right)}{\left(2\right)}\right) \cdot \left(\left(\frac{\left(\frac{\left(\frac{a}{b}\right)}{c}\right)}{\left(2\right)}\right) - a\right)\right) \cdot \left(\left(\frac{\left(\frac{\left(\frac{a}{b}\right)}{c}\right)}{\left(2\right)}\right) - b\right)\right) \cdot \left(\left(\frac{\left(\frac{\left(\frac{a}{b}\right)}{c}\right)}{\left(2\right)}\right) - c\right)\right)}\sqrt{\left(\left(\frac{\left(a + b\right) + c}{2} \cdot \left(\frac{\left(a + b\right) + c}{2} - a\right)\right) \cdot \left(\frac{a + \left(c + b\right)}{2} - b\right)\right) \cdot \left(\frac{\left(c + b\right) + a}{2} - c\right)}double f(double a, double b, double c) {
double r1814833 = a;
double r1814834 = b;
double r1814835 = r1814833 + r1814834;
double r1814836 = c;
double r1814837 = r1814835 + r1814836;
double r1814838 = 2.0;
double r1814839 = /* ERROR: no posit support in C */;
double r1814840 = r1814837 / r1814839;
double r1814841 = r1814840 - r1814833;
double r1814842 = r1814840 * r1814841;
double r1814843 = r1814840 - r1814834;
double r1814844 = r1814842 * r1814843;
double r1814845 = r1814840 - r1814836;
double r1814846 = r1814844 * r1814845;
double r1814847 = sqrt(r1814846);
return r1814847;
}
double f(double a, double b, double c) {
double r1814848 = a;
double r1814849 = b;
double r1814850 = r1814848 + r1814849;
double r1814851 = c;
double r1814852 = r1814850 + r1814851;
double r1814853 = 2.0;
double r1814854 = r1814852 / r1814853;
double r1814855 = r1814854 - r1814848;
double r1814856 = r1814854 * r1814855;
double r1814857 = r1814851 + r1814849;
double r1814858 = r1814848 + r1814857;
double r1814859 = r1814858 / r1814853;
double r1814860 = r1814859 - r1814849;
double r1814861 = r1814856 * r1814860;
double r1814862 = r1814857 + r1814848;
double r1814863 = r1814862 / r1814853;
double r1814864 = r1814863 - r1814851;
double r1814865 = r1814861 * r1814864;
double r1814866 = sqrt(r1814865);
return r1814866;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 0.2
rmApplied p16-*-un-lft-identity0.2
Applied associate-/r*0.2
Simplified0.1
rmApplied p16-*-un-lft-identity0.1
Applied associate-/r*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019156 +o rules:numerics
(FPCore (a b c)
:name "Area of a triangle"
:pre (and (<.p16 (real->posit16 0) a) (<.p16 (real->posit16 0) b) (<.p16 (real->posit16 0) c))
(sqrt.p16 (*.p16 (*.p16 (*.p16 (/.p16 (+.p16 (+.p16 a b) c) (real->posit16 2)) (-.p16 (/.p16 (+.p16 (+.p16 a b) c) (real->posit16 2)) a)) (-.p16 (/.p16 (+.p16 (+.p16 a b) c) (real->posit16 2)) b)) (-.p16 (/.p16 (+.p16 (+.p16 a b) c) (real->posit16 2)) c))))