Average Error: 1.0 → 1.0
Time: 5.9m
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 r7881282 = 1.0;
        double r7881283 = /* ERROR: no posit support in C */;
        double r7881284 = x;
        double r7881285 = r7881284 + r7881283;
        double r7881286 = r7881283 / r7881285;
        double r7881287 = 2.0;
        double r7881288 = /* ERROR: no posit support in C */;
        double r7881289 = r7881288 / r7881284;
        double r7881290 = r7881286 - r7881289;
        double r7881291 = r7881284 - r7881283;
        double r7881292 = r7881283 / r7881291;
        double r7881293 = r7881290 + r7881292;
        return r7881293;
}

double f(double x) {
        double r7881294 = 1.0;
        double r7881295 = x;
        double r7881296 = r7881295 + r7881294;
        double r7881297 = r7881294 / r7881296;
        double r7881298 = 2.0;
        double r7881299 = r7881298 / r7881295;
        double r7881300 = r7881297 - r7881299;
        double r7881301 = r7881295 - r7881294;
        double r7881302 = r7881294 / r7881301;
        double r7881303 = r7881300 + r7881302;
        return r7881303;
}

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 2019162 
(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)))))