\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 -942486508.7001753:\\
\;\;\;\;\frac{0.5 + \frac{0.2514179000665375}{x \cdot x}}{x} + \frac{0.15298196345929327}{{x}^{5}}\\
\mathbf{elif}\;x \le 9551.679161702108:\\
\;\;\;\;\mathsf{log1p}\left(\left(\mathsf{expm1}\left(\left(\frac{x \cdot \mathsf{fma}\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0001789971\right), \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right), \left(\mathsf{fma}\left(0.0005064034, \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), \left(\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right), 0.0072644182, \left(\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right), 0.0424060604, \left(\mathsf{fma}\left(\left(x \cdot x\right), 0.1049934947, 1\right)\right)\right)\right)\right)\right)\right)\right)\right)}{\mathsf{fma}\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0001789971\right) \cdot 2\right), \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), \left(\left(0.0140005442 + \left(x \cdot x\right) \cdot 0.0008327945\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), 0.2909738639, \left(\mathsf{fma}\left(\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right), 0.0694555761, \left(\mathsf{fma}\left(\left(x \cdot x\right), 0.7715471019, 1\right)\right)\right)\right)\right)\right)\right)}\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{0.5 + \frac{0.2514179000665375}{x \cdot x}}{x} + \frac{0.15298196345929327}{{x}^{5}}\\
\end{array}double f(double x) {
double r50024084 = 1.0;
double r50024085 = 0.1049934947;
double r50024086 = x;
double r50024087 = r50024086 * r50024086;
double r50024088 = r50024085 * r50024087;
double r50024089 = r50024084 + r50024088;
double r50024090 = 0.0424060604;
double r50024091 = r50024087 * r50024087;
double r50024092 = r50024090 * r50024091;
double r50024093 = r50024089 + r50024092;
double r50024094 = 0.0072644182;
double r50024095 = r50024091 * r50024087;
double r50024096 = r50024094 * r50024095;
double r50024097 = r50024093 + r50024096;
double r50024098 = 0.0005064034;
double r50024099 = r50024095 * r50024087;
double r50024100 = r50024098 * r50024099;
double r50024101 = r50024097 + r50024100;
double r50024102 = 0.0001789971;
double r50024103 = r50024099 * r50024087;
double r50024104 = r50024102 * r50024103;
double r50024105 = r50024101 + r50024104;
double r50024106 = 0.7715471019;
double r50024107 = r50024106 * r50024087;
double r50024108 = r50024084 + r50024107;
double r50024109 = 0.2909738639;
double r50024110 = r50024109 * r50024091;
double r50024111 = r50024108 + r50024110;
double r50024112 = 0.0694555761;
double r50024113 = r50024112 * r50024095;
double r50024114 = r50024111 + r50024113;
double r50024115 = 0.0140005442;
double r50024116 = r50024115 * r50024099;
double r50024117 = r50024114 + r50024116;
double r50024118 = 0.0008327945;
double r50024119 = r50024118 * r50024103;
double r50024120 = r50024117 + r50024119;
double r50024121 = 2.0;
double r50024122 = r50024121 * r50024102;
double r50024123 = r50024103 * r50024087;
double r50024124 = r50024122 * r50024123;
double r50024125 = r50024120 + r50024124;
double r50024126 = r50024105 / r50024125;
double r50024127 = r50024126 * r50024086;
return r50024127;
}
double f(double x) {
double r50024128 = x;
double r50024129 = -942486508.7001753;
bool r50024130 = r50024128 <= r50024129;
double r50024131 = 0.5;
double r50024132 = 0.2514179000665375;
double r50024133 = r50024128 * r50024128;
double r50024134 = r50024132 / r50024133;
double r50024135 = r50024131 + r50024134;
double r50024136 = r50024135 / r50024128;
double r50024137 = 0.15298196345929327;
double r50024138 = 5.0;
double r50024139 = pow(r50024128, r50024138);
double r50024140 = r50024137 / r50024139;
double r50024141 = r50024136 + r50024140;
double r50024142 = 9551.679161702108;
bool r50024143 = r50024128 <= r50024142;
double r50024144 = r50024133 * r50024133;
double r50024145 = 0.0001789971;
double r50024146 = r50024144 * r50024145;
double r50024147 = r50024133 * r50024144;
double r50024148 = 0.0005064034;
double r50024149 = r50024144 * r50024144;
double r50024150 = 0.0072644182;
double r50024151 = 0.0424060604;
double r50024152 = 0.1049934947;
double r50024153 = 1.0;
double r50024154 = fma(r50024133, r50024152, r50024153);
double r50024155 = fma(r50024144, r50024151, r50024154);
double r50024156 = fma(r50024147, r50024150, r50024155);
double r50024157 = fma(r50024148, r50024149, r50024156);
double r50024158 = fma(r50024146, r50024147, r50024157);
double r50024159 = r50024128 * r50024158;
double r50024160 = 2.0;
double r50024161 = r50024146 * r50024160;
double r50024162 = 0.0140005442;
double r50024163 = 0.0008327945;
double r50024164 = r50024133 * r50024163;
double r50024165 = r50024162 + r50024164;
double r50024166 = r50024165 * r50024149;
double r50024167 = 0.2909738639;
double r50024168 = 0.0694555761;
double r50024169 = 0.7715471019;
double r50024170 = fma(r50024133, r50024169, r50024153);
double r50024171 = fma(r50024147, r50024168, r50024170);
double r50024172 = fma(r50024144, r50024167, r50024171);
double r50024173 = r50024166 + r50024172;
double r50024174 = fma(r50024161, r50024149, r50024173);
double r50024175 = r50024159 / r50024174;
double r50024176 = expm1(r50024175);
double r50024177 = log1p(r50024176);
double r50024178 = r50024143 ? r50024177 : r50024141;
double r50024179 = r50024130 ? r50024141 : r50024178;
return r50024179;
}



Bits error versus x
if x < -942486508.7001753 or 9551.679161702108 < x Initial program 58.9
Simplified58.9
Taylor expanded around inf 0.0
Simplified0.0
if -942486508.7001753 < x < 9551.679161702108Initial program 0.0
Simplified0.0
rmApplied div-inv0.0
rmApplied log1p-expm1-u0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019128 +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))