\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(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.0005064034 + \left(x \cdot x\right) \cdot 0.0001789971\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)}{\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(x \cdot \left(x \cdot 0.0001789971\right)\right)\right)\right) + \left(1 + \left(x \cdot x\right) \cdot \left(0.7715471019 + \left(x \cdot x\right) \cdot 0.2909738639\right)\right)} \cdot xdouble f(double x) {
double r2250119 = 1.0;
double r2250120 = /* ERROR: no posit support in C */;
double r2250121 = 0.1049934947;
double r2250122 = /* ERROR: no posit support in C */;
double r2250123 = x;
double r2250124 = r2250123 * r2250123;
double r2250125 = r2250122 * r2250124;
double r2250126 = r2250120 + r2250125;
double r2250127 = 0.0424060604;
double r2250128 = /* ERROR: no posit support in C */;
double r2250129 = r2250124 * r2250124;
double r2250130 = r2250128 * r2250129;
double r2250131 = r2250126 + r2250130;
double r2250132 = 0.0072644182;
double r2250133 = /* ERROR: no posit support in C */;
double r2250134 = r2250129 * r2250124;
double r2250135 = r2250133 * r2250134;
double r2250136 = r2250131 + r2250135;
double r2250137 = 0.0005064034;
double r2250138 = /* ERROR: no posit support in C */;
double r2250139 = r2250134 * r2250124;
double r2250140 = r2250138 * r2250139;
double r2250141 = r2250136 + r2250140;
double r2250142 = 0.0001789971;
double r2250143 = /* ERROR: no posit support in C */;
double r2250144 = r2250139 * r2250124;
double r2250145 = r2250143 * r2250144;
double r2250146 = r2250141 + r2250145;
double r2250147 = 0.7715471019;
double r2250148 = /* ERROR: no posit support in C */;
double r2250149 = r2250148 * r2250124;
double r2250150 = r2250120 + r2250149;
double r2250151 = 0.2909738639;
double r2250152 = /* ERROR: no posit support in C */;
double r2250153 = r2250152 * r2250129;
double r2250154 = r2250150 + r2250153;
double r2250155 = 0.0694555761;
double r2250156 = /* ERROR: no posit support in C */;
double r2250157 = r2250156 * r2250134;
double r2250158 = r2250154 + r2250157;
double r2250159 = 0.0140005442;
double r2250160 = /* ERROR: no posit support in C */;
double r2250161 = r2250160 * r2250139;
double r2250162 = r2250158 + r2250161;
double r2250163 = 0.0008327945;
double r2250164 = /* ERROR: no posit support in C */;
double r2250165 = r2250164 * r2250144;
double r2250166 = r2250162 + r2250165;
double r2250167 = 2.0;
double r2250168 = /* ERROR: no posit support in C */;
double r2250169 = r2250168 * r2250143;
double r2250170 = r2250144 * r2250124;
double r2250171 = r2250169 * r2250170;
double r2250172 = r2250166 + r2250171;
double r2250173 = r2250146 / r2250172;
double r2250174 = r2250173 * r2250123;
return r2250174;
}
double f(double x) {
double r2250175 = x;
double r2250176 = r2250175 * r2250175;
double r2250177 = r2250176 * r2250176;
double r2250178 = r2250177 * r2250177;
double r2250179 = 0.0005064034;
double r2250180 = 0.0001789971;
double r2250181 = r2250176 * r2250180;
double r2250182 = r2250179 + r2250181;
double r2250183 = r2250178 * r2250182;
double r2250184 = 0.0072644182;
double r2250185 = r2250184 * r2250176;
double r2250186 = 0.0424060604;
double r2250187 = r2250185 + r2250186;
double r2250188 = r2250177 * r2250187;
double r2250189 = r2250183 + r2250188;
double r2250190 = 1.0;
double r2250191 = 0.1049934947;
double r2250192 = r2250176 * r2250191;
double r2250193 = r2250190 + r2250192;
double r2250194 = r2250189 + r2250193;
double r2250195 = 0.0694555761;
double r2250196 = 0.0140005442;
double r2250197 = r2250196 * r2250176;
double r2250198 = r2250195 + r2250197;
double r2250199 = r2250177 * r2250198;
double r2250200 = 0.0008327945;
double r2250201 = 2.0;
double r2250202 = r2250175 * r2250180;
double r2250203 = r2250175 * r2250202;
double r2250204 = r2250201 * r2250203;
double r2250205 = r2250200 + r2250204;
double r2250206 = r2250178 * r2250205;
double r2250207 = r2250199 + r2250206;
double r2250208 = r2250176 * r2250207;
double r2250209 = 0.7715471019;
double r2250210 = 0.2909738639;
double r2250211 = r2250176 * r2250210;
double r2250212 = r2250209 + r2250211;
double r2250213 = r2250176 * r2250212;
double r2250214 = r2250190 + r2250213;
double r2250215 = r2250208 + r2250214;
double r2250216 = r2250194 / r2250215;
double r2250217 = r2250216 * r2250175;
return r2250217;
}



Bits error versus x
Initial program 4.3
Simplified3.5
rmApplied associate-*l*3.5
Final simplification3.5
herbie shell --seed 2019154 +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))