\frac{\left(\left(\left(\left(1 + 0.1049934947 \cdot \left(x \cdot x\right)\right) + 0.042406060400000001 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.00726441819999999999 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.0640340000000002 \cdot 10^{-4} \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) + 1.789971 \cdot 10^{-4} \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.77154710189999998 \cdot \left(x \cdot x\right)\right) + 0.29097386390000002 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.069455576099999999 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.014000544199999999 \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) + 8.32794500000000044 \cdot 10^{-4} \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 1.789971 \cdot 10^{-4}\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 -643708450.463774323 \lor \neg \left(x \le 1065378.4141512234\right):\\
\;\;\;\;\mathsf{fma}\left(0.25141790006653753, \frac{1}{{x}^{3}}, \mathsf{fma}\left(0.1529819634592933, \frac{1}{{x}^{5}}, \frac{0.5}{x}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\left(\left(\left(\left(1 + 0.1049934947 \cdot \left(x \cdot x\right)\right) + 0.042406060400000001 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.00726441819999999999 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.0640340000000002 \cdot 10^{-4} \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) + 1.789971 \cdot 10^{-4} \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.77154710189999998 \cdot \left(x \cdot x\right)\right) + 0.29097386390000002 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.069455576099999999 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.014000544199999999 \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) + 8.32794500000000044 \cdot 10^{-4} \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 1.789971 \cdot 10^{-4}\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) \cdot x\\
\end{array}double f(double x) {
double r212236 = 1.0;
double r212237 = 0.1049934947;
double r212238 = x;
double r212239 = r212238 * r212238;
double r212240 = r212237 * r212239;
double r212241 = r212236 + r212240;
double r212242 = 0.0424060604;
double r212243 = r212239 * r212239;
double r212244 = r212242 * r212243;
double r212245 = r212241 + r212244;
double r212246 = 0.0072644182;
double r212247 = r212243 * r212239;
double r212248 = r212246 * r212247;
double r212249 = r212245 + r212248;
double r212250 = 0.0005064034;
double r212251 = r212247 * r212239;
double r212252 = r212250 * r212251;
double r212253 = r212249 + r212252;
double r212254 = 0.0001789971;
double r212255 = r212251 * r212239;
double r212256 = r212254 * r212255;
double r212257 = r212253 + r212256;
double r212258 = 0.7715471019;
double r212259 = r212258 * r212239;
double r212260 = r212236 + r212259;
double r212261 = 0.2909738639;
double r212262 = r212261 * r212243;
double r212263 = r212260 + r212262;
double r212264 = 0.0694555761;
double r212265 = r212264 * r212247;
double r212266 = r212263 + r212265;
double r212267 = 0.0140005442;
double r212268 = r212267 * r212251;
double r212269 = r212266 + r212268;
double r212270 = 0.0008327945;
double r212271 = r212270 * r212255;
double r212272 = r212269 + r212271;
double r212273 = 2.0;
double r212274 = r212273 * r212254;
double r212275 = r212255 * r212239;
double r212276 = r212274 * r212275;
double r212277 = r212272 + r212276;
double r212278 = r212257 / r212277;
double r212279 = r212278 * r212238;
return r212279;
}
double f(double x) {
double r212280 = x;
double r212281 = -643708450.4637743;
bool r212282 = r212280 <= r212281;
double r212283 = 1065378.4141512234;
bool r212284 = r212280 <= r212283;
double r212285 = !r212284;
bool r212286 = r212282 || r212285;
double r212287 = 0.2514179000665375;
double r212288 = 1.0;
double r212289 = 3.0;
double r212290 = pow(r212280, r212289);
double r212291 = r212288 / r212290;
double r212292 = 0.15298196345929327;
double r212293 = 5.0;
double r212294 = pow(r212280, r212293);
double r212295 = r212288 / r212294;
double r212296 = 0.5;
double r212297 = r212296 / r212280;
double r212298 = fma(r212292, r212295, r212297);
double r212299 = fma(r212287, r212291, r212298);
double r212300 = 1.0;
double r212301 = 0.1049934947;
double r212302 = r212280 * r212280;
double r212303 = r212301 * r212302;
double r212304 = r212300 + r212303;
double r212305 = 0.0424060604;
double r212306 = r212302 * r212302;
double r212307 = r212305 * r212306;
double r212308 = r212304 + r212307;
double r212309 = 0.0072644182;
double r212310 = r212306 * r212302;
double r212311 = r212309 * r212310;
double r212312 = r212308 + r212311;
double r212313 = 0.0005064034;
double r212314 = r212310 * r212302;
double r212315 = r212313 * r212314;
double r212316 = r212312 + r212315;
double r212317 = 0.0001789971;
double r212318 = r212314 * r212302;
double r212319 = r212317 * r212318;
double r212320 = r212316 + r212319;
double r212321 = 0.7715471019;
double r212322 = r212321 * r212302;
double r212323 = r212300 + r212322;
double r212324 = 0.2909738639;
double r212325 = r212324 * r212306;
double r212326 = r212323 + r212325;
double r212327 = 0.0694555761;
double r212328 = r212327 * r212310;
double r212329 = r212326 + r212328;
double r212330 = 0.0140005442;
double r212331 = r212330 * r212314;
double r212332 = r212329 + r212331;
double r212333 = 0.0008327945;
double r212334 = r212333 * r212318;
double r212335 = r212332 + r212334;
double r212336 = 2.0;
double r212337 = r212336 * r212317;
double r212338 = r212318 * r212302;
double r212339 = r212337 * r212338;
double r212340 = r212335 + r212339;
double r212341 = r212320 / r212340;
double r212342 = log1p(r212341);
double r212343 = expm1(r212342);
double r212344 = r212343 * r212280;
double r212345 = r212286 ? r212299 : r212344;
return r212345;
}



Bits error versus x
if x < -643708450.4637743 or 1065378.4141512234 < x Initial program 60.3
Taylor expanded around inf 0.0
Simplified0.0
if -643708450.4637743 < x < 1065378.4141512234Initial program 0.0
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2020100 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.dawson"
:precision binary64
(* (/ (+ (+ (+ (+ (+ 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))