Average Error: 1.0 → 1.1
Time: 22.1s
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{1}{x - 1}\right) - \frac{2}{x}\]
\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{1}{x - 1}\right) - \frac{2}{x}
double f(double x) {
        double r4715604 = 1.0;
        double r4715605 = /* ERROR: no posit support in C */;
        double r4715606 = x;
        double r4715607 = r4715606 + r4715605;
        double r4715608 = r4715605 / r4715607;
        double r4715609 = 2.0;
        double r4715610 = /* ERROR: no posit support in C */;
        double r4715611 = r4715610 / r4715606;
        double r4715612 = r4715608 - r4715611;
        double r4715613 = r4715606 - r4715605;
        double r4715614 = r4715605 / r4715613;
        double r4715615 = r4715612 + r4715614;
        return r4715615;
}

double f(double x) {
        double r4715616 = 1.0;
        double r4715617 = x;
        double r4715618 = r4715617 + r4715616;
        double r4715619 = r4715616 / r4715618;
        double r4715620 = r4715617 - r4715616;
        double r4715621 = r4715616 / r4715620;
        double r4715622 = r4715619 + r4715621;
        double r4715623 = 2.0;
        double r4715624 = r4715623 / r4715617;
        double r4715625 = r4715622 - r4715624;
        return r4715625;
}

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. Using strategy rm
  7. Applied associate-+r-1.1

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

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

Reproduce

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