Average Error: 1.0 → 1.0
Time: 19.7s
Precision: 64
\[\frac{\left(\left(\frac{\left(1\right)}{\left(\frac{x}{\left(1\right)}\right)}\right) - \left(\frac{\left(2\right)}{x}\right)\right)}{\left(\frac{\left(1\right)}{\left(x - \left(1\right)\right)}\right)}\]
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\frac{\left(\left(\frac{\left(1\right)}{\left(\frac{x}{\left(1\right)}\right)}\right) - \left(\frac{\left(2\right)}{x}\right)\right)}{\left(\frac{\left(1\right)}{\left(x - \left(1\right)\right)}\right)}
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
double f(double x) {
        double r4285822 = 1.0;
        double r4285823 = /* ERROR: no posit support in C */;
        double r4285824 = x;
        double r4285825 = r4285824 + r4285823;
        double r4285826 = r4285823 / r4285825;
        double r4285827 = 2.0;
        double r4285828 = /* ERROR: no posit support in C */;
        double r4285829 = r4285828 / r4285824;
        double r4285830 = r4285826 - r4285829;
        double r4285831 = r4285824 - r4285823;
        double r4285832 = r4285823 / r4285831;
        double r4285833 = r4285830 + r4285832;
        return r4285833;
}

double f(double x) {
        double r4285834 = 1.0;
        double r4285835 = x;
        double r4285836 = r4285835 + r4285834;
        double r4285837 = r4285834 / r4285836;
        double r4285838 = 2.0;
        double r4285839 = r4285838 / r4285835;
        double r4285840 = r4285837 - r4285839;
        double r4285841 = r4285835 - r4285834;
        double r4285842 = r4285834 / r4285841;
        double r4285843 = r4285840 + r4285842;
        return r4285843;
}

Error

Bits error versus x

Derivation

  1. Initial program 1.0

    \[\frac{\left(\left(\frac{\left(1\right)}{\left(\frac{x}{\left(1\right)}\right)}\right) - \left(\frac{\left(2\right)}{x}\right)\right)}{\left(\frac{\left(1\right)}{\left(x - \left(1\right)\right)}\right)}\]
  2. Final simplification1.0

    \[\leadsto \left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]

Reproduce

herbie shell --seed 2019128 
(FPCore (x)
  :name "3frac (problem 3.3.3)"
  (+.p16 (-.p16 (/.p16 (real->posit16 1) (+.p16 x (real->posit16 1))) (/.p16 (real->posit16 2) x)) (/.p16 (real->posit16 1) (-.p16 x (real->posit16 1)))))