Average Error: 12.8 → 13.4
Time: 16.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{\frac{0.5 \cdot \left(0.5 \cdot 0.5\right) + \left(x \cdot 0.5\right) \cdot \frac{x \cdot 0.5}{\frac{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}{\frac{x \cdot 0.5}{x \cdot x + \left(p \cdot 4\right) \cdot p}}}}{0.5 \cdot 0.5 - \left(x \cdot \frac{0.5}{\sqrt[3]{\left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right) \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}} \cdot \left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right)}\right) \cdot \left(0.5 - x \cdot \frac{0.5}{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right)}}\]
\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}
\sqrt{\frac{0.5 \cdot \left(0.5 \cdot 0.5\right) + \left(x \cdot 0.5\right) \cdot \frac{x \cdot 0.5}{\frac{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}{\frac{x \cdot 0.5}{x \cdot x + \left(p \cdot 4\right) \cdot p}}}}{0.5 \cdot 0.5 - \left(x \cdot \frac{0.5}{\sqrt[3]{\left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right) \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}} \cdot \left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right)}\right) \cdot \left(0.5 - x \cdot \frac{0.5}{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right)}}
double f(double p, double x) {
        double r10220484 = 0.5;
        double r10220485 = 1.0;
        double r10220486 = x;
        double r10220487 = 4.0;
        double r10220488 = p;
        double r10220489 = r10220487 * r10220488;
        double r10220490 = r10220489 * r10220488;
        double r10220491 = r10220486 * r10220486;
        double r10220492 = r10220490 + r10220491;
        double r10220493 = sqrt(r10220492);
        double r10220494 = r10220486 / r10220493;
        double r10220495 = r10220485 + r10220494;
        double r10220496 = r10220484 * r10220495;
        double r10220497 = sqrt(r10220496);
        return r10220497;
}

double f(double p, double x) {
        double r10220498 = 0.5;
        double r10220499 = r10220498 * r10220498;
        double r10220500 = r10220498 * r10220499;
        double r10220501 = x;
        double r10220502 = r10220501 * r10220498;
        double r10220503 = r10220501 * r10220501;
        double r10220504 = p;
        double r10220505 = 4.0;
        double r10220506 = r10220504 * r10220505;
        double r10220507 = r10220506 * r10220504;
        double r10220508 = r10220503 + r10220507;
        double r10220509 = sqrt(r10220508);
        double r10220510 = r10220502 / r10220508;
        double r10220511 = r10220509 / r10220510;
        double r10220512 = r10220502 / r10220511;
        double r10220513 = r10220502 * r10220512;
        double r10220514 = r10220500 + r10220513;
        double r10220515 = cbrt(r10220509);
        double r10220516 = r10220515 * r10220515;
        double r10220517 = r10220516 * r10220515;
        double r10220518 = cbrt(r10220517);
        double r10220519 = r10220518 * r10220516;
        double r10220520 = r10220498 / r10220519;
        double r10220521 = r10220501 * r10220520;
        double r10220522 = r10220498 / r10220509;
        double r10220523 = r10220501 * r10220522;
        double r10220524 = r10220498 - r10220523;
        double r10220525 = r10220521 * r10220524;
        double r10220526 = r10220499 - r10220525;
        double r10220527 = r10220514 / r10220526;
        double r10220528 = sqrt(r10220527);
        return r10220528;
}

Error

Bits error versus p

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original12.8
Target12.8
Herbie13.4
\[\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 12.8

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

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

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

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

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

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

    \[\leadsto \sqrt{\frac{\frac{x \cdot 0.5}{\frac{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}{\frac{x \cdot 0.5}{x \cdot x + \left(p \cdot 4\right) \cdot p}}} \cdot \left(x \cdot 0.5\right) + 0.5 \cdot \left(0.5 \cdot 0.5\right)}{0.5 \cdot 0.5 - \left(x \cdot \frac{0.5}{\left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right) \cdot \sqrt[3]{\color{blue}{\left(\sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}} \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right) \cdot \sqrt[3]{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}}}}\right) \cdot \left(0.5 - x \cdot \frac{0.5}{\sqrt{x \cdot x + \left(p \cdot 4\right) \cdot p}}\right)}}\]
  11. Final simplification13.4

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

Reproduce

herbie shell --seed 2019139 
(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))))))))