\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(x \cdot x\right) \cdot \left(\left(0.0424060604 + \left(0.0072644182 + \left(\left(x \cdot x\right) \cdot 0.0001789971 + 0.0005064034\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right) + 0.1049934947\right) + 1\right) \cdot x}{\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0140005442\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + 1\right) + \left(x \cdot x\right) \cdot \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 \left(0.0008327945 + \left(0.0001789971 \cdot 2\right) \cdot \left(x \cdot x\right)\right) + 0.0694555761\right) + \left(0.7715471019 + 0.2909738639 \cdot \left(x \cdot x\right)\right)\right)}double f(double x) {
double r5091155 = 1.0;
double r5091156 = /* ERROR: no posit support in C */;
double r5091157 = 0.1049934947;
double r5091158 = /* ERROR: no posit support in C */;
double r5091159 = x;
double r5091160 = r5091159 * r5091159;
double r5091161 = r5091158 * r5091160;
double r5091162 = r5091156 + r5091161;
double r5091163 = 0.0424060604;
double r5091164 = /* ERROR: no posit support in C */;
double r5091165 = r5091160 * r5091160;
double r5091166 = r5091164 * r5091165;
double r5091167 = r5091162 + r5091166;
double r5091168 = 0.0072644182;
double r5091169 = /* ERROR: no posit support in C */;
double r5091170 = r5091165 * r5091160;
double r5091171 = r5091169 * r5091170;
double r5091172 = r5091167 + r5091171;
double r5091173 = 0.0005064034;
double r5091174 = /* ERROR: no posit support in C */;
double r5091175 = r5091170 * r5091160;
double r5091176 = r5091174 * r5091175;
double r5091177 = r5091172 + r5091176;
double r5091178 = 0.0001789971;
double r5091179 = /* ERROR: no posit support in C */;
double r5091180 = r5091175 * r5091160;
double r5091181 = r5091179 * r5091180;
double r5091182 = r5091177 + r5091181;
double r5091183 = 0.7715471019;
double r5091184 = /* ERROR: no posit support in C */;
double r5091185 = r5091184 * r5091160;
double r5091186 = r5091156 + r5091185;
double r5091187 = 0.2909738639;
double r5091188 = /* ERROR: no posit support in C */;
double r5091189 = r5091188 * r5091165;
double r5091190 = r5091186 + r5091189;
double r5091191 = 0.0694555761;
double r5091192 = /* ERROR: no posit support in C */;
double r5091193 = r5091192 * r5091170;
double r5091194 = r5091190 + r5091193;
double r5091195 = 0.0140005442;
double r5091196 = /* ERROR: no posit support in C */;
double r5091197 = r5091196 * r5091175;
double r5091198 = r5091194 + r5091197;
double r5091199 = 0.0008327945;
double r5091200 = /* ERROR: no posit support in C */;
double r5091201 = r5091200 * r5091180;
double r5091202 = r5091198 + r5091201;
double r5091203 = 2.0;
double r5091204 = /* ERROR: no posit support in C */;
double r5091205 = r5091204 * r5091179;
double r5091206 = r5091180 * r5091160;
double r5091207 = r5091205 * r5091206;
double r5091208 = r5091202 + r5091207;
double r5091209 = r5091182 / r5091208;
double r5091210 = r5091209 * r5091159;
return r5091210;
}
double f(double x) {
double r5091211 = x;
double r5091212 = r5091211 * r5091211;
double r5091213 = 0.0424060604;
double r5091214 = 0.0072644182;
double r5091215 = 0.0001789971;
double r5091216 = r5091212 * r5091215;
double r5091217 = 0.0005064034;
double r5091218 = r5091216 + r5091217;
double r5091219 = r5091218 * r5091212;
double r5091220 = r5091214 + r5091219;
double r5091221 = r5091220 * r5091212;
double r5091222 = r5091213 + r5091221;
double r5091223 = r5091222 * r5091212;
double r5091224 = 0.1049934947;
double r5091225 = r5091223 + r5091224;
double r5091226 = r5091212 * r5091225;
double r5091227 = 1.0;
double r5091228 = r5091226 + r5091227;
double r5091229 = r5091228 * r5091211;
double r5091230 = r5091212 * r5091212;
double r5091231 = 0.0140005442;
double r5091232 = r5091230 * r5091231;
double r5091233 = r5091232 * r5091230;
double r5091234 = r5091233 + r5091227;
double r5091235 = 0.0008327945;
double r5091236 = 2.0;
double r5091237 = r5091215 * r5091236;
double r5091238 = r5091237 * r5091212;
double r5091239 = r5091235 + r5091238;
double r5091240 = r5091230 * r5091239;
double r5091241 = 0.0694555761;
double r5091242 = r5091240 + r5091241;
double r5091243 = r5091230 * r5091242;
double r5091244 = 0.7715471019;
double r5091245 = 0.2909738639;
double r5091246 = r5091245 * r5091212;
double r5091247 = r5091244 + r5091246;
double r5091248 = r5091243 + r5091247;
double r5091249 = r5091212 * r5091248;
double r5091250 = r5091234 + r5091249;
double r5091251 = r5091229 / r5091250;
return r5091251;
}



Bits error versus x
Initial program 4.3
Simplified3.6
rmApplied associate-*l*3.5
rmApplied p16-*-un-lft-identity3.5
Applied associate-/r*3.5
Simplified3.5
Simplified3.3
rmApplied p16-*-un-lft-identity3.3
Applied associate-/r*3.3
Simplified3.4
Final simplification3.4
herbie shell --seed 2019163 +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))