\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(x \cdot x\right) \cdot \left(0.1049934947 + \left(0.0072644182 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + \left(x \cdot x\right) \cdot \left(0.0424060604 + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0005064034 + 0.0001789971 \cdot \left(x \cdot x\right)\right)\right)\right)\right) + 1\right)}{\left(1 + \left(x \cdot x\right) \cdot 0.7715471019\right) + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot 0.0694555761 + \left(0.2909738639 + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(0.0008327945 + 2 \cdot \left(0.0001789971 \cdot \left(x \cdot x\right)\right)\right) \cdot \left(x \cdot x\right) + 0.0140005442\right)\right)\right)}double f(double x) {
double r7676733 = 1.0;
double r7676734 = /* ERROR: no posit support in C */;
double r7676735 = 0.1049934947;
double r7676736 = /* ERROR: no posit support in C */;
double r7676737 = x;
double r7676738 = r7676737 * r7676737;
double r7676739 = r7676736 * r7676738;
double r7676740 = r7676734 + r7676739;
double r7676741 = 0.0424060604;
double r7676742 = /* ERROR: no posit support in C */;
double r7676743 = r7676738 * r7676738;
double r7676744 = r7676742 * r7676743;
double r7676745 = r7676740 + r7676744;
double r7676746 = 0.0072644182;
double r7676747 = /* ERROR: no posit support in C */;
double r7676748 = r7676743 * r7676738;
double r7676749 = r7676747 * r7676748;
double r7676750 = r7676745 + r7676749;
double r7676751 = 0.0005064034;
double r7676752 = /* ERROR: no posit support in C */;
double r7676753 = r7676748 * r7676738;
double r7676754 = r7676752 * r7676753;
double r7676755 = r7676750 + r7676754;
double r7676756 = 0.0001789971;
double r7676757 = /* ERROR: no posit support in C */;
double r7676758 = r7676753 * r7676738;
double r7676759 = r7676757 * r7676758;
double r7676760 = r7676755 + r7676759;
double r7676761 = 0.7715471019;
double r7676762 = /* ERROR: no posit support in C */;
double r7676763 = r7676762 * r7676738;
double r7676764 = r7676734 + r7676763;
double r7676765 = 0.2909738639;
double r7676766 = /* ERROR: no posit support in C */;
double r7676767 = r7676766 * r7676743;
double r7676768 = r7676764 + r7676767;
double r7676769 = 0.0694555761;
double r7676770 = /* ERROR: no posit support in C */;
double r7676771 = r7676770 * r7676748;
double r7676772 = r7676768 + r7676771;
double r7676773 = 0.0140005442;
double r7676774 = /* ERROR: no posit support in C */;
double r7676775 = r7676774 * r7676753;
double r7676776 = r7676772 + r7676775;
double r7676777 = 0.0008327945;
double r7676778 = /* ERROR: no posit support in C */;
double r7676779 = r7676778 * r7676758;
double r7676780 = r7676776 + r7676779;
double r7676781 = 2.0;
double r7676782 = /* ERROR: no posit support in C */;
double r7676783 = r7676782 * r7676757;
double r7676784 = r7676758 * r7676738;
double r7676785 = r7676783 * r7676784;
double r7676786 = r7676780 + r7676785;
double r7676787 = r7676760 / r7676786;
double r7676788 = r7676787 * r7676737;
return r7676788;
}
double f(double x) {
double r7676789 = x;
double r7676790 = r7676789 * r7676789;
double r7676791 = 0.1049934947;
double r7676792 = 0.0072644182;
double r7676793 = r7676790 * r7676790;
double r7676794 = r7676792 * r7676793;
double r7676795 = 0.0424060604;
double r7676796 = 0.0005064034;
double r7676797 = 0.0001789971;
double r7676798 = r7676797 * r7676790;
double r7676799 = r7676796 + r7676798;
double r7676800 = r7676793 * r7676799;
double r7676801 = r7676795 + r7676800;
double r7676802 = r7676790 * r7676801;
double r7676803 = r7676794 + r7676802;
double r7676804 = r7676791 + r7676803;
double r7676805 = r7676790 * r7676804;
double r7676806 = 1.0;
double r7676807 = r7676805 + r7676806;
double r7676808 = r7676789 * r7676807;
double r7676809 = 0.7715471019;
double r7676810 = r7676790 * r7676809;
double r7676811 = r7676806 + r7676810;
double r7676812 = 0.0694555761;
double r7676813 = r7676790 * r7676812;
double r7676814 = 0.2909738639;
double r7676815 = 0.0008327945;
double r7676816 = 2.0;
double r7676817 = r7676816 * r7676798;
double r7676818 = r7676815 + r7676817;
double r7676819 = r7676818 * r7676790;
double r7676820 = 0.0140005442;
double r7676821 = r7676819 + r7676820;
double r7676822 = r7676793 * r7676821;
double r7676823 = r7676814 + r7676822;
double r7676824 = r7676813 + r7676823;
double r7676825 = r7676793 * r7676824;
double r7676826 = r7676811 + r7676825;
double r7676827 = r7676808 / r7676826;
return r7676827;
}



Bits error versus x
Initial program 4.3
Simplified3.7
Simplified3.4
Final simplification3.4
herbie shell --seed 2019132 +o rules:numerics
(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))