Average Error: 29.6 → 29.6
Time: 20.8s
Precision: 64
\[\sqrt{x + 1} - \sqrt{x}\]
\[e^{\sqrt[3]{\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \left(\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right)\right)}}\]
\sqrt{x + 1} - \sqrt{x}
e^{\sqrt[3]{\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \left(\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right)\right)}}
double f(double x) {
        double r11112470 = x;
        double r11112471 = 1.0;
        double r11112472 = r11112470 + r11112471;
        double r11112473 = sqrt(r11112472);
        double r11112474 = sqrt(r11112470);
        double r11112475 = r11112473 - r11112474;
        return r11112475;
}

double f(double x) {
        double r11112476 = 1.0;
        double r11112477 = x;
        double r11112478 = r11112476 + r11112477;
        double r11112479 = cbrt(r11112478);
        double r11112480 = r11112479 * r11112479;
        double r11112481 = sqrt(r11112480);
        double r11112482 = sqrt(r11112479);
        double r11112483 = sqrt(r11112477);
        double r11112484 = -r11112483;
        double r11112485 = fma(r11112481, r11112482, r11112484);
        double r11112486 = log(r11112485);
        double r11112487 = r11112486 * r11112486;
        double r11112488 = r11112486 * r11112487;
        double r11112489 = cbrt(r11112488);
        double r11112490 = exp(r11112489);
        return r11112490;
}

Error

Bits error versus x

Target

Original29.6
Target0.2
Herbie29.6
\[\frac{1}{\sqrt{x + 1} + \sqrt{x}}\]

Derivation

  1. Initial program 29.6

    \[\sqrt{x + 1} - \sqrt{x}\]
  2. Using strategy rm
  3. Applied add-cube-cbrt29.7

    \[\leadsto \sqrt{\color{blue}{\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot \sqrt[3]{x + 1}}} - \sqrt{x}\]
  4. Applied sqrt-prod29.7

    \[\leadsto \color{blue}{\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}} \cdot \sqrt{\sqrt[3]{x + 1}}} - \sqrt{x}\]
  5. Applied fma-neg29.7

    \[\leadsto \color{blue}{(\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right) \cdot \left(\sqrt{\sqrt[3]{x + 1}}\right) + \left(-\sqrt{x}\right))_*}\]
  6. Using strategy rm
  7. Applied add-exp-log29.6

    \[\leadsto \color{blue}{e^{\log \left((\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right) \cdot \left(\sqrt{\sqrt[3]{x + 1}}\right) + \left(-\sqrt{x}\right))_*\right)}}\]
  8. Using strategy rm
  9. Applied add-cbrt-cube29.6

    \[\leadsto e^{\color{blue}{\sqrt[3]{\left(\log \left((\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right) \cdot \left(\sqrt{\sqrt[3]{x + 1}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \log \left((\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right) \cdot \left(\sqrt{\sqrt[3]{x + 1}}\right) + \left(-\sqrt{x}\right))_*\right)\right) \cdot \log \left((\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}\right) \cdot \left(\sqrt{\sqrt[3]{x + 1}}\right) + \left(-\sqrt{x}\right))_*\right)}}}\]
  10. Final simplification29.6

    \[\leadsto e^{\sqrt[3]{\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \left(\log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right) \cdot \log \left((\left(\sqrt{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) \cdot \left(\sqrt{\sqrt[3]{1 + x}}\right) + \left(-\sqrt{x}\right))_*\right)\right)}}\]

Reproduce

herbie shell --seed 2019112 +o rules:numerics
(FPCore (x)
  :name "2sqrt (example 3.1)"

  :herbie-target
  (/ 1 (+ (sqrt (+ x 1)) (sqrt x)))

  (- (sqrt (+ x 1)) (sqrt x)))