x \cdot \left(1 + y \cdot y\right)
\begin{array}{l}
\mathbf{if}\;y \le -6.68515282831365304 \cdot 10^{28}:\\
\;\;\;\;\sqrt{\left(\frac{0.125}{{y}^{3}} - y\right) - \frac{0.5}{y}} \cdot \left(\sqrt{\mathsf{hypot}\left(y, \sqrt{1}\right)} \cdot \left(\mathsf{hypot}\left(y, \sqrt{1}\right) \cdot x\right)\right)\\
\mathbf{elif}\;y \le 4.4508025748694133 \cdot 10^{153}:\\
\;\;\;\;\mathsf{fma}\left(y, y, 1\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;\sqrt{y + \left(\frac{0.5}{y} - \frac{0.125}{{y}^{3}}\right)} \cdot \left(\sqrt{\mathsf{hypot}\left(y, \sqrt{1}\right)} \cdot \left(\mathsf{hypot}\left(y, \sqrt{1}\right) \cdot x\right)\right)\\
\end{array}double f(double x, double y) {
double r465828 = x;
double r465829 = 1.0;
double r465830 = y;
double r465831 = r465830 * r465830;
double r465832 = r465829 + r465831;
double r465833 = r465828 * r465832;
return r465833;
}
double f(double x, double y) {
double r465834 = y;
double r465835 = -6.685152828313653e+28;
bool r465836 = r465834 <= r465835;
double r465837 = 0.125;
double r465838 = 3.0;
double r465839 = pow(r465834, r465838);
double r465840 = r465837 / r465839;
double r465841 = r465840 - r465834;
double r465842 = 0.5;
double r465843 = r465842 / r465834;
double r465844 = r465841 - r465843;
double r465845 = sqrt(r465844);
double r465846 = 1.0;
double r465847 = sqrt(r465846);
double r465848 = hypot(r465834, r465847);
double r465849 = sqrt(r465848);
double r465850 = x;
double r465851 = r465848 * r465850;
double r465852 = r465849 * r465851;
double r465853 = r465845 * r465852;
double r465854 = 4.450802574869413e+153;
bool r465855 = r465834 <= r465854;
double r465856 = fma(r465834, r465834, r465846);
double r465857 = r465856 * r465850;
double r465858 = r465843 - r465840;
double r465859 = r465834 + r465858;
double r465860 = sqrt(r465859);
double r465861 = r465860 * r465852;
double r465862 = r465855 ? r465857 : r465861;
double r465863 = r465836 ? r465853 : r465862;
return r465863;
}




Bits error versus x




Bits error versus y
| Original | 5.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
if y < -6.685152828313653e+28Initial program 21.1
Simplified21.1
rmApplied add-sqr-sqrt21.1
Applied associate-*l*21.1
rmApplied add-sqr-sqrt21.1
Applied sqrt-prod21.3
Applied associate-*l*21.3
Simplified21.3
Taylor expanded around -inf 0.6
Simplified0.6
if -6.685152828313653e+28 < y < 4.450802574869413e+153Initial program 0.1
Simplified0.1
if 4.450802574869413e+153 < y Initial program 63.8
Simplified63.8
rmApplied add-sqr-sqrt63.8
Applied associate-*l*63.8
rmApplied add-sqr-sqrt63.8
Applied sqrt-prod63.8
Applied associate-*l*63.8
Simplified63.8
Taylor expanded around inf 0.6
Simplified0.6
Final simplification0.1
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y)
:name "Numeric.Integration.TanhSinh:everywhere from integration-0.2.1"
:precision binary64
:herbie-target
(+ x (* (* x y) y))
(* x (+ 1 (* y y))))