Average Error: 13.4 → 13.6
Time: 17.6s
Precision: 64
\[1.000000000000000006295358232172963997211 \cdot 10^{-150} \lt \left|x\right| \lt 9.999999999999999808355961724373745905731 \cdot 10^{149}\]
\[\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(\left(\sqrt[3]{1 + \frac{x}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right) \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right)}\]
\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(\left(\sqrt[3]{1 + \frac{x}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right) \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right)}
double f(double p, double x) {
        double r150794 = 0.5;
        double r150795 = 1.0;
        double r150796 = x;
        double r150797 = 4.0;
        double r150798 = p;
        double r150799 = r150797 * r150798;
        double r150800 = r150799 * r150798;
        double r150801 = r150796 * r150796;
        double r150802 = r150800 + r150801;
        double r150803 = sqrt(r150802);
        double r150804 = r150796 / r150803;
        double r150805 = r150795 + r150804;
        double r150806 = r150794 * r150805;
        double r150807 = sqrt(r150806);
        return r150807;
}

double f(double p, double x) {
        double r150808 = 0.5;
        double r150809 = 1.0;
        double r150810 = x;
        double r150811 = 4.0;
        double r150812 = p;
        double r150813 = 2.0;
        double r150814 = pow(r150812, r150813);
        double r150815 = pow(r150810, r150813);
        double r150816 = fma(r150811, r150814, r150815);
        double r150817 = sqrt(r150816);
        double r150818 = cbrt(r150817);
        double r150819 = r150818 * r150818;
        double r150820 = r150819 * r150818;
        double r150821 = r150810 / r150820;
        double r150822 = r150809 + r150821;
        double r150823 = cbrt(r150822);
        double r150824 = r150810 / r150817;
        double r150825 = r150809 + r150824;
        double r150826 = cbrt(r150825);
        double r150827 = r150823 * r150826;
        double r150828 = r150827 * r150826;
        double r150829 = r150808 * r150828;
        double r150830 = sqrt(r150829);
        return r150830;
}

Error

Bits error versus p

Bits error versus x

Target

Original13.4
Target13.4
Herbie13.6
\[\sqrt{0.5 + \frac{\mathsf{copysign}\left(0.5, x\right)}{\mathsf{hypot}\left(1, \frac{2 \cdot p}{x}\right)}}\]

Derivation

  1. Initial program 13.4

    \[\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\]
  2. Using strategy rm
  3. Applied add-cube-cbrt13.6

    \[\leadsto \sqrt{0.5 \cdot \color{blue}{\left(\left(\sqrt[3]{1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}}\right) \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}}\right)}}\]
  4. Simplified13.6

    \[\leadsto \sqrt{0.5 \cdot \left(\color{blue}{\left(\sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right)} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}}\right)}\]
  5. Simplified13.6

    \[\leadsto \sqrt{0.5 \cdot \left(\left(\sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right) \cdot \color{blue}{\sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}}\right)}\]
  6. Using strategy rm
  7. Applied add-cube-cbrt13.6

    \[\leadsto \sqrt{0.5 \cdot \left(\left(\sqrt[3]{1 + \frac{x}{\color{blue}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right) \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right)}\]
  8. Final simplification13.6

    \[\leadsto \sqrt{0.5 \cdot \left(\left(\sqrt[3]{1 + \frac{x}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}} \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right) \cdot \sqrt[3]{1 + \frac{x}{\sqrt{\mathsf{fma}\left(4, {p}^{2}, {x}^{2}\right)}}}\right)}\]

Reproduce

herbie shell --seed 2019306 +o rules:numerics
(FPCore (p x)
  :name "Given's Rotation SVD example"
  :precision binary64
  :pre (< 1.00000000000000001e-150 (fabs x) 9.99999999999999981e149)

  :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))))))))