\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{1.0}{\frac{\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0694555761 + 0.0140005442 \cdot \left(x \cdot x\right)\right) + \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(0.0008327945 + 2 \cdot \left(\left(x \cdot x\right) \cdot 0.0001789971\right)\right)\right) + \left(1 + \left(x \cdot x\right) \cdot \left(0.7715471019 + \left(x \cdot x\right) \cdot 0.2909738639\right)\right)}{\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0005064034\right) + \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(\left(x \cdot x\right) \cdot 0.0001789971\right)\right) + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0072644182 \cdot \left(x \cdot x\right) + 0.0424060604\right)\right) + \left(1 + \left(x \cdot x\right) \cdot 0.1049934947\right)}} \cdot xdouble f(double x) {
double r2378761 = 1.0;
double r2378762 = /* ERROR: no posit support in C */;
double r2378763 = 0.1049934947;
double r2378764 = /* ERROR: no posit support in C */;
double r2378765 = x;
double r2378766 = r2378765 * r2378765;
double r2378767 = r2378764 * r2378766;
double r2378768 = r2378762 + r2378767;
double r2378769 = 0.0424060604;
double r2378770 = /* ERROR: no posit support in C */;
double r2378771 = r2378766 * r2378766;
double r2378772 = r2378770 * r2378771;
double r2378773 = r2378768 + r2378772;
double r2378774 = 0.0072644182;
double r2378775 = /* ERROR: no posit support in C */;
double r2378776 = r2378771 * r2378766;
double r2378777 = r2378775 * r2378776;
double r2378778 = r2378773 + r2378777;
double r2378779 = 0.0005064034;
double r2378780 = /* ERROR: no posit support in C */;
double r2378781 = r2378776 * r2378766;
double r2378782 = r2378780 * r2378781;
double r2378783 = r2378778 + r2378782;
double r2378784 = 0.0001789971;
double r2378785 = /* ERROR: no posit support in C */;
double r2378786 = r2378781 * r2378766;
double r2378787 = r2378785 * r2378786;
double r2378788 = r2378783 + r2378787;
double r2378789 = 0.7715471019;
double r2378790 = /* ERROR: no posit support in C */;
double r2378791 = r2378790 * r2378766;
double r2378792 = r2378762 + r2378791;
double r2378793 = 0.2909738639;
double r2378794 = /* ERROR: no posit support in C */;
double r2378795 = r2378794 * r2378771;
double r2378796 = r2378792 + r2378795;
double r2378797 = 0.0694555761;
double r2378798 = /* ERROR: no posit support in C */;
double r2378799 = r2378798 * r2378776;
double r2378800 = r2378796 + r2378799;
double r2378801 = 0.0140005442;
double r2378802 = /* ERROR: no posit support in C */;
double r2378803 = r2378802 * r2378781;
double r2378804 = r2378800 + r2378803;
double r2378805 = 0.0008327945;
double r2378806 = /* ERROR: no posit support in C */;
double r2378807 = r2378806 * r2378786;
double r2378808 = r2378804 + r2378807;
double r2378809 = 2.0;
double r2378810 = /* ERROR: no posit support in C */;
double r2378811 = r2378810 * r2378785;
double r2378812 = r2378786 * r2378766;
double r2378813 = r2378811 * r2378812;
double r2378814 = r2378808 + r2378813;
double r2378815 = r2378788 / r2378814;
double r2378816 = r2378815 * r2378765;
return r2378816;
}
double f(double x) {
double r2378817 = 1.0;
double r2378818 = x;
double r2378819 = r2378818 * r2378818;
double r2378820 = r2378819 * r2378819;
double r2378821 = 0.0694555761;
double r2378822 = 0.0140005442;
double r2378823 = r2378822 * r2378819;
double r2378824 = r2378821 + r2378823;
double r2378825 = r2378820 * r2378824;
double r2378826 = r2378820 * r2378820;
double r2378827 = 0.0008327945;
double r2378828 = 2.0;
double r2378829 = 0.0001789971;
double r2378830 = r2378819 * r2378829;
double r2378831 = r2378828 * r2378830;
double r2378832 = r2378827 + r2378831;
double r2378833 = r2378826 * r2378832;
double r2378834 = r2378825 + r2378833;
double r2378835 = r2378819 * r2378834;
double r2378836 = 1.0;
double r2378837 = 0.7715471019;
double r2378838 = 0.2909738639;
double r2378839 = r2378819 * r2378838;
double r2378840 = r2378837 + r2378839;
double r2378841 = r2378819 * r2378840;
double r2378842 = r2378836 + r2378841;
double r2378843 = r2378835 + r2378842;
double r2378844 = 0.0005064034;
double r2378845 = r2378820 * r2378844;
double r2378846 = r2378820 * r2378845;
double r2378847 = r2378826 * r2378830;
double r2378848 = r2378846 + r2378847;
double r2378849 = 0.0072644182;
double r2378850 = r2378849 * r2378819;
double r2378851 = 0.0424060604;
double r2378852 = r2378850 + r2378851;
double r2378853 = r2378820 * r2378852;
double r2378854 = r2378848 + r2378853;
double r2378855 = 0.1049934947;
double r2378856 = r2378819 * r2378855;
double r2378857 = r2378836 + r2378856;
double r2378858 = r2378854 + r2378857;
double r2378859 = r2378843 / r2378858;
double r2378860 = r2378817 / r2378859;
double r2378861 = r2378860 * r2378818;
return r2378861;
}



Bits error versus x
Initial program 4.3
Simplified3.4
rmApplied distribute-lft-in3.4
rmApplied associate-*l*3.4
rmApplied p16-*-un-lft-identity3.4
Applied p16-*-un-lft-identity3.4
Applied p16-distribute-lft-out3.4
Applied associate-/l*3.4
Final simplification3.4
herbie shell --seed 2019153 +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))