Average Error: 10.0 → 0.6
Time: 4.2s
Precision: binary64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \]
\[\begin{array}{l} t_0 := \left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{if}\;t_0 \leq -1762.7922963857577:\\ \;\;\;\;\left(\frac{-2}{x} - 2 \cdot \left(x + {x}^{3}\right)\right) + -2 \cdot {x}^{5}\\ \mathbf{elif}\;t_0 \leq 2.524354896707238 \cdot 10^{-29}:\\ \;\;\;\;\frac{2}{{x}^{3}} + \frac{2}{{x}^{5}}\\ \mathbf{else}:\\ \;\;\;\;\begin{array}{l} t_1 := x \cdot \left(1 + x\right)\\ \frac{\left(x - 1\right) \cdot \left(x - \left(1 + x\right) \cdot 2\right) + t_1}{\left(x - 1\right) \cdot t_1} \end{array}\\ \end{array} \]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
t_0 := \left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{if}\;t_0 \leq -1762.7922963857577:\\
\;\;\;\;\left(\frac{-2}{x} - 2 \cdot \left(x + {x}^{3}\right)\right) + -2 \cdot {x}^{5}\\

\mathbf{elif}\;t_0 \leq 2.524354896707238 \cdot 10^{-29}:\\
\;\;\;\;\frac{2}{{x}^{3}} + \frac{2}{{x}^{5}}\\

\mathbf{else}:\\
\;\;\;\;\begin{array}{l}
t_1 := x \cdot \left(1 + x\right)\\
\frac{\left(x - 1\right) \cdot \left(x - \left(1 + x\right) \cdot 2\right) + t_1}{\left(x - 1\right) \cdot t_1}
\end{array}\\


\end{array}
(FPCore (x)
 :precision binary64
 (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))
(FPCore (x)
 :precision binary64
 (let* ((t_0 (+ (- (/ 1.0 (+ 1.0 x)) (/ 2.0 x)) (/ 1.0 (- x 1.0)))))
   (if (<= t_0 -1762.7922963857577)
     (+ (- (/ -2.0 x) (* 2.0 (+ x (pow x 3.0)))) (* -2.0 (pow x 5.0)))
     (if (<= t_0 2.524354896707238e-29)
       (+ (/ 2.0 (pow x 3.0)) (/ 2.0 (pow x 5.0)))
       (let* ((t_1 (* x (+ 1.0 x))))
         (/
          (+ (* (- x 1.0) (- x (* (+ 1.0 x) 2.0))) t_1)
          (* (- x 1.0) t_1)))))))
