\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 -8101506.069403253:\\
\;\;\;\;\frac{0.15298196345929327}{\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)} + \left(\frac{0.2514179000665375}{x \cdot \left(x \cdot x\right)} + \frac{0.5}{x}\right)\\
\mathbf{elif}\;x \le 613.6089872492754:\\
\;\;\;\;x \cdot \frac{\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) \cdot \left(\left(x \cdot x\right) \cdot 0.0001789971 + 0.0005064034\right) + \left(\left(\left(x \cdot x\right) \cdot 0.1049934947 + 1\right) + \left(0.0424060604 + \left(x \cdot 0.0072644182\right) \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\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) \cdot \left(2 \cdot \left(0.0001789971 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.0008327945 \cdot \left(x \cdot x\right)\right) + \left(1 + \left(x \cdot x\right) \cdot \left(\left(0.7715471019 + 0.2909738639 \cdot \left(x \cdot x\right)\right) + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0694555761 + \left(x \cdot x\right) \cdot 0.0140005442\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{0.15298196345929327}{\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)} + \left(\frac{0.2514179000665375}{x \cdot \left(x \cdot x\right)} + \frac{0.5}{x}\right)\\
\end{array}double f(double x) {
double r9113051 = 1.0;
double r9113052 = 0.1049934947;
double r9113053 = x;
double r9113054 = r9113053 * r9113053;
double r9113055 = r9113052 * r9113054;
double r9113056 = r9113051 + r9113055;
double r9113057 = 0.0424060604;
double r9113058 = r9113054 * r9113054;
double r9113059 = r9113057 * r9113058;
double r9113060 = r9113056 + r9113059;
double r9113061 = 0.0072644182;
double r9113062 = r9113058 * r9113054;
double r9113063 = r9113061 * r9113062;
double r9113064 = r9113060 + r9113063;
double r9113065 = 0.0005064034;
double r9113066 = r9113062 * r9113054;
double r9113067 = r9113065 * r9113066;
double r9113068 = r9113064 + r9113067;
double r9113069 = 0.0001789971;
double r9113070 = r9113066 * r9113054;
double r9113071 = r9113069 * r9113070;
double r9113072 = r9113068 + r9113071;
double r9113073 = 0.7715471019;
double r9113074 = r9113073 * r9113054;
double r9113075 = r9113051 + r9113074;
double r9113076 = 0.2909738639;
double r9113077 = r9113076 * r9113058;
double r9113078 = r9113075 + r9113077;
double r9113079 = 0.0694555761;
double r9113080 = r9113079 * r9113062;
double r9113081 = r9113078 + r9113080;
double r9113082 = 0.0140005442;
double r9113083 = r9113082 * r9113066;
double r9113084 = r9113081 + r9113083;
double r9113085 = 0.0008327945;
double r9113086 = r9113085 * r9113070;
double r9113087 = r9113084 + r9113086;
double r9113088 = 2.0;
double r9113089 = r9113088 * r9113069;
double r9113090 = r9113070 * r9113054;
double r9113091 = r9113089 * r9113090;
double r9113092 = r9113087 + r9113091;
double r9113093 = r9113072 / r9113092;
double r9113094 = r9113093 * r9113053;
return r9113094;
}
double f(double x) {
double r9113095 = x;
double r9113096 = -8101506.069403253;
bool r9113097 = r9113095 <= r9113096;
double r9113098 = 0.15298196345929327;
double r9113099 = r9113095 * r9113095;
double r9113100 = r9113095 * r9113099;
double r9113101 = r9113100 * r9113099;
double r9113102 = r9113098 / r9113101;
double r9113103 = 0.2514179000665375;
double r9113104 = r9113103 / r9113100;
double r9113105 = 0.5;
double r9113106 = r9113105 / r9113095;
double r9113107 = r9113104 + r9113106;
double r9113108 = r9113102 + r9113107;
double r9113109 = 613.6089872492754;
bool r9113110 = r9113095 <= r9113109;
double r9113111 = r9113099 * r9113099;
double r9113112 = r9113111 * r9113111;
double r9113113 = 0.0001789971;
double r9113114 = r9113099 * r9113113;
double r9113115 = 0.0005064034;
double r9113116 = r9113114 + r9113115;
double r9113117 = r9113112 * r9113116;
double r9113118 = 0.1049934947;
double r9113119 = r9113099 * r9113118;
double r9113120 = 1.0;
double r9113121 = r9113119 + r9113120;
double r9113122 = 0.0424060604;
double r9113123 = 0.0072644182;
double r9113124 = r9113095 * r9113123;
double r9113125 = r9113124 * r9113095;
double r9113126 = r9113122 + r9113125;
double r9113127 = r9113126 * r9113111;
double r9113128 = r9113121 + r9113127;
double r9113129 = r9113117 + r9113128;
double r9113130 = 2.0;
double r9113131 = r9113113 * r9113111;
double r9113132 = r9113130 * r9113131;
double r9113133 = 0.0008327945;
double r9113134 = r9113133 * r9113099;
double r9113135 = r9113132 + r9113134;
double r9113136 = r9113112 * r9113135;
double r9113137 = 0.7715471019;
double r9113138 = 0.2909738639;
double r9113139 = r9113138 * r9113099;
double r9113140 = r9113137 + r9113139;
double r9113141 = 0.0694555761;
double r9113142 = 0.0140005442;
double r9113143 = r9113099 * r9113142;
double r9113144 = r9113141 + r9113143;
double r9113145 = r9113111 * r9113144;
double r9113146 = r9113140 + r9113145;
double r9113147 = r9113099 * r9113146;
double r9113148 = r9113120 + r9113147;
double r9113149 = r9113136 + r9113148;
double r9113150 = r9113129 / r9113149;
double r9113151 = r9113095 * r9113150;
double r9113152 = r9113110 ? r9113151 : r9113108;
double r9113153 = r9113097 ? r9113108 : r9113152;
return r9113153;
}



Bits error versus x
Results
if x < -8101506.069403253 or 613.6089872492754 < x Initial program 58.7
Simplified58.7
Taylor expanded around -inf 0.0
Simplified0.0
if -8101506.069403253 < x < 613.6089872492754Initial program 0.0
Simplified0.0
Taylor expanded around -inf 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019130
(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))