Average Error: 14.3 → 0.3
Time: 14.2s
Precision: 64
\[\frac{1}{x + 1} - \frac{1}{x}\]
\[\begin{array}{l} \mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -42.70645258999120130738447187468409538269 \lor \neg \left(\frac{1}{x + 1} - \frac{1}{x} \le 0.0\right):\\ \;\;\;\;\sqrt{\frac{1}{x + 1}} \cdot \sqrt{\frac{1}{x + 1}} - \frac{1}{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]
\frac{1}{x + 1} - \frac{1}{x}
\begin{array}{l}
\mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -42.70645258999120130738447187468409538269 \lor \neg \left(\frac{1}{x + 1} - \frac{1}{x} \le 0.0\right):\\
\;\;\;\;\sqrt{\frac{1}{x + 1}} \cdot \sqrt{\frac{1}{x + 1}} - \frac{1}{x}\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \frac{\frac{1}{x}}{x}\right)\\

\end{array}
double f(double x) {
        double r42912 = 1.0;
        double r42913 = x;
        double r42914 = r42913 + r42912;
        double r42915 = r42912 / r42914;
        double r42916 = r42912 / r42913;
        double r42917 = r42915 - r42916;
        return r42917;
}

double f(double x) {
        double r42918 = 1.0;
        double r42919 = x;
        double r42920 = r42919 + r42918;
        double r42921 = r42918 / r42920;
        double r42922 = r42918 / r42919;
        double r42923 = r42921 - r42922;
        double r42924 = -42.7064525899912;
        bool r42925 = r42923 <= r42924;
        double r42926 = 0.0;
        bool r42927 = r42923 <= r42926;
        double r42928 = !r42927;
        bool r42929 = r42925 || r42928;
        double r42930 = sqrt(r42921);
        double r42931 = r42930 * r42930;
        double r42932 = r42931 - r42922;
        double r42933 = 3.0;
        double r42934 = pow(r42919, r42933);
        double r42935 = r42918 / r42934;
        double r42936 = 4.0;
        double r42937 = pow(r42919, r42936);
        double r42938 = r42918 / r42937;
        double r42939 = r42922 / r42919;
        double r42940 = r42938 + r42939;
        double r42941 = r42935 - r42940;
        double r42942 = r42929 ? r42932 : r42941;
        return r42942;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)) < -42.7064525899912 or 0.0 < (- (/ 1.0 (+ x 1.0)) (/ 1.0 x))

    1. Initial program 0.0

      \[\frac{1}{x + 1} - \frac{1}{x}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.0

      \[\leadsto \color{blue}{\sqrt{\frac{1}{x + 1}} \cdot \sqrt{\frac{1}{x + 1}}} - \frac{1}{x}\]

    if -42.7064525899912 < (- (/ 1.0 (+ x 1.0)) (/ 1.0 x)) < 0.0

    1. Initial program 28.9

      \[\frac{1}{x + 1} - \frac{1}{x}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt30.8

      \[\leadsto \color{blue}{\sqrt{\frac{1}{x + 1} - \frac{1}{x}} \cdot \sqrt{\frac{1}{x + 1} - \frac{1}{x}}}\]
    4. Taylor expanded around inf 1.3

      \[\leadsto \color{blue}{1 \cdot \frac{1}{{x}^{3}} - \left(1 \cdot \frac{1}{{x}^{2}} + 1 \cdot \frac{1}{{x}^{4}}\right)}\]
    5. Simplified1.3

      \[\leadsto \color{blue}{\frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \frac{1}{{x}^{2}}\right)}\]
    6. Using strategy rm
    7. Applied unpow21.3

      \[\leadsto \frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \frac{1}{\color{blue}{x \cdot x}}\right)\]
    8. Applied associate-/r*0.6

      \[\leadsto \frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \color{blue}{\frac{\frac{1}{x}}{x}}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{1}{x + 1} - \frac{1}{x} \le -42.70645258999120130738447187468409538269 \lor \neg \left(\frac{1}{x + 1} - \frac{1}{x} \le 0.0\right):\\ \;\;\;\;\sqrt{\frac{1}{x + 1}} \cdot \sqrt{\frac{1}{x + 1}} - \frac{1}{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{{x}^{3}} - \left(\frac{1}{{x}^{4}} + \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019208 
(FPCore (x)
  :name "2frac (problem 3.3.1)"
  :precision binary64
  (- (/ 1 (+ x 1)) (/ 1 x)))