\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(0.0424060604 + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0005064034 + x \cdot \left(x \cdot 0.0001789971\right)\right)\right) + \left(x \cdot x\right) \cdot 0.0072644182\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + 0.1049934947 \cdot \left(x \cdot x\right)\right) + 1}{\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0694555761 + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(2 \cdot \left(x \cdot 0.0001789971\right)\right) \cdot x + 0.0008327945\right)\right) + \left(\left(x \cdot x\right) \cdot 0.2909738639 + 0.7715471019\right)\right) \cdot \left(x \cdot x\right) + \left(1 + 0.0140005442 \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)} \cdot xdouble f(double x) {
double r6114372 = 1.0;
double r6114373 = /* ERROR: no posit support in C */;
double r6114374 = 0.1049934947;
double r6114375 = /* ERROR: no posit support in C */;
double r6114376 = x;
double r6114377 = r6114376 * r6114376;
double r6114378 = r6114375 * r6114377;
double r6114379 = r6114373 + r6114378;
double r6114380 = 0.0424060604;
double r6114381 = /* ERROR: no posit support in C */;
double r6114382 = r6114377 * r6114377;
double r6114383 = r6114381 * r6114382;
double r6114384 = r6114379 + r6114383;
double r6114385 = 0.0072644182;
double r6114386 = /* ERROR: no posit support in C */;
double r6114387 = r6114382 * r6114377;
double r6114388 = r6114386 * r6114387;
double r6114389 = r6114384 + r6114388;
double r6114390 = 0.0005064034;
double r6114391 = /* ERROR: no posit support in C */;
double r6114392 = r6114387 * r6114377;
double r6114393 = r6114391 * r6114392;
double r6114394 = r6114389 + r6114393;
double r6114395 = 0.0001789971;
double r6114396 = /* ERROR: no posit support in C */;
double r6114397 = r6114392 * r6114377;
double r6114398 = r6114396 * r6114397;
double r6114399 = r6114394 + r6114398;
double r6114400 = 0.7715471019;
double r6114401 = /* ERROR: no posit support in C */;
double r6114402 = r6114401 * r6114377;
double r6114403 = r6114373 + r6114402;
double r6114404 = 0.2909738639;
double r6114405 = /* ERROR: no posit support in C */;
double r6114406 = r6114405 * r6114382;
double r6114407 = r6114403 + r6114406;
double r6114408 = 0.0694555761;
double r6114409 = /* ERROR: no posit support in C */;
double r6114410 = r6114409 * r6114387;
double r6114411 = r6114407 + r6114410;
double r6114412 = 0.0140005442;
double r6114413 = /* ERROR: no posit support in C */;
double r6114414 = r6114413 * r6114392;
double r6114415 = r6114411 + r6114414;
double r6114416 = 0.0008327945;
double r6114417 = /* ERROR: no posit support in C */;
double r6114418 = r6114417 * r6114397;
double r6114419 = r6114415 + r6114418;
double r6114420 = 2.0;
double r6114421 = /* ERROR: no posit support in C */;
double r6114422 = r6114421 * r6114396;
double r6114423 = r6114397 * r6114377;
double r6114424 = r6114422 * r6114423;
double r6114425 = r6114419 + r6114424;
double r6114426 = r6114399 / r6114425;
double r6114427 = r6114426 * r6114376;
return r6114427;
}
double f(double x) {
double r6114428 = 0.0424060604;
double r6114429 = x;
double r6114430 = r6114429 * r6114429;
double r6114431 = r6114430 * r6114430;
double r6114432 = 0.0005064034;
double r6114433 = 0.0001789971;
double r6114434 = r6114429 * r6114433;
double r6114435 = r6114429 * r6114434;
double r6114436 = r6114432 + r6114435;
double r6114437 = r6114431 * r6114436;
double r6114438 = r6114428 + r6114437;
double r6114439 = 0.0072644182;
double r6114440 = r6114430 * r6114439;
double r6114441 = r6114438 + r6114440;
double r6114442 = r6114441 * r6114431;
double r6114443 = 0.1049934947;
double r6114444 = r6114443 * r6114430;
double r6114445 = r6114442 + r6114444;
double r6114446 = 1.0;
double r6114447 = r6114445 + r6114446;
double r6114448 = 0.0694555761;
double r6114449 = 2.0;
double r6114450 = r6114449 * r6114434;
double r6114451 = r6114450 * r6114429;
double r6114452 = 0.0008327945;
double r6114453 = r6114451 + r6114452;
double r6114454 = r6114431 * r6114453;
double r6114455 = r6114448 + r6114454;
double r6114456 = r6114431 * r6114455;
double r6114457 = 0.2909738639;
double r6114458 = r6114430 * r6114457;
double r6114459 = 0.7715471019;
double r6114460 = r6114458 + r6114459;
double r6114461 = r6114456 + r6114460;
double r6114462 = r6114461 * r6114430;
double r6114463 = 0.0140005442;
double r6114464 = r6114431 * r6114431;
double r6114465 = r6114463 * r6114464;
double r6114466 = r6114446 + r6114465;
double r6114467 = r6114462 + r6114466;
double r6114468 = r6114447 / r6114467;
double r6114469 = r6114468 * r6114429;
return r6114469;
}



Bits error versus x
Initial program 4.4
Simplified3.7
rmApplied *p16-rgt-identity-expand3.7
Applied associate-/l*3.7
Simplified3.6
rmApplied p16-*-un-lft-identity3.6
Applied *p16-rgt-identity-expand3.6
Applied p16-times-frac3.6
Simplified3.6
Simplified3.6
rmApplied associate-*l*3.6
Final simplification3.6
herbie shell --seed 2019162 +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))