\frac{\left(\left(\left(\left(1 + 0.1049934946999999951788851149103720672429 \cdot \left(x \cdot x\right)\right) + 0.04240606040000000076517494562722276896238 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.007264418199999999985194687468492702464573 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.064034000000000243502107366566633572802 \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.789971000000000009994005623070734145585 \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.7715471018999999763821051601553335785866 \cdot \left(x \cdot x\right)\right) + 0.2909738639000000182122107617033179849386 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.06945557609999999937322456844412954524159 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.01400054419999999938406531896362139377743 \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.327945000000000442749725770852364803432 \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.789971000000000009994005623070734145585 \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 -1019.119841081965660123387351632118225098 \lor \neg \left(x \le 57958238.795458965003490447998046875\right):\\
\;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{{x}^{3}} + \frac{0.1529819634592932686700805788859724998474}{{x}^{5}}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(1.789971000000000009994005623070734145585 \cdot 10^{-4}, {x}^{6} \cdot {x}^{4}, \mathsf{fma}\left({x}^{8}, 5.064034000000000243502107366566633572802 \cdot 10^{-4}, \mathsf{fma}\left(0.007264418199999999985194687468492702464573, {x}^{6}, \mathsf{fma}\left({x}^{4}, 0.04240606040000000076517494562722276896238, \mathsf{fma}\left(0.1049934946999999951788851149103720672429, x \cdot x, 1\right)\right)\right)\right)\right)}{\mathsf{fma}\left(1.789971000000000009994005623070734145585 \cdot 10^{-4}, 2 \cdot {\left({x}^{4}\right)}^{3}, \mathsf{fma}\left({x}^{6} \cdot {x}^{4}, 8.327945000000000442749725770852364803432 \cdot 10^{-4}, \mathsf{fma}\left(0.01400054419999999938406531896362139377743, {x}^{8}, \mathsf{fma}\left(0.06945557609999999937322456844412954524159, {x}^{6}, \mathsf{fma}\left(0.2909738639000000182122107617033179849386, {x}^{4}, \mathsf{fma}\left(0.7715471018999999763821051601553335785866 \cdot x, x, 1\right)\right)\right)\right)\right)\right)}\right)\right) \cdot x\\
\end{array}double f(double x) {
double r125840 = 1.0;
double r125841 = 0.1049934947;
double r125842 = x;
double r125843 = r125842 * r125842;
double r125844 = r125841 * r125843;
double r125845 = r125840 + r125844;
double r125846 = 0.0424060604;
double r125847 = r125843 * r125843;
double r125848 = r125846 * r125847;
double r125849 = r125845 + r125848;
double r125850 = 0.0072644182;
double r125851 = r125847 * r125843;
double r125852 = r125850 * r125851;
double r125853 = r125849 + r125852;
double r125854 = 0.0005064034;
double r125855 = r125851 * r125843;
double r125856 = r125854 * r125855;
double r125857 = r125853 + r125856;
double r125858 = 0.0001789971;
double r125859 = r125855 * r125843;
double r125860 = r125858 * r125859;
double r125861 = r125857 + r125860;
double r125862 = 0.7715471019;
double r125863 = r125862 * r125843;
double r125864 = r125840 + r125863;
double r125865 = 0.2909738639;
double r125866 = r125865 * r125847;
double r125867 = r125864 + r125866;
double r125868 = 0.0694555761;
double r125869 = r125868 * r125851;
double r125870 = r125867 + r125869;
double r125871 = 0.0140005442;
double r125872 = r125871 * r125855;
double r125873 = r125870 + r125872;
double r125874 = 0.0008327945;
double r125875 = r125874 * r125859;
double r125876 = r125873 + r125875;
double r125877 = 2.0;
double r125878 = r125877 * r125858;
double r125879 = r125859 * r125843;
double r125880 = r125878 * r125879;
double r125881 = r125876 + r125880;
double r125882 = r125861 / r125881;
double r125883 = r125882 * r125842;
return r125883;
}
double f(double x) {
double r125884 = x;
double r125885 = -1019.1198410819657;
bool r125886 = r125884 <= r125885;
double r125887 = 57958238.795458965;
bool r125888 = r125884 <= r125887;
double r125889 = !r125888;
bool r125890 = r125886 || r125889;
double r125891 = 0.5;
double r125892 = r125891 / r125884;
double r125893 = 0.2514179000665375;
double r125894 = 3.0;
double r125895 = pow(r125884, r125894);
double r125896 = r125893 / r125895;
double r125897 = 0.15298196345929327;
double r125898 = 5.0;
double r125899 = pow(r125884, r125898);
double r125900 = r125897 / r125899;
double r125901 = r125896 + r125900;
double r125902 = r125892 + r125901;
double r125903 = 0.0001789971;
double r125904 = 6.0;
double r125905 = pow(r125884, r125904);
double r125906 = 4.0;
double r125907 = pow(r125884, r125906);
double r125908 = r125905 * r125907;
double r125909 = 8.0;
double r125910 = pow(r125884, r125909);
double r125911 = 0.0005064034;
double r125912 = 0.0072644182;
double r125913 = 0.0424060604;
double r125914 = 0.1049934947;
double r125915 = r125884 * r125884;
double r125916 = 1.0;
double r125917 = fma(r125914, r125915, r125916);
double r125918 = fma(r125907, r125913, r125917);
double r125919 = fma(r125912, r125905, r125918);
double r125920 = fma(r125910, r125911, r125919);
double r125921 = fma(r125903, r125908, r125920);
double r125922 = 2.0;
double r125923 = pow(r125907, r125894);
double r125924 = r125922 * r125923;
double r125925 = 0.0008327945;
double r125926 = 0.0140005442;
double r125927 = 0.0694555761;
double r125928 = 0.2909738639;
double r125929 = 0.7715471019;
double r125930 = r125929 * r125884;
double r125931 = fma(r125930, r125884, r125916);
double r125932 = fma(r125928, r125907, r125931);
double r125933 = fma(r125927, r125905, r125932);
double r125934 = fma(r125926, r125910, r125933);
double r125935 = fma(r125908, r125925, r125934);
double r125936 = fma(r125903, r125924, r125935);
double r125937 = r125921 / r125936;
double r125938 = log1p(r125937);
double r125939 = expm1(r125938);
double r125940 = r125939 * r125884;
double r125941 = r125890 ? r125902 : r125940;
return r125941;
}



Bits error versus x
if x < -1019.1198410819657 or 57958238.795458965 < x Initial program 59.9
Taylor expanded around inf 0.0
Simplified0.0
if -1019.1198410819657 < x < 57958238.795458965Initial program 0.0
rmApplied expm1-log1p-u0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019325 +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))