Average Error: 19.9 → 1.5
Time: 19.0s
Precision: 64
\[\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le 6705.611752539598:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{\sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{1}{\sqrt[3]{\sqrt{1 + x}}}\right) + \mathsf{fma}\left(1, {x}^{\frac{-1}{2}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{-1}{\sqrt[3]{\sqrt{1 + x}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{\log x \cdot \frac{-1}{2}}}{x}, \frac{1}{2}, \left(\frac{\frac{5}{16}}{x} - \frac{3}{8}\right) \cdot \frac{e^{\log x \cdot \frac{-1}{2}}}{x \cdot x}\right)\\ \end{array}\]
\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}
\begin{array}{l}
\mathbf{if}\;x \le 6705.611752539598:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{\sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{1}{\sqrt[3]{\sqrt{1 + x}}}\right) + \mathsf{fma}\left(1, {x}^{\frac{-1}{2}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{-1}{\sqrt[3]{\sqrt{1 + x}}}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{\log x \cdot \frac{-1}{2}}}{x}, \frac{1}{2}, \left(\frac{\frac{5}{16}}{x} - \frac{3}{8}\right) \cdot \frac{e^{\log x \cdot \frac{-1}{2}}}{x \cdot x}\right)\\

\end{array}
double f(double x) {
        double r4871215 = 1.0;
        double r4871216 = x;
        double r4871217 = sqrt(r4871216);
        double r4871218 = r4871215 / r4871217;
        double r4871219 = r4871216 + r4871215;
        double r4871220 = sqrt(r4871219);
        double r4871221 = r4871215 / r4871220;
        double r4871222 = r4871218 - r4871221;
        return r4871222;
}

double f(double x) {
        double r4871223 = x;
        double r4871224 = 6705.611752539598;
        bool r4871225 = r4871223 <= r4871224;
        double r4871226 = -1.0;
        double r4871227 = 1.0;
        double r4871228 = r4871227 + r4871223;
        double r4871229 = sqrt(r4871228);
        double r4871230 = cbrt(r4871229);
        double r4871231 = r4871226 / r4871230;
        double r4871232 = r4871230 * r4871230;
        double r4871233 = r4871227 / r4871232;
        double r4871234 = r4871227 / r4871230;
        double r4871235 = r4871233 * r4871234;
        double r4871236 = fma(r4871231, r4871233, r4871235);
        double r4871237 = -0.5;
        double r4871238 = pow(r4871223, r4871237);
        double r4871239 = r4871233 * r4871231;
        double r4871240 = fma(r4871227, r4871238, r4871239);
        double r4871241 = r4871236 + r4871240;
        double r4871242 = log(r4871223);
        double r4871243 = r4871242 * r4871237;
        double r4871244 = exp(r4871243);
        double r4871245 = r4871244 / r4871223;
        double r4871246 = 0.5;
        double r4871247 = 0.3125;
        double r4871248 = r4871247 / r4871223;
        double r4871249 = 0.375;
        double r4871250 = r4871248 - r4871249;
        double r4871251 = r4871223 * r4871223;
        double r4871252 = r4871244 / r4871251;
        double r4871253 = r4871250 * r4871252;
        double r4871254 = fma(r4871245, r4871246, r4871253);
        double r4871255 = r4871225 ? r4871241 : r4871254;
        return r4871255;
}

Error

Bits error versus x

Target

Original19.9
Target0.6
Herbie1.5
\[\frac{1}{\left(x + 1\right) \cdot \sqrt{x} + x \cdot \sqrt{x + 1}}\]

Derivation

  1. Split input into 2 regimes
  2. if x < 6705.611752539598

    1. Initial program 0.3

      \[\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\]
    2. Using strategy rm
    3. Applied pow1/20.3

      \[\leadsto \frac{1}{\color{blue}{{x}^{\frac{1}{2}}}} - \frac{1}{\sqrt{x + 1}}\]
    4. Applied pow-flip0.1

      \[\leadsto \color{blue}{{x}^{\left(-\frac{1}{2}\right)}} - \frac{1}{\sqrt{x + 1}}\]
    5. Simplified0.1

      \[\leadsto {x}^{\color{blue}{\frac{-1}{2}}} - \frac{1}{\sqrt{x + 1}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt0.1

      \[\leadsto {x}^{\frac{-1}{2}} - \frac{1}{\color{blue}{\left(\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}\right) \cdot \sqrt[3]{\sqrt{x + 1}}}}\]
    8. Applied add-sqr-sqrt0.1

      \[\leadsto {x}^{\frac{-1}{2}} - \frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{\left(\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}\right) \cdot \sqrt[3]{\sqrt{x + 1}}}\]
    9. Applied times-frac0.1

      \[\leadsto {x}^{\frac{-1}{2}} - \color{blue}{\frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}} \cdot \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}}}}\]
    10. Applied *-un-lft-identity0.1

      \[\leadsto \color{blue}{1 \cdot {x}^{\frac{-1}{2}}} - \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}} \cdot \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}}}\]
    11. Applied prod-diff0.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(1, {x}^{\frac{-1}{2}}, -\frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}}} \cdot \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}}\right) + \mathsf{fma}\left(-\frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}}}, \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}}, \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}}} \cdot \frac{\sqrt{1}}{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}}\right)}\]

    if 6705.611752539598 < x

    1. Initial program 39.7

      \[\frac{1}{\sqrt{x}} - \frac{1}{\sqrt{x + 1}}\]
    2. Using strategy rm
    3. Applied pow1/239.7

      \[\leadsto \frac{1}{\color{blue}{{x}^{\frac{1}{2}}}} - \frac{1}{\sqrt{x + 1}}\]
    4. Applied pow-flip44.5

      \[\leadsto \color{blue}{{x}^{\left(-\frac{1}{2}\right)}} - \frac{1}{\sqrt{x + 1}}\]
    5. Simplified44.5

      \[\leadsto {x}^{\color{blue}{\frac{-1}{2}}} - \frac{1}{\sqrt{x + 1}}\]
    6. Using strategy rm
    7. Applied pow1/244.5

      \[\leadsto {x}^{\frac{-1}{2}} - \frac{1}{\color{blue}{{\left(x + 1\right)}^{\frac{1}{2}}}}\]
    8. Applied pow-flip39.7

      \[\leadsto {x}^{\frac{-1}{2}} - \color{blue}{{\left(x + 1\right)}^{\left(-\frac{1}{2}\right)}}\]
    9. Simplified39.7

      \[\leadsto {x}^{\frac{-1}{2}} - {\left(x + 1\right)}^{\color{blue}{\frac{-1}{2}}}\]
    10. Taylor expanded around -inf 62.7

      \[\leadsto \color{blue}{\left(\frac{1}{2} \cdot \frac{e^{\frac{-1}{2} \cdot \left(\log -1 - \log \left(\frac{-1}{x}\right)\right)}}{x} + \frac{5}{16} \cdot \frac{e^{\frac{-1}{2} \cdot \left(\log -1 - \log \left(\frac{-1}{x}\right)\right)}}{{x}^{3}}\right) - \frac{3}{8} \cdot \frac{e^{\frac{-1}{2} \cdot \left(\log -1 - \log \left(\frac{-1}{x}\right)\right)}}{{x}^{2}}}\]
    11. Simplified2.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{e^{\frac{-1}{2} \cdot \left(0 + \log x\right)}}{x}, \frac{1}{2}, \frac{e^{\frac{-1}{2} \cdot \left(0 + \log x\right)}}{x \cdot x} \cdot \left(\frac{\frac{5}{16}}{x} - \frac{3}{8}\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 6705.611752539598:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{\sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{1}{\sqrt[3]{\sqrt{1 + x}}}\right) + \mathsf{fma}\left(1, {x}^{\frac{-1}{2}}, \frac{1}{\sqrt[3]{\sqrt{1 + x}} \cdot \sqrt[3]{\sqrt{1 + x}}} \cdot \frac{-1}{\sqrt[3]{\sqrt{1 + x}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{e^{\log x \cdot \frac{-1}{2}}}{x}, \frac{1}{2}, \left(\frac{\frac{5}{16}}{x} - \frac{3}{8}\right) \cdot \frac{e^{\log x \cdot \frac{-1}{2}}}{x \cdot x}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (x)
  :name "2isqrt (example 3.6)"

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

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