\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(1\right)}{\left(\left(0.1049934947\right) \cdot \left(x \cdot x\right)\right)}\right)}{\left(\left(0.0424060604\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0072644182\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0005064034\right) \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0001789971\right) \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(1\right)}{\left(\left(0.7715471019\right) \cdot \left(x \cdot x\right)\right)}\right)}{\left(\left(0.2909738639\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0694555761\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0140005442\right) \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0008327945\right) \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(\left(2\right) \cdot \left(0.0001789971\right)\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}\right) \cdot x\frac{\left(\left(\left(\left(1 + 0.1049934947 \cdot \left(x \cdot x\right)\right) + 0.0424060604 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0072644182 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0005064034 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0001789971 \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)}{\left(\left(\left(\left(\left(1 + 0.7715471019 \cdot \left(x \cdot x\right)\right) + 0.2909738639 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0694555761 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0140005442 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + \left(0.0008327945 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(x \cdot x\right)\right) + \left(\left(2 \cdot 0.0001789971\right) \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(x \cdot x\right)} \cdot xdouble f(double x) {
double r1941444 = 1.0;
double r1941445 = /* ERROR: no posit support in C */;
double r1941446 = 0.1049934947;
double r1941447 = /* ERROR: no posit support in C */;
double r1941448 = x;
double r1941449 = r1941448 * r1941448;
double r1941450 = r1941447 * r1941449;
double r1941451 = r1941445 + r1941450;
double r1941452 = 0.0424060604;
double r1941453 = /* ERROR: no posit support in C */;
double r1941454 = r1941449 * r1941449;
double r1941455 = r1941453 * r1941454;
double r1941456 = r1941451 + r1941455;
double r1941457 = 0.0072644182;
double r1941458 = /* ERROR: no posit support in C */;
double r1941459 = r1941454 * r1941449;
double r1941460 = r1941458 * r1941459;
double r1941461 = r1941456 + r1941460;
double r1941462 = 0.0005064034;
double r1941463 = /* ERROR: no posit support in C */;
double r1941464 = r1941459 * r1941449;
double r1941465 = r1941463 * r1941464;
double r1941466 = r1941461 + r1941465;
double r1941467 = 0.0001789971;
double r1941468 = /* ERROR: no posit support in C */;
double r1941469 = r1941464 * r1941449;
double r1941470 = r1941468 * r1941469;
double r1941471 = r1941466 + r1941470;
double r1941472 = 0.7715471019;
double r1941473 = /* ERROR: no posit support in C */;
double r1941474 = r1941473 * r1941449;
double r1941475 = r1941445 + r1941474;
double r1941476 = 0.2909738639;
double r1941477 = /* ERROR: no posit support in C */;
double r1941478 = r1941477 * r1941454;
double r1941479 = r1941475 + r1941478;
double r1941480 = 0.0694555761;
double r1941481 = /* ERROR: no posit support in C */;
double r1941482 = r1941481 * r1941459;
double r1941483 = r1941479 + r1941482;
double r1941484 = 0.0140005442;
double r1941485 = /* ERROR: no posit support in C */;
double r1941486 = r1941485 * r1941464;
double r1941487 = r1941483 + r1941486;
double r1941488 = 0.0008327945;
double r1941489 = /* ERROR: no posit support in C */;
double r1941490 = r1941489 * r1941469;
double r1941491 = r1941487 + r1941490;
double r1941492 = 2.0;
double r1941493 = /* ERROR: no posit support in C */;
double r1941494 = r1941493 * r1941468;
double r1941495 = r1941469 * r1941449;
double r1941496 = r1941494 * r1941495;
double r1941497 = r1941491 + r1941496;
double r1941498 = r1941471 / r1941497;
double r1941499 = r1941498 * r1941448;
return r1941499;
}
double f(double x) {
double r1941500 = 1.0;
double r1941501 = 0.1049934947;
double r1941502 = x;
double r1941503 = r1941502 * r1941502;
double r1941504 = r1941501 * r1941503;
double r1941505 = r1941500 + r1941504;
double r1941506 = 0.0424060604;
double r1941507 = r1941503 * r1941503;
double r1941508 = r1941506 * r1941507;
double r1941509 = r1941505 + r1941508;
double r1941510 = 0.0072644182;
double r1941511 = r1941507 * r1941503;
double r1941512 = r1941510 * r1941511;
double r1941513 = r1941509 + r1941512;
double r1941514 = 0.0005064034;
double r1941515 = r1941511 * r1941503;
double r1941516 = r1941514 * r1941515;
double r1941517 = r1941513 + r1941516;
double r1941518 = 0.0001789971;
double r1941519 = r1941515 * r1941503;
double r1941520 = r1941518 * r1941519;
double r1941521 = r1941517 + r1941520;
double r1941522 = 0.7715471019;
double r1941523 = r1941522 * r1941503;
double r1941524 = r1941500 + r1941523;
double r1941525 = 0.2909738639;
double r1941526 = r1941525 * r1941507;
double r1941527 = r1941524 + r1941526;
double r1941528 = 0.0694555761;
double r1941529 = r1941528 * r1941511;
double r1941530 = r1941527 + r1941529;
double r1941531 = 0.0140005442;
double r1941532 = r1941531 * r1941515;
double r1941533 = r1941530 + r1941532;
double r1941534 = 0.0008327945;
double r1941535 = r1941534 * r1941515;
double r1941536 = r1941535 * r1941503;
double r1941537 = r1941533 + r1941536;
double r1941538 = 2.0;
double r1941539 = r1941538 * r1941518;
double r1941540 = r1941539 * r1941519;
double r1941541 = r1941540 * r1941503;
double r1941542 = r1941537 + r1941541;
double r1941543 = r1941521 / r1941542;
double r1941544 = r1941543 * r1941502;
return r1941544;
}



Bits error versus x
Initial program 4.3
rmApplied associate-*r*3.5
rmApplied associate-*r*3.2
Final simplification3.2
herbie shell --seed 2019124
(FPCore (x)
:name "Jmat.Real.dawson"
(*.p16 (/.p16 (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (real->posit16 1) (*.p16 (real->posit16 0.1049934947) (*.p16 x x))) (*.p16 (real->posit16 0.0424060604) (*.p16 (*.p16 x x) (*.p16 x x)))) (*.p16 (real->posit16 0.0072644182) (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0005064034) (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0001789971) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (real->posit16 1) (*.p16 (real->posit16 0.7715471019) (*.p16 x x))) (*.p16 (real->posit16 0.2909738639) (*.p16 (*.p16 x x) (*.p16 x x)))) (*.p16 (real->posit16 0.0694555761) (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0140005442) (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0008327945) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (*.p16 (real->posit16 2) (real->posit16 0.0001789971)) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x))))) x))