Average Error: 1.0 → 1.0
Time: 53.6s
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 r1942723 = 1.0;
        double r1942724 = /* ERROR: no posit support in C */;
        double r1942725 = x;
        double r1942726 = r1942725 + r1942724;
        double r1942727 = r1942724 / r1942726;
        double r1942728 = 2.0;
        double r1942729 = /* ERROR: no posit support in C */;
        double r1942730 = r1942729 / r1942725;
        double r1942731 = r1942727 - r1942730;
        double r1942732 = r1942725 - r1942724;
        double r1942733 = r1942724 / r1942732;
        double r1942734 = r1942731 + r1942733;
        return r1942734;
}

double f(double x) {
        double r1942735 = 1.0;
        double r1942736 = x;
        double r1942737 = r1942736 + r1942735;
        double r1942738 = r1942735 / r1942737;
        double r1942739 = 2.0;
        double r1942740 = r1942739 / r1942736;
        double r1942741 = r1942738 - r1942740;
        double r1942742 = r1942736 - r1942735;
        double r1942743 = r1942735 / r1942742;
        double r1942744 = r1942741 + r1942743;
        return r1942744;
}

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 2019156 +o rules:numerics
(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)))))