Average Error: 1.0 → 1.0
Time: 17.2s
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)}\]
\[\frac{1}{x + 1} + \left(\left(-\frac{2}{x}\right) + \frac{1}{x - 1}\right)\]
\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)}
\frac{1}{x + 1} + \left(\left(-\frac{2}{x}\right) + \frac{1}{x - 1}\right)
double f(double x) {
        double r2011105 = 1.0;
        double r2011106 = /* ERROR: no posit support in C */;
        double r2011107 = x;
        double r2011108 = r2011107 + r2011106;
        double r2011109 = r2011106 / r2011108;
        double r2011110 = 2.0;
        double r2011111 = /* ERROR: no posit support in C */;
        double r2011112 = r2011111 / r2011107;
        double r2011113 = r2011109 - r2011112;
        double r2011114 = r2011107 - r2011106;
        double r2011115 = r2011106 / r2011114;
        double r2011116 = r2011113 + r2011115;
        return r2011116;
}

double f(double x) {
        double r2011117 = 1.0;
        double r2011118 = x;
        double r2011119 = r2011118 + r2011117;
        double r2011120 = r2011117 / r2011119;
        double r2011121 = 2.0;
        double r2011122 = r2011121 / r2011118;
        double r2011123 = -r2011122;
        double r2011124 = r2011118 - r2011117;
        double r2011125 = r2011117 / r2011124;
        double r2011126 = r2011123 + r2011125;
        double r2011127 = r2011120 + r2011126;
        return r2011127;
}

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. Using strategy rm
  3. Applied sub-neg1.0

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

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

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

Reproduce

herbie shell --seed 2019120 +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)))))