Average Error: 9.6 → 0.3
Time: 30.6s
Precision: binary64
Cost: 3394
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq -1.0871063920152996 \cdot 10^{-06}:\\ \;\;\;\;\frac{x \cdot \left(x - 1\right) + \left(1 + x\right) \cdot \left(x - 2 \cdot \left(x - 1\right)\right)}{{x}^{3} - x}\\ \mathbf{elif}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq 1.6543612251060553 \cdot 10^{-24}:\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x - 1} + \frac{x - \left(1 + x\right) \cdot 2}{x \cdot \left(1 + x\right)}\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq -1.0871063920152996 \cdot 10^{-06}:\\
\;\;\;\;\frac{x \cdot \left(x - 1\right) + \left(1 + x\right) \cdot \left(x - 2 \cdot \left(x - 1\right)\right)}{{x}^{3} - x}\\

\mathbf{elif}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq 1.6543612251060553 \cdot 10^{-24}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{3}}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{x - 1} + \frac{x - \left(1 + x\right) \cdot 2}{x \cdot \left(1 + x\right)}\\

\end{array}
(FPCore (x)
 :precision binary64
 (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))
(FPCore (x)
 :precision binary64
 (if (<=
      (+ (- (/ 1.0 (+ 1.0 x)) (/ 2.0 x)) (/ 1.0 (- x 1.0)))
      -1.0871063920152996e-06)
   (/
    (+ (* x (- x 1.0)) (* (+ 1.0 x) (- x (* 2.0 (- x 1.0)))))
    (- (pow x 3.0) x))
   (if (<=
        (+ (- (/ 1.0 (+ 1.0 x)) (/ 2.0 x)) (/ 1.0 (- x 1.0)))
        1.6543612251060553e-24)
     (+ (/ 2.0 (pow x 7.0)) (+ (/ 2.0 (pow x 5.0)) (/ 2.0 (pow x 3.0))))
     (+ (/ 1.0 (- x 1.0)) (/ (- x (* (+ 1.0 x) 2.0)) (* x (+ 1.0 x)))))))
double code(double x) {
	return ((1.0 / (x + 1.0)) - (2.0 / x)) + (1.0 / (x - 1.0));
}
double code(double x) {
	double tmp;
	if ((((1.0 / (1.0 + x)) - (2.0 / x)) + (1.0 / (x - 1.0))) <= -1.0871063920152996e-06) {
		tmp = ((x * (x - 1.0)) + ((1.0 + x) * (x - (2.0 * (x - 1.0))))) / (pow(x, 3.0) - x);
	} else if ((((1.0 / (1.0 + x)) - (2.0 / x)) + (1.0 / (x - 1.0))) <= 1.6543612251060553e-24) {
		tmp = (2.0 / pow(x, 7.0)) + ((2.0 / pow(x, 5.0)) + (2.0 / pow(x, 3.0)));
	} else {
		tmp = (1.0 / (x - 1.0)) + ((x - ((1.0 + x) * 2.0)) / (x * (1.0 + x)));
	}
	return tmp;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Alternatives

Alternative 1
Accuracy0.3
Cost3586
\[\begin{array}{l} \mathbf{if}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq -1.0871063920152996 \cdot 10^{-06}:\\ \;\;\;\;\frac{x \cdot \left(x - 1\right) + \left(1 + x\right) \cdot \left(x - 2 \cdot \left(x - 1\right)\right)}{{x}^{3} - x}\\ \mathbf{elif}\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1} \leq 1.6543612251060553 \cdot 10^{-24}:\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{1 + x} + \left(\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \frac{\sqrt[3]{1}}{x - 1} - \frac{2}{x}\right)\\ \end{array}\]
Alternative 2
Accuracy0.2
Cost1796
\[\begin{array}{l} \mathbf{if}\;x \leq -133524098.06377453 \lor \neg \left(x \leq 507.999703224639\right):\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \left(x - 1\right) + \left(x + 1\right) \cdot \left(x - 2 \cdot \left(x - 1\right)\right)}{{x}^{3} - x}\\ \end{array}\]
Alternative 3
Accuracy9.6
Cost1408
\[\frac{1}{1 + x} + \left(\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \frac{\sqrt[3]{1}}{x - 1} - \frac{2}{x}\right)\]
Alternative 4
Accuracy25.3
Cost1472
\[\frac{x \cdot \left(x - 1\right) + \left(x + 1\right) \cdot \left(x - \left(x - 1\right) \cdot 2\right)}{{x}^{3} - x}\]

