\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(\left(\left(\frac{\left(a + b\right) + c}{2} + a\right) \cdot \left(\frac{\left(a + b\right) + c}{2} - a\right)\right) \cdot \left(\frac{\left(a + b\right) + c}{2} - b\right)\right)\right) \cdot \left(\frac{\left(a + b\right) + c}{2} - c\right)}{\frac{\left(a + b\right) + c}{2} + a}}double f(double a, double b, double c) {
double r7377478 = a;
double r7377479 = b;
double r7377480 = r7377478 + r7377479;
double r7377481 = c;
double r7377482 = r7377480 + r7377481;
double r7377483 = 2.0;
double r7377484 = /* ERROR: no posit support in C */;
double r7377485 = r7377482 / r7377484;
double r7377486 = r7377485 - r7377478;
double r7377487 = r7377485 * r7377486;
double r7377488 = r7377485 - r7377479;
double r7377489 = r7377487 * r7377488;
double r7377490 = r7377485 - r7377481;
double r7377491 = r7377489 * r7377490;
double r7377492 = sqrt(r7377491);
return r7377492;
}
double f(double a, double b, double c) {
double r7377493 = a;
double r7377494 = b;
double r7377495 = r7377493 + r7377494;
double r7377496 = c;
double r7377497 = r7377495 + r7377496;
double r7377498 = 2.0;
double r7377499 = r7377497 / r7377498;
double r7377500 = r7377499 + r7377493;
double r7377501 = r7377499 - r7377493;
double r7377502 = r7377500 * r7377501;
double r7377503 = r7377499 - r7377494;
double r7377504 = r7377502 * r7377503;
double r7377505 = r7377499 * r7377504;
double r7377506 = r7377499 - r7377496;
double r7377507 = r7377505 * r7377506;
double r7377508 = r7377507 / r7377500;
double r7377509 = sqrt(r7377508);
return r7377509;
}



Bits error versus a



Bits error versus b



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