Average Error: 0.4 → 0.4
Time: 14.8s
Precision: 64
\[\alpha \gt \left(-1\right) \land \beta \gt \left(-1\right)\]
\[\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\beta \cdot \alpha\right)}\right)}{\left(1.0\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}{\left(1.0\right)}\right)}\]
\[\frac{\frac{\frac{\left(\alpha + \left(\beta + \beta \cdot \alpha\right)\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\beta \cdot \alpha\right)}\right)}{\left(1.0\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}{\left(1.0\right)}\right)}
\frac{\frac{\frac{\left(\alpha + \left(\beta + \beta \cdot \alpha\right)\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}
double f(double alpha, double beta) {
        double r1701404 = alpha;
        double r1701405 = beta;
        double r1701406 = r1701404 + r1701405;
        double r1701407 = r1701405 * r1701404;
        double r1701408 = r1701406 + r1701407;
        double r1701409 = 1.0;
        double r1701410 = /* ERROR: no posit support in C */;
        double r1701411 = r1701408 + r1701410;
        double r1701412 = 2.0;
        double r1701413 = /* ERROR: no posit support in C */;
        double r1701414 = 1.0;
        double r1701415 = /* ERROR: no posit support in C */;
        double r1701416 = r1701413 * r1701415;
        double r1701417 = r1701406 + r1701416;
        double r1701418 = r1701411 / r1701417;
        double r1701419 = r1701418 / r1701417;
        double r1701420 = r1701417 + r1701410;
        double r1701421 = r1701419 / r1701420;
        return r1701421;
}

double f(double alpha, double beta) {
        double r1701422 = alpha;
        double r1701423 = beta;
        double r1701424 = r1701423 * r1701422;
        double r1701425 = r1701423 + r1701424;
        double r1701426 = r1701422 + r1701425;
        double r1701427 = 1.0;
        double r1701428 = r1701426 + r1701427;
        double r1701429 = r1701422 + r1701423;
        double r1701430 = 2.0;
        double r1701431 = 1.0;
        double r1701432 = r1701430 * r1701431;
        double r1701433 = r1701429 + r1701432;
        double r1701434 = r1701428 / r1701433;
        double r1701435 = r1701434 / r1701433;
        double r1701436 = r1701433 + r1701427;
        double r1701437 = r1701435 / r1701436;
        return r1701437;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Initial program 0.4

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

    \[\leadsto \frac{\left(\frac{\left(\frac{\left(\frac{\color{blue}{\left(\frac{\alpha}{\left(\frac{\beta}{\left(\beta \cdot \alpha\right)}\right)}\right)}}{\left(1.0\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}{\left(1.0\right)}\right)}\]
  4. Final simplification0.4

    \[\leadsto \frac{\frac{\frac{\left(\alpha + \left(\beta + \beta \cdot \alpha\right)\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]

Reproduce

herbie shell --seed 2019125 
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/3"
  :pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)))
  (/.p16 (/.p16 (/.p16 (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 beta alpha)) (real->posit16 1.0)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1))) (real->posit16 1.0))))