\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(\frac{\frac{\left(a + b\right) + c}{2}}{\frac{1.0}{\frac{a + \left(c + b\right)}{2} - a}} \cdot \left(\frac{\left(a + b\right) + c}{2} - b\right)\right) \cdot \left(\frac{\left(a + b\right) + c}{2} - c\right)}double f(double a, double b, double c) {
double r5491382 = a;
double r5491383 = b;
double r5491384 = r5491382 + r5491383;
double r5491385 = c;
double r5491386 = r5491384 + r5491385;
double r5491387 = 2.0;
double r5491388 = /* ERROR: no posit support in C */;
double r5491389 = r5491386 / r5491388;
double r5491390 = r5491389 - r5491382;
double r5491391 = r5491389 * r5491390;
double r5491392 = r5491389 - r5491383;
double r5491393 = r5491391 * r5491392;
double r5491394 = r5491389 - r5491385;
double r5491395 = r5491393 * r5491394;
double r5491396 = sqrt(r5491395);
return r5491396;
}
double f(double a, double b, double c) {
double r5491397 = a;
double r5491398 = b;
double r5491399 = r5491397 + r5491398;
double r5491400 = c;
double r5491401 = r5491399 + r5491400;
double r5491402 = 2.0;
double r5491403 = r5491401 / r5491402;
double r5491404 = 1.0;
double r5491405 = r5491400 + r5491398;
double r5491406 = r5491397 + r5491405;
double r5491407 = r5491406 / r5491402;
double r5491408 = r5491407 - r5491397;
double r5491409 = r5491404 / r5491408;
double r5491410 = r5491403 / r5491409;
double r5491411 = r5491403 - r5491398;
double r5491412 = r5491410 * r5491411;
double r5491413 = r5491403 - r5491400;
double r5491414 = r5491412 * r5491413;
double r5491415 = sqrt(r5491414);
return r5491415;
}



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 associate-/l*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019130 +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))))