double code(double x) {
	return ((1.0 / (x + 1.0)) - (2.0 / x)) + (1.0 / (x - 1.0));
}
double code(double x) {
	double t_0 = ((1.0 / (1.0 + x)) - (2.0 / x)) + (1.0 / (x - 1.0));
	double tmp;
	if (t_0 <= -1762.7922963857577) {
		tmp = ((-2.0 / x) - (2.0 * (x + pow(x, 3.0)))) + (-2.0 * pow(x, 5.0));
	} else if (t_0 <= 2.524354896707238e-29) {
		tmp = (2.0 / pow(x, 3.0)) + (2.0 / pow(x, 5.0));
	} else {
		double t_1 = x * (1.0 + x);
		tmp = (((x - 1.0) * (x - ((1.0 + x) * 2.0))) + t_1) / ((x - 1.0) * t_1);
	}
	return tmp;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original10.0
Target0.3
Herbie0.6
\[\frac{2}{x \cdot \left(x \cdot x - 1\right)} \]

Derivation

  1. Split input into 3 regimes
  2. if (+.f64 (-.f64 (/.f64 1 (+.f64 x 1)) (/.f64 2 x)) (/.f64 1 (-.f64 x 1))) < -1762.7922963857577

    1. Initial program 0.0

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \]
    2. Using strategy rm
    3. Applied flip--_binary6432.5

      \[\leadsto \color{blue}{\frac{\frac{1}{x + 1} \cdot \frac{1}{x + 1} - \frac{2}{x} \cdot \frac{2}{x}}{\frac{1}{x + 1} + \frac{2}{x}}} + \frac{1}{x - 1} \]
    4. Applied frac-add_binary6432.5

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

      \[\leadsto \frac{\color{blue}{\left(\frac{2}{x} + \frac{1}{x + 1}\right) \cdot \left(\left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right) + 1\right)}}{\left(\frac{1}{x + 1} + \frac{2}{x}\right) \cdot \left(x - 1\right)} \]
    6. Simplified32.5

      \[\leadsto \frac{\left(\frac{2}{x} + \frac{1}{x + 1}\right) \cdot \left(\left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right) + 1\right)}{\color{blue}{\left(x + -1\right) \cdot \left(\frac{2}{x} + \frac{1}{x + 1}\right)}} \]
    7. Using strategy rm
    8. Applied add-cbrt-cube_binary6443.5

      \[\leadsto \color{blue}{\sqrt[3]{\left(\frac{\left(\frac{2}{x} + \frac{1}{x + 1}\right) \cdot \left(\left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right) + 1\right)}{\left(x + -1\right) \cdot \left(\frac{2}{x} + \frac{1}{x + 1}\right)} \cdot \frac{\left(\frac{2}{x} + \frac{1}{x + 1}\right) \cdot \left(\left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right) + 1\right)}{\left(x + -1\right) \cdot \left(\frac{2}{x} + \frac{1}{x + 1}\right)}\right) \cdot \frac{\left(\frac{2}{x} + \frac{1}{x + 1}\right) \cdot \left(\left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right) + 1\right)}{\left(x + -1\right) \cdot \left(\frac{2}{x} + \frac{1}{x + 1}\right)}}} \]
    9. Simplified43.5

      \[\leadsto \sqrt[3]{\color{blue}{1 \cdot {\left(\frac{1 + \left(\frac{-2}{x} + \frac{1}{x + 1}\right) \cdot \left(x + -1\right)}{x + -1}\right)}^{3}}} \]
    10. Taylor expanded around 0 0.0

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

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

    if -1762.7922963857577 < (+.f64 (-.f64 (/.f64 1 (+.f64 x 1)) (/.f64 2 x)) (/.f64 1 (-.f64 x 1))) < 2.52435e-29

    1. Initial program 19.7

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \]
    2. Taylor expanded around inf 1.1

      \[\leadsto \color{blue}{2 \cdot \frac{1}{{x}^{5}} + 2 \cdot \frac{1}{{x}^{3}}} \]
    3. Simplified1.1

      \[\leadsto \color{blue}{\frac{2}{{x}^{3}} + \frac{2}{{x}^{5}}} \]

    if 2.52435e-29 < (+.f64 (-.f64 (/.f64 1 (+.f64 x 1)) (/.f64 2 x)) (/.f64 1 (-.f64 x 1)))

    1. Initial program 1.0

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \]
    2. Using strategy rm
    3. Applied frac-sub_binary641.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq -1762.7922963857577:\\ \;\;\;\;\left(\frac{-2}{x} - 2 \cdot \left(x + {x}^{3}\right)\right) + -2 \cdot {x}^{5}\\ \mathbf{elif}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq 2.524354896707238 \cdot 10^{-29}:\\ \;\;\;\;\frac{2}{{x}^{3}} + \frac{2}{{x}^{5}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(x - 1\right) \cdot \left(x - \left(1 + x\right) \cdot 2\right) + x \cdot \left(1 + x\right)}{\left(x - 1\right) \cdot \left(x \cdot \left(1 + x\right)\right)}\\ \end{array} \]

Reproduce

herbie shell --seed 2021198 
(FPCore (x)
  :name "3frac (problem 3.3.3)"
  :precision binary64

  :herbie-target
  (/ 2.0 (* x (- (* x x) 1.0)))

  (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))