Average Error: 0.4 → 0.3
Time: 19.4s
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(\beta + 1.0\right) \cdot \left(\alpha + 1.0\right)}{\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(\beta + 1.0\right) \cdot \left(\alpha + 1.0\right)}{\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 r1014401 = alpha;
        double r1014402 = beta;
        double r1014403 = r1014401 + r1014402;
        double r1014404 = r1014402 * r1014401;
        double r1014405 = r1014403 + r1014404;
        double r1014406 = 1.0;
        double r1014407 = /* ERROR: no posit support in C */;
        double r1014408 = r1014405 + r1014407;
        double r1014409 = 2.0;
        double r1014410 = /* ERROR: no posit support in C */;
        double r1014411 = 1.0;
        double r1014412 = /* ERROR: no posit support in C */;
        double r1014413 = r1014410 * r1014412;
        double r1014414 = r1014403 + r1014413;
        double r1014415 = r1014408 / r1014414;
        double r1014416 = r1014415 / r1014414;
        double r1014417 = r1014414 + r1014407;
        double r1014418 = r1014416 / r1014417;
        return r1014418;
}

double f(double alpha, double beta) {
        double r1014419 = beta;
        double r1014420 = 1.0;
        double r1014421 = r1014419 + r1014420;
        double r1014422 = alpha;
        double r1014423 = r1014422 + r1014420;
        double r1014424 = r1014421 * r1014423;
        double r1014425 = r1014422 + r1014419;
        double r1014426 = 2.0;
        double r1014427 = 1.0;
        double r1014428 = r1014426 * r1014427;
        double r1014429 = r1014425 + r1014428;
        double r1014430 = r1014424 / r1014429;
        double r1014431 = r1014430 / r1014429;
        double r1014432 = r1014429 + r1014420;
        double r1014433 = r1014431 / r1014432;
        return r1014433;
}

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. Using strategy rm
  5. Applied associate-/l/0.4

    \[\leadsto \frac{\color{blue}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\left(\frac{\beta}{\left(\beta \cdot \alpha\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\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)}\]
  6. Simplified0.4

    \[\leadsto \frac{\left(\frac{\color{blue}{\left(\left(\frac{\beta}{\left(1.0\right)}\right) \cdot \left(\frac{\alpha}{\left(1.0\right)}\right)\right)}}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\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)}\]
  7. Using strategy rm
  8. Applied associate-/r*0.3

    \[\leadsto \frac{\color{blue}{\left(\frac{\left(\frac{\left(\left(\frac{\beta}{\left(1.0\right)}\right) \cdot \left(\frac{\alpha}{\left(1.0\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{\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)}\]
  9. Final simplification0.3

    \[\leadsto \frac{\frac{\frac{\left(\beta + 1.0\right) \cdot \left(\alpha + 1.0\right)}{\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 2019107 +o rules:numerics
(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))))