\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 r2131280 = 1.0;
double r2131281 = /* ERROR: no posit support in C */;
double r2131282 = 0.1049934947;
double r2131283 = /* ERROR: no posit support in C */;
double r2131284 = x;
double r2131285 = r2131284 * r2131284;
double r2131286 = r2131283 * r2131285;
double r2131287 = r2131281 + r2131286;
double r2131288 = 0.0424060604;
double r2131289 = /* ERROR: no posit support in C */;
double r2131290 = r2131285 * r2131285;
double r2131291 = r2131289 * r2131290;
double r2131292 = r2131287 + r2131291;
double r2131293 = 0.0072644182;
double r2131294 = /* ERROR: no posit support in C */;
double r2131295 = r2131290 * r2131285;
double r2131296 = r2131294 * r2131295;
double r2131297 = r2131292 + r2131296;
double r2131298 = 0.0005064034;
double r2131299 = /* ERROR: no posit support in C */;
double r2131300 = r2131295 * r2131285;
double r2131301 = r2131299 * r2131300;
double r2131302 = r2131297 + r2131301;
double r2131303 = 0.0001789971;
double r2131304 = /* ERROR: no posit support in C */;
double r2131305 = r2131300 * r2131285;
double r2131306 = r2131304 * r2131305;
double r2131307 = r2131302 + r2131306;
double r2131308 = 0.7715471019;
double r2131309 = /* ERROR: no posit support in C */;
double r2131310 = r2131309 * r2131285;
double r2131311 = r2131281 + r2131310;
double r2131312 = 0.2909738639;
double r2131313 = /* ERROR: no posit support in C */;
double r2131314 = r2131313 * r2131290;
double r2131315 = r2131311 + r2131314;
double r2131316 = 0.0694555761;
double r2131317 = /* ERROR: no posit support in C */;
double r2131318 = r2131317 * r2131295;
double r2131319 = r2131315 + r2131318;
double r2131320 = 0.0140005442;
double r2131321 = /* ERROR: no posit support in C */;
double r2131322 = r2131321 * r2131300;
double r2131323 = r2131319 + r2131322;
double r2131324 = 0.0008327945;
double r2131325 = /* ERROR: no posit support in C */;
double r2131326 = r2131325 * r2131305;
double r2131327 = r2131323 + r2131326;
double r2131328 = 2.0;
double r2131329 = /* ERROR: no posit support in C */;
double r2131330 = r2131329 * r2131304;
double r2131331 = r2131305 * r2131285;
double r2131332 = r2131330 * r2131331;
double r2131333 = r2131327 + r2131332;
double r2131334 = r2131307 / r2131333;
double r2131335 = r2131334 * r2131284;
return r2131335;
}
double f(double x) {
double r2131336 = 1.0;
double r2131337 = 0.1049934947;
double r2131338 = x;
double r2131339 = r2131338 * r2131338;
double r2131340 = r2131337 * r2131339;
double r2131341 = r2131336 + r2131340;
double r2131342 = 0.0424060604;
double r2131343 = r2131339 * r2131339;
double r2131344 = r2131342 * r2131343;
double r2131345 = r2131341 + r2131344;
double r2131346 = 0.0072644182;
double r2131347 = r2131343 * r2131339;
double r2131348 = r2131346 * r2131347;
double r2131349 = r2131345 + r2131348;
double r2131350 = 0.0005064034;
double r2131351 = r2131347 * r2131339;
double r2131352 = r2131350 * r2131351;
double r2131353 = r2131349 + r2131352;
double r2131354 = 0.0001789971;
double r2131355 = r2131351 * r2131339;
double r2131356 = r2131354 * r2131355;
double r2131357 = r2131353 + r2131356;
double r2131358 = 0.7715471019;
double r2131359 = r2131358 * r2131339;
double r2131360 = r2131336 + r2131359;
double r2131361 = 0.2909738639;
double r2131362 = r2131361 * r2131343;
double r2131363 = r2131360 + r2131362;
double r2131364 = 0.0694555761;
double r2131365 = r2131364 * r2131347;
double r2131366 = r2131363 + r2131365;
double r2131367 = 0.0140005442;
double r2131368 = r2131367 * r2131351;
double r2131369 = r2131366 + r2131368;
double r2131370 = 0.0008327945;
double r2131371 = r2131370 * r2131351;
double r2131372 = r2131371 * r2131339;
double r2131373 = r2131369 + r2131372;
double r2131374 = 2.0;
double r2131375 = r2131374 * r2131354;
double r2131376 = r2131375 * r2131355;
double r2131377 = r2131376 * r2131339;
double r2131378 = r2131373 + r2131377;
double r2131379 = r2131357 / r2131378;
double r2131380 = r2131379 * r2131338;
return r2131380;
}



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