\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{\frac{\left(\frac{\left(a + b\right) + c}{2} \cdot \left(\frac{\left(a + b\right) + c}{2} - a\right)\right) \cdot \left(\left(\frac{\left(a + b\right) + c}{2} + b\right) \cdot \left(\frac{\left(a + b\right) + c}{2} - b\right)\right)}{\frac{\left(a + b\right) + c}{2} + b} \cdot \left(\frac{\left(a + b\right) + c}{2} - c\right)}double f(double a, double b, double c) {
double r5947866 = a;
double r5947867 = b;
double r5947868 = r5947866 + r5947867;
double r5947869 = c;
double r5947870 = r5947868 + r5947869;
double r5947871 = 2.0;
double r5947872 = /* ERROR: no posit support in C */;
double r5947873 = r5947870 / r5947872;
double r5947874 = r5947873 - r5947866;
double r5947875 = r5947873 * r5947874;
double r5947876 = r5947873 - r5947867;
double r5947877 = r5947875 * r5947876;
double r5947878 = r5947873 - r5947869;
double r5947879 = r5947877 * r5947878;
double r5947880 = sqrt(r5947879);
return r5947880;
}
double f(double a, double b, double c) {
double r5947881 = a;
double r5947882 = b;
double r5947883 = r5947881 + r5947882;
double r5947884 = c;
double r5947885 = r5947883 + r5947884;
double r5947886 = 2.0;
double r5947887 = r5947885 / r5947886;
double r5947888 = r5947887 - r5947881;
double r5947889 = r5947887 * r5947888;
double r5947890 = r5947887 + r5947882;
double r5947891 = r5947887 - r5947882;
double r5947892 = r5947890 * r5947891;
double r5947893 = r5947889 * r5947892;
double r5947894 = r5947893 / r5947890;
double r5947895 = r5947887 - r5947884;
double r5947896 = r5947894 * r5947895;
double r5947897 = sqrt(r5947896);
return r5947897;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 0.2
rmApplied p16-flip--0.2
Applied associate-*r/0.2
rmApplied difference-of-squares0.2
Final simplification0.2
herbie shell --seed 2019128
(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))))