Average Error: 0.9 → 0.6
Time: 38.4s
Precision: 64
\[\alpha \gt \left(-1\right) \land \beta \gt \left(-1\right) \land i \gt \left(0\right)\]
\[\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
\[\frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}\]
\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}
\frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}
double f(double alpha, double beta, double i) {
        double r3671707 = alpha;
        double r3671708 = beta;
        double r3671709 = r3671707 + r3671708;
        double r3671710 = r3671708 - r3671707;
        double r3671711 = r3671709 * r3671710;
        double r3671712 = 2.0;
        double r3671713 = /* ERROR: no posit support in C */;
        double r3671714 = i;
        double r3671715 = r3671713 * r3671714;
        double r3671716 = r3671709 + r3671715;
        double r3671717 = r3671711 / r3671716;
        double r3671718 = 2.0;
        double r3671719 = /* ERROR: no posit support in C */;
        double r3671720 = r3671716 + r3671719;
        double r3671721 = r3671717 / r3671720;
        double r3671722 = 1.0;
        double r3671723 = /* ERROR: no posit support in C */;
        double r3671724 = r3671721 + r3671723;
        double r3671725 = r3671724 / r3671719;
        return r3671725;
}

double f(double alpha, double beta, double i) {
        double r3671726 = alpha;
        double r3671727 = beta;
        double r3671728 = r3671726 + r3671727;
        double r3671729 = 2.0;
        double r3671730 = i;
        double r3671731 = r3671729 * r3671730;
        double r3671732 = r3671728 + r3671731;
        double r3671733 = r3671727 - r3671726;
        double r3671734 = r3671732 / r3671733;
        double r3671735 = r3671728 / r3671734;
        double r3671736 = 2.0;
        double r3671737 = r3671732 + r3671736;
        double r3671738 = r3671735 / r3671737;
        double r3671739 = 1.0;
        double r3671740 = r3671738 + r3671739;
        double r3671741 = r3671740 / r3671736;
        return r3671741;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 0.9

    \[\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\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.6

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

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

Reproduce

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