\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 -1.0291142350111478 \cdot 10^{25} \lor \neg \left(x \le 689.5637389992917\right):\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left(0.25141790006653753, \frac{1}{{x}^{3}}, \mathsf{fma}\left(0.1529819634592933, \frac{1}{{x}^{5}}, 0.5 \cdot \frac{1}{x}\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{x}{\frac{\left(\left(x \cdot \left({\left(x \cdot x\right)}^{3} \cdot {x}^{3}\right)\right) \cdot \left(8.32794500000000044 \cdot 10^{-4} + \left(x \cdot x\right) \cdot \left(2 \cdot 1.789971 \cdot 10^{-4}\right)\right) + \mathsf{fma}\left(0.29097386390000002 \cdot x, {x}^{3}, \mathsf{fma}\left(0.77154710189999998 \cdot x, x, 1\right)\right)\right) + {x}^{6} \cdot \left(0.069455576099999999 + \left(x \cdot x\right) \cdot 0.014000544199999999\right)}{\left({\left(x \cdot x\right)}^{4} \cdot \left(5.0640340000000002 \cdot 10^{-4} + \left(x \cdot x\right) \cdot 1.789971 \cdot 10^{-4}\right) + \mathsf{fma}\left(0.1049934947 \cdot x, x, 1\right)\right) + {x}^{4} \cdot \left(0.042406060400000001 + \left(x \cdot x\right) \cdot 0.00726441819999999999\right)}}\right)\right)\\
\end{array}double f(double x) {
double r228443 = 1.0;
double r228444 = 0.1049934947;
double r228445 = x;
double r228446 = r228445 * r228445;
double r228447 = r228444 * r228446;
double r228448 = r228443 + r228447;
double r228449 = 0.0424060604;
double r228450 = r228446 * r228446;
double r228451 = r228449 * r228450;
double r228452 = r228448 + r228451;
double r228453 = 0.0072644182;
double r228454 = r228450 * r228446;
double r228455 = r228453 * r228454;
double r228456 = r228452 + r228455;
double r228457 = 0.0005064034;
double r228458 = r228454 * r228446;
double r228459 = r228457 * r228458;
double r228460 = r228456 + r228459;
double r228461 = 0.0001789971;
double r228462 = r228458 * r228446;
double r228463 = r228461 * r228462;
double r228464 = r228460 + r228463;
double r228465 = 0.7715471019;
double r228466 = r228465 * r228446;
double r228467 = r228443 + r228466;
double r228468 = 0.2909738639;
double r228469 = r228468 * r228450;
double r228470 = r228467 + r228469;
double r228471 = 0.0694555761;
double r228472 = r228471 * r228454;
double r228473 = r228470 + r228472;
double r228474 = 0.0140005442;
double r228475 = r228474 * r228458;
double r228476 = r228473 + r228475;
double r228477 = 0.0008327945;
double r228478 = r228477 * r228462;
double r228479 = r228476 + r228478;
double r228480 = 2.0;
double r228481 = r228480 * r228461;
double r228482 = r228462 * r228446;
double r228483 = r228481 * r228482;
double r228484 = r228479 + r228483;
double r228485 = r228464 / r228484;
double r228486 = r228485 * r228445;
return r228486;
}
double f(double x) {
double r228487 = x;
double r228488 = -1.0291142350111478e+25;
bool r228489 = r228487 <= r228488;
double r228490 = 689.5637389992917;
bool r228491 = r228487 <= r228490;
double r228492 = !r228491;
bool r228493 = r228489 || r228492;
double r228494 = 0.2514179000665375;
double r228495 = 1.0;
double r228496 = 3.0;
double r228497 = pow(r228487, r228496);
double r228498 = r228495 / r228497;
double r228499 = 0.15298196345929327;
double r228500 = 5.0;
double r228501 = pow(r228487, r228500);
double r228502 = r228495 / r228501;
double r228503 = 0.5;
double r228504 = r228495 / r228487;
double r228505 = r228503 * r228504;
double r228506 = fma(r228499, r228502, r228505);
double r228507 = fma(r228494, r228498, r228506);
double r228508 = log1p(r228507);
double r228509 = expm1(r228508);
double r228510 = r228487 * r228487;
double r228511 = pow(r228510, r228496);
double r228512 = r228511 * r228497;
double r228513 = r228487 * r228512;
double r228514 = 0.0008327945;
double r228515 = 2.0;
double r228516 = 0.0001789971;
double r228517 = r228515 * r228516;
double r228518 = r228510 * r228517;
double r228519 = r228514 + r228518;
double r228520 = r228513 * r228519;
double r228521 = 0.2909738639;
double r228522 = r228521 * r228487;
double r228523 = 0.7715471019;
double r228524 = r228523 * r228487;
double r228525 = 1.0;
double r228526 = fma(r228524, r228487, r228525);
double r228527 = fma(r228522, r228497, r228526);
double r228528 = r228520 + r228527;
double r228529 = 6.0;
double r228530 = pow(r228487, r228529);
double r228531 = 0.0694555761;
double r228532 = 0.0140005442;
double r228533 = r228510 * r228532;
double r228534 = r228531 + r228533;
double r228535 = r228530 * r228534;
double r228536 = r228528 + r228535;
double r228537 = 4.0;
double r228538 = pow(r228510, r228537);
double r228539 = 0.0005064034;
double r228540 = r228510 * r228516;
double r228541 = r228539 + r228540;
double r228542 = r228538 * r228541;
double r228543 = 0.1049934947;
double r228544 = r228543 * r228487;
double r228545 = fma(r228544, r228487, r228525);
double r228546 = r228542 + r228545;
double r228547 = pow(r228487, r228537);
double r228548 = 0.0424060604;
double r228549 = 0.0072644182;
double r228550 = r228510 * r228549;
double r228551 = r228548 + r228550;
double r228552 = r228547 * r228551;
double r228553 = r228546 + r228552;
double r228554 = r228536 / r228553;
double r228555 = r228487 / r228554;
double r228556 = log1p(r228555);
double r228557 = expm1(r228556);
double r228558 = r228493 ? r228509 : r228557;
return r228558;
}



Bits error versus x
if x < -1.0291142350111478e+25 or 689.5637389992917 < x Initial program 61.3
Simplified61.2
rmApplied expm1-log1p-u61.2
Taylor expanded around inf 0.0
Simplified0.0
if -1.0291142350111478e+25 < x < 689.5637389992917Initial program 0.0
Simplified0.0
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2020059 +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))