Average Error: 0.7 → 0.7
Time: 19.9s
Precision: 64
\[\alpha \gt \left(-1\right) \land \beta \gt \left(-1\right)\]
\[\frac{\left(\frac{\left(\frac{\left(\beta - \alpha\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
\[\frac{\frac{\beta - \alpha}{\alpha + \left(\beta + 2.0\right)} + 1.0}{2.0}\]
\frac{\left(\frac{\left(\frac{\left(\beta - \alpha\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}
\frac{\frac{\beta - \alpha}{\alpha + \left(\beta + 2.0\right)} + 1.0}{2.0}
double f(double alpha, double beta) {
        double r2455428 = beta;
        double r2455429 = alpha;
        double r2455430 = r2455428 - r2455429;
        double r2455431 = r2455429 + r2455428;
        double r2455432 = 2.0;
        double r2455433 = /* ERROR: no posit support in C */;
        double r2455434 = r2455431 + r2455433;
        double r2455435 = r2455430 / r2455434;
        double r2455436 = 1.0;
        double r2455437 = /* ERROR: no posit support in C */;
        double r2455438 = r2455435 + r2455437;
        double r2455439 = r2455438 / r2455433;
        return r2455439;
}

double f(double alpha, double beta) {
        double r2455440 = beta;
        double r2455441 = alpha;
        double r2455442 = r2455440 - r2455441;
        double r2455443 = 2.0;
        double r2455444 = r2455440 + r2455443;
        double r2455445 = r2455441 + r2455444;
        double r2455446 = r2455442 / r2455445;
        double r2455447 = 1.0;
        double r2455448 = r2455446 + r2455447;
        double r2455449 = r2455448 / r2455443;
        return r2455449;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Initial program 0.7

    \[\frac{\left(\frac{\left(\frac{\left(\beta - \alpha\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
  2. Using strategy rm
  3. Applied associate-+l+0.7

    \[\leadsto \frac{\left(\frac{\left(\frac{\left(\beta - \alpha\right)}{\color{blue}{\left(\frac{\alpha}{\left(\frac{\beta}{\left(2.0\right)}\right)}\right)}}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
  4. Final simplification0.7

    \[\leadsto \frac{\frac{\beta - \alpha}{\alpha + \left(\beta + 2.0\right)} + 1.0}{2.0}\]

Reproduce

herbie shell --seed 2019104 +o rules:numerics
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/1"
  :pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)))
  (/.p16 (+.p16 (/.p16 (-.p16 beta alpha) (+.p16 (+.p16 alpha beta) (real->posit16 2.0))) (real->posit16 1.0)) (real->posit16 2.0)))