\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) + 0.0008327945 \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) + \left(2 \cdot 0.0001789971\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)} \cdot x\begin{array}{l}
\mathbf{if}\;x \le -995.3514700969213:\\
\;\;\;\;\left(\frac{0.5}{x} + \frac{0.15298196345929327}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right) + \frac{0.2514179000665375}{\left(x \cdot x\right) \cdot x}\\
\mathbf{elif}\;x \le 70558.77808105761:\\
\;\;\;\;x \cdot \frac{\left(\left(0.0072644182 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) + \left(0.0424060604 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + \left(\left(x \cdot x\right) \cdot 0.1049934947 + 1\right)\right)\right) + \left(\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) \cdot 0.0005064034\right) + 0.0001789971 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\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(\left(\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0001789971 \cdot 2\right) + \left(0.0008327945 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\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(\left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) \cdot 0.0140005442 + \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0694555761 + \left(0.2909738639 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + \left(\left(x \cdot x\right) \cdot 0.7715471019 + 1\right)\right)\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{0.5}{x} + \frac{0.15298196345929327}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right) + \frac{0.2514179000665375}{\left(x \cdot x\right) \cdot x}\\
\end{array}double f(double x) {
double r10026499 = 1.0;
double r10026500 = 0.1049934947;
double r10026501 = x;
double r10026502 = r10026501 * r10026501;
double r10026503 = r10026500 * r10026502;
double r10026504 = r10026499 + r10026503;
double r10026505 = 0.0424060604;
double r10026506 = r10026502 * r10026502;
double r10026507 = r10026505 * r10026506;
double r10026508 = r10026504 + r10026507;
double r10026509 = 0.0072644182;
double r10026510 = r10026506 * r10026502;
double r10026511 = r10026509 * r10026510;
double r10026512 = r10026508 + r10026511;
double r10026513 = 0.0005064034;
double r10026514 = r10026510 * r10026502;
double r10026515 = r10026513 * r10026514;
double r10026516 = r10026512 + r10026515;
double r10026517 = 0.0001789971;
double r10026518 = r10026514 * r10026502;
double r10026519 = r10026517 * r10026518;
double r10026520 = r10026516 + r10026519;
double r10026521 = 0.7715471019;
double r10026522 = r10026521 * r10026502;
double r10026523 = r10026499 + r10026522;
double r10026524 = 0.2909738639;
double r10026525 = r10026524 * r10026506;
double r10026526 = r10026523 + r10026525;
double r10026527 = 0.0694555761;
double r10026528 = r10026527 * r10026510;
double r10026529 = r10026526 + r10026528;
double r10026530 = 0.0140005442;
double r10026531 = r10026530 * r10026514;
double r10026532 = r10026529 + r10026531;
double r10026533 = 0.0008327945;
double r10026534 = r10026533 * r10026518;
double r10026535 = r10026532 + r10026534;
double r10026536 = 2.0;
double r10026537 = r10026536 * r10026517;
double r10026538 = r10026518 * r10026502;
double r10026539 = r10026537 * r10026538;
double r10026540 = r10026535 + r10026539;
double r10026541 = r10026520 / r10026540;
double r10026542 = r10026541 * r10026501;
return r10026542;
}
double f(double x) {
double r10026543 = x;
double r10026544 = -995.3514700969213;
bool r10026545 = r10026543 <= r10026544;
double r10026546 = 0.5;
double r10026547 = r10026546 / r10026543;
double r10026548 = 0.15298196345929327;
double r10026549 = r10026543 * r10026543;
double r10026550 = r10026549 * r10026543;
double r10026551 = r10026549 * r10026550;
double r10026552 = r10026548 / r10026551;
double r10026553 = r10026547 + r10026552;
double r10026554 = 0.2514179000665375;
double r10026555 = r10026554 / r10026550;
double r10026556 = r10026553 + r10026555;
double r10026557 = 70558.77808105761;
bool r10026558 = r10026543 <= r10026557;
double r10026559 = 0.0072644182;
double r10026560 = r10026549 * r10026549;
double r10026561 = r10026560 * r10026549;
double r10026562 = r10026559 * r10026561;
double r10026563 = 0.0424060604;
double r10026564 = r10026563 * r10026560;
double r10026565 = 0.1049934947;
double r10026566 = r10026549 * r10026565;
double r10026567 = 1.0;
double r10026568 = r10026566 + r10026567;
double r10026569 = r10026564 + r10026568;
double r10026570 = r10026562 + r10026569;
double r10026571 = r10026549 * r10026561;
double r10026572 = 0.0005064034;
double r10026573 = r10026571 * r10026572;
double r10026574 = r10026570 + r10026573;
double r10026575 = 0.0001789971;
double r10026576 = r10026571 * r10026549;
double r10026577 = r10026575 * r10026576;
double r10026578 = r10026574 + r10026577;
double r10026579 = r10026576 * r10026549;
double r10026580 = 2.0;
double r10026581 = r10026575 * r10026580;
double r10026582 = r10026579 * r10026581;
double r10026583 = 0.0008327945;
double r10026584 = r10026583 * r10026576;
double r10026585 = 0.0140005442;
double r10026586 = r10026571 * r10026585;
double r10026587 = 0.0694555761;
double r10026588 = r10026561 * r10026587;
double r10026589 = 0.2909738639;
double r10026590 = r10026589 * r10026560;
double r10026591 = 0.7715471019;
double r10026592 = r10026549 * r10026591;
double r10026593 = r10026592 + r10026567;
double r10026594 = r10026590 + r10026593;
double r10026595 = r10026588 + r10026594;
double r10026596 = r10026586 + r10026595;
double r10026597 = r10026584 + r10026596;
double r10026598 = r10026582 + r10026597;
double r10026599 = r10026578 / r10026598;
double r10026600 = r10026543 * r10026599;
double r10026601 = r10026558 ? r10026600 : r10026556;
double r10026602 = r10026545 ? r10026556 : r10026601;
return r10026602;
}



Bits error versus x
Results
if x < -995.3514700969213 or 70558.77808105761 < x Initial program 58.3
Taylor expanded around -inf 0.0
Simplified0.0
if -995.3514700969213 < x < 70558.77808105761Initial program 0.0
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019135 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.dawson"
(* (/ (+ (+ (+ (+ (+ 1 (* 0.1049934947 (* x x))) (* 0.0424060604 (* (* x x) (* x x)))) (* 0.0072644182 (* (* (* x x) (* x x)) (* x x)))) (* 0.0005064034 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0001789971 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (+ (+ (+ (+ (+ (+ 1 (* 0.7715471019 (* x x))) (* 0.2909738639 (* (* x x) (* x x)))) (* 0.0694555761 (* (* (* x x) (* x x)) (* x x)))) (* 0.0140005442 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0008327945 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (* (* 2 0.0001789971) (* (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)) (* x x))))) x))