\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{x \cdot \left(\left(0.1049934947 + \left(0.0424060604 + \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot 0.0001789971 + 0.0005064034\right) + 0.0072644182\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right) + 1\right)}{1 + \left(x \cdot x\right) \cdot \left(0.7715471019 + \left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(\left(0.0140005442 + \left(\left(\left(x \cdot x\right) \cdot 0.0001789971\right) \cdot 2 + 0.0008327945\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right) + 0.0694555761\right) + 0.2909738639\right)\right)}double f(double x) {
double r4694591 = 1.0;
double r4694592 = /* ERROR: no posit support in C */;
double r4694593 = 0.1049934947;
double r4694594 = /* ERROR: no posit support in C */;
double r4694595 = x;
double r4694596 = r4694595 * r4694595;
double r4694597 = r4694594 * r4694596;
double r4694598 = r4694592 + r4694597;
double r4694599 = 0.0424060604;
double r4694600 = /* ERROR: no posit support in C */;
double r4694601 = r4694596 * r4694596;
double r4694602 = r4694600 * r4694601;
double r4694603 = r4694598 + r4694602;
double r4694604 = 0.0072644182;
double r4694605 = /* ERROR: no posit support in C */;
double r4694606 = r4694601 * r4694596;
double r4694607 = r4694605 * r4694606;
double r4694608 = r4694603 + r4694607;
double r4694609 = 0.0005064034;
double r4694610 = /* ERROR: no posit support in C */;
double r4694611 = r4694606 * r4694596;
double r4694612 = r4694610 * r4694611;
double r4694613 = r4694608 + r4694612;
double r4694614 = 0.0001789971;
double r4694615 = /* ERROR: no posit support in C */;
double r4694616 = r4694611 * r4694596;
double r4694617 = r4694615 * r4694616;
double r4694618 = r4694613 + r4694617;
double r4694619 = 0.7715471019;
double r4694620 = /* ERROR: no posit support in C */;
double r4694621 = r4694620 * r4694596;
double r4694622 = r4694592 + r4694621;
double r4694623 = 0.2909738639;
double r4694624 = /* ERROR: no posit support in C */;
double r4694625 = r4694624 * r4694601;
double r4694626 = r4694622 + r4694625;
double r4694627 = 0.0694555761;
double r4694628 = /* ERROR: no posit support in C */;
double r4694629 = r4694628 * r4694606;
double r4694630 = r4694626 + r4694629;
double r4694631 = 0.0140005442;
double r4694632 = /* ERROR: no posit support in C */;
double r4694633 = r4694632 * r4694611;
double r4694634 = r4694630 + r4694633;
double r4694635 = 0.0008327945;
double r4694636 = /* ERROR: no posit support in C */;
double r4694637 = r4694636 * r4694616;
double r4694638 = r4694634 + r4694637;
double r4694639 = 2.0;
double r4694640 = /* ERROR: no posit support in C */;
double r4694641 = r4694640 * r4694615;
double r4694642 = r4694616 * r4694596;
double r4694643 = r4694641 * r4694642;
double r4694644 = r4694638 + r4694643;
double r4694645 = r4694618 / r4694644;
double r4694646 = r4694645 * r4694595;
return r4694646;
}
double f(double x) {
double r4694647 = x;
double r4694648 = 0.1049934947;
double r4694649 = 0.0424060604;
double r4694650 = r4694647 * r4694647;
double r4694651 = 0.0001789971;
double r4694652 = r4694650 * r4694651;
double r4694653 = 0.0005064034;
double r4694654 = r4694652 + r4694653;
double r4694655 = r4694650 * r4694654;
double r4694656 = 0.0072644182;
double r4694657 = r4694655 + r4694656;
double r4694658 = r4694657 * r4694650;
double r4694659 = r4694649 + r4694658;
double r4694660 = r4694659 * r4694650;
double r4694661 = r4694648 + r4694660;
double r4694662 = r4694661 * r4694650;
double r4694663 = 1.0;
double r4694664 = r4694662 + r4694663;
double r4694665 = r4694647 * r4694664;
double r4694666 = 0.7715471019;
double r4694667 = 0.0140005442;
double r4694668 = 2.0;
double r4694669 = r4694652 * r4694668;
double r4694670 = 0.0008327945;
double r4694671 = r4694669 + r4694670;
double r4694672 = r4694671 * r4694650;
double r4694673 = r4694667 + r4694672;
double r4694674 = r4694673 * r4694650;
double r4694675 = 0.0694555761;
double r4694676 = r4694674 + r4694675;
double r4694677 = r4694650 * r4694676;
double r4694678 = 0.2909738639;
double r4694679 = r4694677 + r4694678;
double r4694680 = r4694650 * r4694679;
double r4694681 = r4694666 + r4694680;
double r4694682 = r4694650 * r4694681;
double r4694683 = r4694663 + r4694682;
double r4694684 = r4694665 / r4694683;
return r4694684;
}



Bits error versus x
Initial program 4.3
Simplified3.7
Simplified3.4
Simplified3.5
rmApplied associate-*l/3.4
Final simplification3.4
herbie shell --seed 2019130
(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))