\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\sqrt{0.5 \cdot \left(1 + \frac{x}{{\left(\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}\right)}^{\frac{3}{4}} \cdot \sqrt{\sqrt{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}}}\right)}double f(double p, double x) {
double r258889 = 0.5;
double r258890 = 1.0;
double r258891 = x;
double r258892 = 4.0;
double r258893 = p;
double r258894 = r258892 * r258893;
double r258895 = r258894 * r258893;
double r258896 = r258891 * r258891;
double r258897 = r258895 + r258896;
double r258898 = sqrt(r258897);
double r258899 = r258891 / r258898;
double r258900 = r258890 + r258899;
double r258901 = r258889 * r258900;
double r258902 = sqrt(r258901);
return r258902;
}
double f(double p, double x) {
double r258903 = 0.5;
double r258904 = 1.0;
double r258905 = x;
double r258906 = 4.0;
double r258907 = p;
double r258908 = r258906 * r258907;
double r258909 = r258908 * r258907;
double r258910 = r258905 * r258905;
double r258911 = r258909 + r258910;
double r258912 = sqrt(r258911);
double r258913 = 0.75;
double r258914 = pow(r258912, r258913);
double r258915 = sqrt(r258912);
double r258916 = sqrt(r258915);
double r258917 = r258914 * r258916;
double r258918 = r258905 / r258917;
double r258919 = r258904 + r258918;
double r258920 = r258903 * r258919;
double r258921 = sqrt(r258920);
return r258921;
}




Bits error versus p




Bits error versus x
Results
| Original | 13.0 |
|---|---|
| Target | 13.0 |
| Herbie | 13.7 |
Initial program 13.0
rmApplied add-sqr-sqrt13.0
Applied sqrt-prod14.2
rmApplied add-sqr-sqrt14.2
Applied sqrt-prod14.2
Applied sqrt-prod14.5
Applied associate-*r*14.3
Simplified14.7
rmApplied pow1/214.7
Applied sqrt-pow114.6
Applied pow-pow13.7
Simplified13.7
Final simplification13.7
herbie shell --seed 2019354 +o rules:numerics
(FPCore (p x)
:name "Given's Rotation SVD example"
:precision binary64
:pre (< 1e-150 (fabs x) 1e+150)
:herbie-target
(sqrt (+ 0.5 (/ (copysign 0.5 x) (hypot 1 (/ (* 2 p) x)))))
(sqrt (* 0.5 (+ 1 (/ x (sqrt (+ (* (* 4 p) p) (* x x))))))))