\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(0.0005064034 \cdot \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) + \left(\left(x \cdot x\right) \cdot 0.0001789971\right) \cdot \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)\right) + \left(1 + \left(x \cdot x\right) \cdot 0.1049934947\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)}{\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(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.2909738639 + \left(1 + \left(x \cdot x\right) \cdot 0.7715471019\right)\right)} \cdot xdouble f(double x) {
double r1969953 = 1.0;
double r1969954 = /* ERROR: no posit support in C */;
double r1969955 = 0.1049934947;
double r1969956 = /* ERROR: no posit support in C */;
double r1969957 = x;
double r1969958 = r1969957 * r1969957;
double r1969959 = r1969956 * r1969958;
double r1969960 = r1969954 + r1969959;
double r1969961 = 0.0424060604;
double r1969962 = /* ERROR: no posit support in C */;
double r1969963 = r1969958 * r1969958;
double r1969964 = r1969962 * r1969963;
double r1969965 = r1969960 + r1969964;
double r1969966 = 0.0072644182;
double r1969967 = /* ERROR: no posit support in C */;
double r1969968 = r1969963 * r1969958;
double r1969969 = r1969967 * r1969968;
double r1969970 = r1969965 + r1969969;
double r1969971 = 0.0005064034;
double r1969972 = /* ERROR: no posit support in C */;
double r1969973 = r1969968 * r1969958;
double r1969974 = r1969972 * r1969973;
double r1969975 = r1969970 + r1969974;
double r1969976 = 0.0001789971;
double r1969977 = /* ERROR: no posit support in C */;
double r1969978 = r1969973 * r1969958;
double r1969979 = r1969977 * r1969978;
double r1969980 = r1969975 + r1969979;
double r1969981 = 0.7715471019;
double r1969982 = /* ERROR: no posit support in C */;
double r1969983 = r1969982 * r1969958;
double r1969984 = r1969954 + r1969983;
double r1969985 = 0.2909738639;
double r1969986 = /* ERROR: no posit support in C */;
double r1969987 = r1969986 * r1969963;
double r1969988 = r1969984 + r1969987;
double r1969989 = 0.0694555761;
double r1969990 = /* ERROR: no posit support in C */;
double r1969991 = r1969990 * r1969968;
double r1969992 = r1969988 + r1969991;
double r1969993 = 0.0140005442;
double r1969994 = /* ERROR: no posit support in C */;
double r1969995 = r1969994 * r1969973;
double r1969996 = r1969992 + r1969995;
double r1969997 = 0.0008327945;
double r1969998 = /* ERROR: no posit support in C */;
double r1969999 = r1969998 * r1969978;
double r1970000 = r1969996 + r1969999;
double r1970001 = 2.0;
double r1970002 = /* ERROR: no posit support in C */;
double r1970003 = r1970002 * r1969977;
double r1970004 = r1969978 * r1969958;
double r1970005 = r1970003 * r1970004;
double r1970006 = r1970000 + r1970005;
double r1970007 = r1969980 / r1970006;
double r1970008 = r1970007 * r1969957;
return r1970008;
}
double f(double x) {
double r1970009 = 0.0005064034;
double r1970010 = x;
double r1970011 = r1970010 * r1970010;
double r1970012 = r1970011 * r1970011;
double r1970013 = r1970012 * r1970012;
double r1970014 = r1970009 * r1970013;
double r1970015 = 0.0001789971;
double r1970016 = r1970011 * r1970015;
double r1970017 = r1970016 * r1970013;
double r1970018 = r1970014 + r1970017;
double r1970019 = 1.0;
double r1970020 = 0.1049934947;
double r1970021 = r1970011 * r1970020;
double r1970022 = r1970019 + r1970021;
double r1970023 = r1970018 + r1970022;
double r1970024 = 0.0072644182;
double r1970025 = r1970024 * r1970011;
double r1970026 = 0.0424060604;
double r1970027 = r1970025 + r1970026;
double r1970028 = r1970012 * r1970027;
double r1970029 = r1970023 + r1970028;
double r1970030 = 0.0694555761;
double r1970031 = 0.0140005442;
double r1970032 = r1970031 * r1970011;
double r1970033 = r1970030 + r1970032;
double r1970034 = r1970012 * r1970033;
double r1970035 = 0.0008327945;
double r1970036 = 2.0;
double r1970037 = r1970036 * r1970016;
double r1970038 = r1970035 + r1970037;
double r1970039 = r1970013 * r1970038;
double r1970040 = r1970034 + r1970039;
double r1970041 = r1970011 * r1970040;
double r1970042 = 0.2909738639;
double r1970043 = r1970012 * r1970042;
double r1970044 = 0.7715471019;
double r1970045 = r1970011 * r1970044;
double r1970046 = r1970019 + r1970045;
double r1970047 = r1970043 + r1970046;
double r1970048 = r1970041 + r1970047;
double r1970049 = r1970029 / r1970048;
double r1970050 = r1970049 * r1970010;
return r1970050;
}



Bits error versus x
Initial program 4.3
Simplified3.4
rmApplied distribute-rgt-in3.4
Final simplification3.4
herbie shell --seed 2019128 +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))