\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\frac{\sqrt{0.5 \cdot \log \left(e^{{1}^{3} + {\left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}^{3}}\right)}}{\sqrt{\frac{x}{\left|{\left(\left(4 \cdot p\right) \cdot p + x \cdot x\right)}^{\frac{1}{3}}\right| \cdot \sqrt{\sqrt[3]{\left(4 \cdot p\right) \cdot p + x \cdot x}}} \cdot \left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}} - 1\right) + 1 \cdot 1}}double f(double p, double x) {
double r175882 = 0.5;
double r175883 = 1.0;
double r175884 = x;
double r175885 = 4.0;
double r175886 = p;
double r175887 = r175885 * r175886;
double r175888 = r175887 * r175886;
double r175889 = r175884 * r175884;
double r175890 = r175888 + r175889;
double r175891 = sqrt(r175890);
double r175892 = r175884 / r175891;
double r175893 = r175883 + r175892;
double r175894 = r175882 * r175893;
double r175895 = sqrt(r175894);
return r175895;
}
double f(double p, double x) {
double r175896 = 0.5;
double r175897 = 1.0;
double r175898 = 3.0;
double r175899 = pow(r175897, r175898);
double r175900 = x;
double r175901 = 4.0;
double r175902 = p;
double r175903 = r175901 * r175902;
double r175904 = r175903 * r175902;
double r175905 = r175900 * r175900;
double r175906 = r175904 + r175905;
double r175907 = sqrt(r175906);
double r175908 = r175900 / r175907;
double r175909 = pow(r175908, r175898);
double r175910 = r175899 + r175909;
double r175911 = exp(r175910);
double r175912 = log(r175911);
double r175913 = r175896 * r175912;
double r175914 = sqrt(r175913);
double r175915 = 0.3333333333333333;
double r175916 = pow(r175906, r175915);
double r175917 = fabs(r175916);
double r175918 = cbrt(r175906);
double r175919 = sqrt(r175918);
double r175920 = r175917 * r175919;
double r175921 = r175900 / r175920;
double r175922 = r175908 - r175897;
double r175923 = r175921 * r175922;
double r175924 = r175897 * r175897;
double r175925 = r175923 + r175924;
double r175926 = sqrt(r175925);
double r175927 = r175914 / r175926;
return r175927;
}




Bits error versus p




Bits error versus x
Results
| Original | 13.6 |
|---|---|
| Target | 13.6 |
| Herbie | 13.6 |
Initial program 13.6
rmApplied flip3-+13.6
Applied associate-*r/13.6
Applied sqrt-div13.6
Simplified13.6
rmApplied add-log-exp13.6
Applied add-log-exp13.6
Applied sum-log13.6
Simplified13.6
rmApplied add-cube-cbrt13.6
Applied sqrt-prod13.6
Simplified13.6
rmApplied pow1/313.6
Final simplification13.6
herbie shell --seed 2019195
(FPCore (p x)
:name "Given's Rotation SVD example"
:pre (< 1e-150 (fabs x) 1e+150)
:herbie-target
(sqrt (+ 0.5 (/ (copysign 0.5 x) (hypot 1.0 (/ (* 2.0 p) x)))))
(sqrt (* 0.5 (+ 1.0 (/ x (sqrt (+ (* (* 4.0 p) p) (* x x))))))))