Average Error: 1.0 → 1.0
Time: 1.4m
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(\frac{1}{x - 1} - \frac{2}{x}\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(\frac{1}{x - 1} - \frac{2}{x}\right)
double f(double x) {
        double r2071007 = 1.0;
        double r2071008 = /* ERROR: no posit support in C */;
        double r2071009 = x;
        double r2071010 = r2071009 + r2071008;
        double r2071011 = r2071008 / r2071010;
        double r2071012 = 2.0;
        double r2071013 = /* ERROR: no posit support in C */;
        double r2071014 = r2071013 / r2071009;
        double r2071015 = r2071011 - r2071014;
        double r2071016 = r2071009 - r2071008;
        double r2071017 = r2071008 / r2071016;
        double r2071018 = r2071015 + r2071017;
        return r2071018;
}

double f(double x) {
        double r2071019 = 1.0;
        double r2071020 = x;
        double r2071021 = r2071020 + r2071019;
        double r2071022 = r2071019 / r2071021;
        double r2071023 = r2071020 - r2071019;
        double r2071024 = r2071019 / r2071023;
        double r2071025 = 2.0;
        double r2071026 = r2071025 / r2071020;
        double r2071027 = r2071024 - r2071026;
        double r2071028 = r2071022 + r2071027;
        return r2071028;
}

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. Simplified1.0

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

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

Reproduce

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