\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 -625003201.3675796:\\
\;\;\;\;\frac{0.2514179000665375}{\left(x \cdot x\right) \cdot x} + \left(\frac{0.15298196345929327}{{x}^{5}} + \frac{0.5}{x}\right)\\
\mathbf{elif}\;x \le 865.1225089239783:\\
\;\;\;\;x \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(0.0001789971 \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), x \cdot x, \mathsf{fma}\left(0.0005064034, \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), \mathsf{fma}\left(0.0072644182 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right), x \cdot x, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right), 0.0424060604, \mathsf{fma}\left(0.1049934947, x \cdot x, 1\right)\right)\right)\right)\right)}{\mathsf{fma}\left(\left(\left(x \cdot x\right) \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 \left(2 \cdot 0.0001789971\right), x \cdot x, \mathsf{fma}\left(0.0008327945, \left(x \cdot x\right) \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), \mathsf{fma}\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), 0.0140005442, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right), 0.0694555761, \mathsf{fma}\left(0.2909738639, \left(x \cdot x\right) \cdot \left(x \cdot x\right), \mathsf{fma}\left(x \cdot x, 0.7715471019, 1\right)\right)\right)\right)\right)\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{0.2514179000665375}{\left(x \cdot x\right) \cdot x} + \left(\frac{0.15298196345929327}{{x}^{5}} + \frac{0.5}{x}\right)\\
\end{array}double f(double x) {
double r3564622 = 1.0;
double r3564623 = 0.1049934947;
double r3564624 = x;
double r3564625 = r3564624 * r3564624;
double r3564626 = r3564623 * r3564625;
double r3564627 = r3564622 + r3564626;
double r3564628 = 0.0424060604;
double r3564629 = r3564625 * r3564625;
double r3564630 = r3564628 * r3564629;
double r3564631 = r3564627 + r3564630;
double r3564632 = 0.0072644182;
double r3564633 = r3564629 * r3564625;
double r3564634 = r3564632 * r3564633;
double r3564635 = r3564631 + r3564634;
double r3564636 = 0.0005064034;
double r3564637 = r3564633 * r3564625;
double r3564638 = r3564636 * r3564637;
double r3564639 = r3564635 + r3564638;
double r3564640 = 0.0001789971;
double r3564641 = r3564637 * r3564625;
double r3564642 = r3564640 * r3564641;
double r3564643 = r3564639 + r3564642;
double r3564644 = 0.7715471019;
double r3564645 = r3564644 * r3564625;
double r3564646 = r3564622 + r3564645;
double r3564647 = 0.2909738639;
double r3564648 = r3564647 * r3564629;
double r3564649 = r3564646 + r3564648;
double r3564650 = 0.0694555761;
double r3564651 = r3564650 * r3564633;
double r3564652 = r3564649 + r3564651;
double r3564653 = 0.0140005442;
double r3564654 = r3564653 * r3564637;
double r3564655 = r3564652 + r3564654;
double r3564656 = 0.0008327945;
double r3564657 = r3564656 * r3564641;
double r3564658 = r3564655 + r3564657;
double r3564659 = 2.0;
double r3564660 = r3564659 * r3564640;
double r3564661 = r3564641 * r3564625;
double r3564662 = r3564660 * r3564661;
double r3564663 = r3564658 + r3564662;
double r3564664 = r3564643 / r3564663;
double r3564665 = r3564664 * r3564624;
return r3564665;
}
double f(double x) {
double r3564666 = x;
double r3564667 = -625003201.3675796;
bool r3564668 = r3564666 <= r3564667;
double r3564669 = 0.2514179000665375;
double r3564670 = r3564666 * r3564666;
double r3564671 = r3564670 * r3564666;
double r3564672 = r3564669 / r3564671;
double r3564673 = 0.15298196345929327;
double r3564674 = 5.0;
double r3564675 = pow(r3564666, r3564674);
double r3564676 = r3564673 / r3564675;
double r3564677 = 0.5;
double r3564678 = r3564677 / r3564666;
double r3564679 = r3564676 + r3564678;
double r3564680 = r3564672 + r3564679;
double r3564681 = 865.1225089239783;
bool r3564682 = r3564666 <= r3564681;
double r3564683 = 0.0001789971;
double r3564684 = r3564670 * r3564670;
double r3564685 = r3564684 * r3564684;
double r3564686 = r3564683 * r3564685;
double r3564687 = 0.0005064034;
double r3564688 = 0.0072644182;
double r3564689 = r3564688 * r3564684;
double r3564690 = 0.0424060604;
double r3564691 = 0.1049934947;
double r3564692 = 1.0;
double r3564693 = fma(r3564691, r3564670, r3564692);
double r3564694 = fma(r3564684, r3564690, r3564693);
double r3564695 = fma(r3564689, r3564670, r3564694);
double r3564696 = fma(r3564687, r3564685, r3564695);
double r3564697 = fma(r3564686, r3564670, r3564696);
double r3564698 = r3564670 * r3564685;
double r3564699 = 2.0;
double r3564700 = r3564699 * r3564683;
double r3564701 = r3564698 * r3564700;
double r3564702 = 0.0008327945;
double r3564703 = 0.0140005442;
double r3564704 = r3564670 * r3564684;
double r3564705 = 0.0694555761;
double r3564706 = 0.2909738639;
double r3564707 = 0.7715471019;
double r3564708 = fma(r3564670, r3564707, r3564692);
double r3564709 = fma(r3564706, r3564684, r3564708);
double r3564710 = fma(r3564704, r3564705, r3564709);
double r3564711 = fma(r3564685, r3564703, r3564710);
double r3564712 = fma(r3564702, r3564698, r3564711);
double r3564713 = fma(r3564701, r3564670, r3564712);
double r3564714 = r3564697 / r3564713;
double r3564715 = log1p(r3564714);
double r3564716 = expm1(r3564715);
double r3564717 = r3564666 * r3564716;
double r3564718 = r3564682 ? r3564717 : r3564680;
double r3564719 = r3564668 ? r3564680 : r3564718;
return r3564719;
}



Bits error versus x
if x < -625003201.3675796 or 865.1225089239783 < x Initial program 59.2
rmApplied expm1-log1p-u59.2
Simplified59.1
Taylor expanded around inf 0.0
Simplified0.0
if -625003201.3675796 < x < 865.1225089239783Initial program 0.0
rmApplied expm1-log1p-u0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019154 +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))