\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{\left(a + b\right) + c}{2} - b\right)\right) \cdot \frac{\frac{\left(a + b\right) + c}{2} + c}{\frac{\frac{\left(a + b\right) + c}{2} + c}{\frac{\left(a + b\right) + c}{2} - c}}}double f(double a, double b, double c) {
double r1712602 = a;
double r1712603 = b;
double r1712604 = r1712602 + r1712603;
double r1712605 = c;
double r1712606 = r1712604 + r1712605;
double r1712607 = 2.0;
double r1712608 = /* ERROR: no posit support in C */;
double r1712609 = r1712606 / r1712608;
double r1712610 = r1712609 - r1712602;
double r1712611 = r1712609 * r1712610;
double r1712612 = r1712609 - r1712603;
double r1712613 = r1712611 * r1712612;
double r1712614 = r1712609 - r1712605;
double r1712615 = r1712613 * r1712614;
double r1712616 = sqrt(r1712615);
return r1712616;
}
double f(double a, double b, double c) {
double r1712617 = a;
double r1712618 = b;
double r1712619 = r1712617 + r1712618;
double r1712620 = c;
double r1712621 = r1712619 + r1712620;
double r1712622 = 2.0;
double r1712623 = r1712621 / r1712622;
double r1712624 = r1712623 - r1712617;
double r1712625 = r1712623 * r1712624;
double r1712626 = r1712623 - r1712618;
double r1712627 = r1712625 * r1712626;
double r1712628 = r1712623 + r1712620;
double r1712629 = r1712623 - r1712620;
double r1712630 = r1712628 / r1712629;
double r1712631 = r1712628 / r1712630;
double r1712632 = r1712627 * r1712631;
double r1712633 = sqrt(r1712632);
return r1712633;
}



Bits error versus a



Bits error versus b



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