\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 r2410009 = 1.0;
double r2410010 = /* ERROR: no posit support in C */;
double r2410011 = 0.1049934947;
double r2410012 = /* ERROR: no posit support in C */;
double r2410013 = x;
double r2410014 = r2410013 * r2410013;
double r2410015 = r2410012 * r2410014;
double r2410016 = r2410010 + r2410015;
double r2410017 = 0.0424060604;
double r2410018 = /* ERROR: no posit support in C */;
double r2410019 = r2410014 * r2410014;
double r2410020 = r2410018 * r2410019;
double r2410021 = r2410016 + r2410020;
double r2410022 = 0.0072644182;
double r2410023 = /* ERROR: no posit support in C */;
double r2410024 = r2410019 * r2410014;
double r2410025 = r2410023 * r2410024;
double r2410026 = r2410021 + r2410025;
double r2410027 = 0.0005064034;
double r2410028 = /* ERROR: no posit support in C */;
double r2410029 = r2410024 * r2410014;
double r2410030 = r2410028 * r2410029;
double r2410031 = r2410026 + r2410030;
double r2410032 = 0.0001789971;
double r2410033 = /* ERROR: no posit support in C */;
double r2410034 = r2410029 * r2410014;
double r2410035 = r2410033 * r2410034;
double r2410036 = r2410031 + r2410035;
double r2410037 = 0.7715471019;
double r2410038 = /* ERROR: no posit support in C */;
double r2410039 = r2410038 * r2410014;
double r2410040 = r2410010 + r2410039;
double r2410041 = 0.2909738639;
double r2410042 = /* ERROR: no posit support in C */;
double r2410043 = r2410042 * r2410019;
double r2410044 = r2410040 + r2410043;
double r2410045 = 0.0694555761;
double r2410046 = /* ERROR: no posit support in C */;
double r2410047 = r2410046 * r2410024;
double r2410048 = r2410044 + r2410047;
double r2410049 = 0.0140005442;
double r2410050 = /* ERROR: no posit support in C */;
double r2410051 = r2410050 * r2410029;
double r2410052 = r2410048 + r2410051;
double r2410053 = 0.0008327945;
double r2410054 = /* ERROR: no posit support in C */;
double r2410055 = r2410054 * r2410034;
double r2410056 = r2410052 + r2410055;
double r2410057 = 2.0;
double r2410058 = /* ERROR: no posit support in C */;
double r2410059 = r2410058 * r2410033;
double r2410060 = r2410034 * r2410014;
double r2410061 = r2410059 * r2410060;
double r2410062 = r2410056 + r2410061;
double r2410063 = r2410036 / r2410062;
double r2410064 = r2410063 * r2410013;
return r2410064;
}
double f(double x) {
double r2410065 = 1.0;
double r2410066 = 0.1049934947;
double r2410067 = x;
double r2410068 = r2410067 * r2410067;
double r2410069 = r2410066 * r2410068;
double r2410070 = r2410065 + r2410069;
double r2410071 = 0.0424060604;
double r2410072 = r2410068 * r2410068;
double r2410073 = r2410071 * r2410072;
double r2410074 = r2410070 + r2410073;
double r2410075 = 0.0072644182;
double r2410076 = r2410072 * r2410068;
double r2410077 = r2410075 * r2410076;
double r2410078 = r2410074 + r2410077;
double r2410079 = 0.0005064034;
double r2410080 = r2410076 * r2410068;
double r2410081 = r2410079 * r2410080;
double r2410082 = r2410078 + r2410081;
double r2410083 = 0.0001789971;
double r2410084 = r2410080 * r2410068;
double r2410085 = r2410083 * r2410084;
double r2410086 = r2410082 + r2410085;
double r2410087 = 0.7715471019;
double r2410088 = r2410087 * r2410068;
double r2410089 = r2410065 + r2410088;
double r2410090 = 0.2909738639;
double r2410091 = r2410090 * r2410072;
double r2410092 = r2410089 + r2410091;
double r2410093 = 0.0694555761;
double r2410094 = r2410093 * r2410076;
double r2410095 = r2410092 + r2410094;
double r2410096 = 0.0140005442;
double r2410097 = r2410096 * r2410080;
double r2410098 = r2410095 + r2410097;
double r2410099 = 0.0008327945;
double r2410100 = r2410099 * r2410080;
double r2410101 = r2410100 * r2410068;
double r2410102 = r2410098 + r2410101;
double r2410103 = 2.0;
double r2410104 = r2410103 * r2410083;
double r2410105 = r2410104 * r2410084;
double r2410106 = r2410105 * r2410068;
double r2410107 = r2410102 + r2410106;
double r2410108 = r2410086 / r2410107;
double r2410109 = r2410108 * r2410067;
return r2410109;
}



Bits error versus x
Initial program 4.3
rmApplied associate-*r*3.5
rmApplied associate-*r*3.2
Final simplification3.2
herbie shell --seed 2019121 +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))