Average Error: 13.1 → 14.8
Time: 18.4s
Precision: 64
\[10^{-150} \lt \left|x\right| \lt 10^{+150}\]
\[\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\]
\[\sqrt{\sqrt[3]{\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right)\right)} + 0.5}\]
\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}
\sqrt{\sqrt[3]{\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right)\right)} + 0.5}
double f(double p, double x) {
        double r7949683 = 0.5;
        double r7949684 = 1.0;
        double r7949685 = x;
        double r7949686 = 4.0;
        double r7949687 = p;
        double r7949688 = r7949686 * r7949687;
        double r7949689 = r7949688 * r7949687;
        double r7949690 = r7949685 * r7949685;
        double r7949691 = r7949689 + r7949690;
        double r7949692 = sqrt(r7949691);
        double r7949693 = r7949685 / r7949692;
        double r7949694 = r7949684 + r7949693;
        double r7949695 = r7949683 * r7949694;
        double r7949696 = sqrt(r7949695);
        return r7949696;
}

double f(double p, double x) {
        double r7949697 = x;
        double r7949698 = r7949697 * r7949697;
        double r7949699 = p;
        double r7949700 = r7949699 * r7949699;
        double r7949701 = 4.0;
        double r7949702 = r7949700 * r7949701;
        double r7949703 = r7949698 + r7949702;
        double r7949704 = sqrt(r7949703);
        double r7949705 = r7949697 / r7949704;
        double r7949706 = 0.5;
        double r7949707 = r7949705 * r7949706;
        double r7949708 = r7949707 * r7949707;
        double r7949709 = r7949707 * r7949708;
        double r7949710 = cbrt(r7949709);
        double r7949711 = r7949710 + r7949706;
        double r7949712 = sqrt(r7949711);
        return r7949712;
}

Error

Bits error versus p

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 13.1

    \[\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\]
  2. Simplified13.1

    \[\leadsto \color{blue}{\sqrt{0.5 \cdot \frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} + 0.5}}\]
  3. Using strategy rm
  4. Applied add-cbrt-cube14.8

    \[\leadsto \sqrt{\color{blue}{\sqrt[3]{\left(\left(0.5 \cdot \frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}}\right) \cdot \left(0.5 \cdot \frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}}\right)\right) \cdot \left(0.5 \cdot \frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}}\right)}} + 0.5}\]
  5. Final simplification14.8

    \[\leadsto \sqrt{\sqrt[3]{\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right) \cdot \left(\frac{x}{\sqrt{x \cdot x + \left(p \cdot p\right) \cdot 4}} \cdot 0.5\right)\right)} + 0.5}\]

Reproduce

herbie shell --seed 2019143 
(FPCore (p x)
  :name "Given's Rotation SVD example"
  :pre (< 1e-150 (fabs x) 1e+150)

  :herbie-target
  (sqrt (+ 1/2 (/ (copysign 1/2 x) (hypot 1 (/ (* 2 p) x)))))

  (sqrt (* 0.5 (+ 1 (/ x (sqrt (+ (* (* 4 p) p) (* x x))))))))