Derivation

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

    1. Initial program 0.0

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

      \[\leadsto \color{blue}{\left(\frac{1}{x + 1} + \left(-\frac{2}{x}\right)\right)} + \frac{1}{x - 1}\]
    4. Applied associate-+l+_binary64_30800.0

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

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

      \[\leadsto \frac{1}{x + 1} + \color{blue}{\frac{1 \cdot x - \left(x - 1\right) \cdot 2}{\left(x - 1\right) \cdot x}}\]
    8. Applied frac-add_binary64_31550.0

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

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

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

    if -1.0871063920153e-6 < (+.f64 (-.f64 (/.f64 1 (+.f64 x 1)) (/.f64 2 x)) (/.f64 1 (-.f64 x 1))) < 1.65436e-24

    1. Initial program 19.5

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

      \[\leadsto \color{blue}{\left(\frac{1}{x + 1} + \left(-\frac{2}{x}\right)\right)} + \frac{1}{x - 1}\]
    4. Applied associate-+l+_binary64_308019.5

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

      \[\leadsto \frac{1}{x + 1} + \color{blue}{\left(\frac{1}{x - 1} - \frac{2}{x}\right)}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity_binary64_314719.5

      \[\leadsto \frac{1}{x + 1} + \left(\frac{1}{x - 1} - \frac{2}{\color{blue}{1 \cdot x}}\right)\]
    8. Applied *-un-lft-identity_binary64_314719.5

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

      \[\leadsto \frac{1}{x + 1} + \left(\frac{1}{x - 1} - \color{blue}{\frac{1}{1} \cdot \frac{2}{x}}\right)\]
    10. Applied *-un-lft-identity_binary64_314719.5

      \[\leadsto \frac{1}{x + 1} + \left(\frac{1}{\color{blue}{1 \cdot \left(x - 1\right)}} - \frac{1}{1} \cdot \frac{2}{x}\right)\]
    11. Applied *-un-lft-identity_binary64_314719.5

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

      \[\leadsto \frac{1}{x + 1} + \left(\color{blue}{\frac{1}{1} \cdot \frac{1}{x - 1}} - \frac{1}{1} \cdot \frac{2}{x}\right)\]
    13. Applied distribute-lft-out--_binary64_309919.5

      \[\leadsto \frac{1}{x + 1} + \color{blue}{\frac{1}{1} \cdot \left(\frac{1}{x - 1} - \frac{2}{x}\right)}\]
    14. Applied *-un-lft-identity_binary64_314719.5

      \[\leadsto \frac{1}{\color{blue}{1 \cdot \left(x + 1\right)}} + \frac{1}{1} \cdot \left(\frac{1}{x - 1} - \frac{2}{x}\right)\]
    15. Applied *-un-lft-identity_binary64_314719.5

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

      \[\leadsto \color{blue}{\frac{1}{1} \cdot \frac{1}{x + 1}} + \frac{1}{1} \cdot \left(\frac{1}{x - 1} - \frac{2}{x}\right)\]
    17. Applied distribute-lft-out_binary64_309819.5

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

      \[\leadsto \frac{1}{1} \cdot \color{blue}{\left(\frac{1}{1 + x} + \left(\frac{1}{x - 1} - \frac{2}{x}\right)\right)}\]
    19. Taylor expanded around inf 0.4

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

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

    if 1.65436e-24 < (+.f64 (-.f64 (/.f64 1 (+.f64 x 1)) (/.f64 2 x)) (/.f64 1 (-.f64 x 1)))

    1. Initial program 0.6

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

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

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

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

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

Reproduce

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