\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 -212059.365016719:\\
\;\;\;\;\left(\frac{0.2514179000665375}{x \cdot \left(x \cdot x\right)} + \frac{0.15298196345929327}{\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)}\right) + \frac{0.5}{x}\\
\mathbf{elif}\;x \le 679.3112554427823:\\
\;\;\;\;x \cdot \left(\left(\left(\left(0.0072644182 \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + \left(0.0424060604 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + \left(\left(x \cdot x\right) \cdot 0.1049934947 + 1\right)\right)\right) + \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)\right) \cdot 0.0005064034\right) + 0.0001789971 \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)\right)\right)\right) \cdot \frac{1}{\mathsf{fma}\left(2, \left(0.0001789971 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\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)\right), \left(\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), 0.0008327945, \left(\mathsf{fma}\left(\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), 0.0140005442, \left(\mathsf{fma}\left(\left(0.0694555761 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right), \left(x \cdot x\right), \left(\mathsf{fma}\left(0.2909738639, \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right), \left(\mathsf{fma}\left(0.7715471019, \left(x \cdot x\right), 1\right)\right)\right)\right)\right)\right)\right)\right)\right)\right)\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{0.2514179000665375}{x \cdot \left(x \cdot x\right)} + \frac{0.15298196345929327}{\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)}\right) + \frac{0.5}{x}\\
\end{array}double f(double x) {
double r4670880 = 1.0;
double r4670881 = 0.1049934947;
double r4670882 = x;
double r4670883 = r4670882 * r4670882;
double r4670884 = r4670881 * r4670883;
double r4670885 = r4670880 + r4670884;
double r4670886 = 0.0424060604;
double r4670887 = r4670883 * r4670883;
double r4670888 = r4670886 * r4670887;
double r4670889 = r4670885 + r4670888;
double r4670890 = 0.0072644182;
double r4670891 = r4670887 * r4670883;
double r4670892 = r4670890 * r4670891;
double r4670893 = r4670889 + r4670892;
double r4670894 = 0.0005064034;
double r4670895 = r4670891 * r4670883;
double r4670896 = r4670894 * r4670895;
double r4670897 = r4670893 + r4670896;
double r4670898 = 0.0001789971;
double r4670899 = r4670895 * r4670883;
double r4670900 = r4670898 * r4670899;
double r4670901 = r4670897 + r4670900;
double r4670902 = 0.7715471019;
double r4670903 = r4670902 * r4670883;
double r4670904 = r4670880 + r4670903;
double r4670905 = 0.2909738639;
double r4670906 = r4670905 * r4670887;
double r4670907 = r4670904 + r4670906;
double r4670908 = 0.0694555761;
double r4670909 = r4670908 * r4670891;
double r4670910 = r4670907 + r4670909;
double r4670911 = 0.0140005442;
double r4670912 = r4670911 * r4670895;
double r4670913 = r4670910 + r4670912;
double r4670914 = 0.0008327945;
double r4670915 = r4670914 * r4670899;
double r4670916 = r4670913 + r4670915;
double r4670917 = 2.0;
double r4670918 = r4670917 * r4670898;
double r4670919 = r4670899 * r4670883;
double r4670920 = r4670918 * r4670919;
double r4670921 = r4670916 + r4670920;
double r4670922 = r4670901 / r4670921;
double r4670923 = r4670922 * r4670882;
return r4670923;
}
double f(double x) {
double r4670924 = x;
double r4670925 = -212059.365016719;
bool r4670926 = r4670924 <= r4670925;
double r4670927 = 0.2514179000665375;
double r4670928 = r4670924 * r4670924;
double r4670929 = r4670924 * r4670928;
double r4670930 = r4670927 / r4670929;
double r4670931 = 0.15298196345929327;
double r4670932 = r4670929 * r4670928;
double r4670933 = r4670931 / r4670932;
double r4670934 = r4670930 + r4670933;
double r4670935 = 0.5;
double r4670936 = r4670935 / r4670924;
double r4670937 = r4670934 + r4670936;
double r4670938 = 679.3112554427823;
bool r4670939 = r4670924 <= r4670938;
double r4670940 = 0.0072644182;
double r4670941 = r4670928 * r4670928;
double r4670942 = r4670928 * r4670941;
double r4670943 = r4670940 * r4670942;
double r4670944 = 0.0424060604;
double r4670945 = r4670944 * r4670941;
double r4670946 = 0.1049934947;
double r4670947 = r4670928 * r4670946;
double r4670948 = 1.0;
double r4670949 = r4670947 + r4670948;
double r4670950 = r4670945 + r4670949;
double r4670951 = r4670943 + r4670950;
double r4670952 = r4670928 * r4670942;
double r4670953 = 0.0005064034;
double r4670954 = r4670952 * r4670953;
double r4670955 = r4670951 + r4670954;
double r4670956 = 0.0001789971;
double r4670957 = r4670928 * r4670952;
double r4670958 = r4670956 * r4670957;
double r4670959 = r4670955 + r4670958;
double r4670960 = 2.0;
double r4670961 = r4670941 * r4670941;
double r4670962 = r4670941 * r4670961;
double r4670963 = r4670956 * r4670962;
double r4670964 = r4670928 * r4670961;
double r4670965 = 0.0008327945;
double r4670966 = 0.0140005442;
double r4670967 = 0.0694555761;
double r4670968 = r4670967 * r4670941;
double r4670969 = 0.2909738639;
double r4670970 = 0.7715471019;
double r4670971 = fma(r4670970, r4670928, r4670948);
double r4670972 = fma(r4670969, r4670941, r4670971);
double r4670973 = fma(r4670968, r4670928, r4670972);
double r4670974 = fma(r4670961, r4670966, r4670973);
double r4670975 = fma(r4670964, r4670965, r4670974);
double r4670976 = fma(r4670960, r4670963, r4670975);
double r4670977 = r4670948 / r4670976;
double r4670978 = r4670959 * r4670977;
double r4670979 = r4670924 * r4670978;
double r4670980 = r4670939 ? r4670979 : r4670937;
double r4670981 = r4670926 ? r4670937 : r4670980;
return r4670981;
}



Bits error versus x
if x < -212059.365016719 or 679.3112554427823 < x Initial program 58.2
Taylor expanded around inf 0.0
Simplified0.0
if -212059.365016719 < x < 679.3112554427823Initial program 0.0
rmApplied div-inv0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019133 +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))