Average Error: 3.3 → 1.5
Time: 1.0m
Precision: 64
\[\alpha \gt \left(-1\right) \land \beta \gt \left(-1\right) \land i \gt \left(1\right)\]
\[\frac{\left(\frac{\left(\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right) \cdot \left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\left(\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right) - \left(1.0\right)\right)}\]
\[\frac{\frac{i}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) + i}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 1.0} \cdot \frac{\frac{\beta \cdot \alpha + i \cdot \left(\left(\alpha + \beta\right) + i\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) - 1.0}\]
\frac{\left(\frac{\left(\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right) \cdot \left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\left(\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right) - \left(1.0\right)\right)}
\frac{\frac{i}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) + i}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 1.0} \cdot \frac{\frac{\beta \cdot \alpha + i \cdot \left(\left(\alpha + \beta\right) + i\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) - 1.0}
double f(double alpha, double beta, double i) {
        double r3045741 = i;
        double r3045742 = alpha;
        double r3045743 = beta;
        double r3045744 = r3045742 + r3045743;
        double r3045745 = r3045744 + r3045741;
        double r3045746 = r3045741 * r3045745;
        double r3045747 = r3045743 * r3045742;
        double r3045748 = r3045747 + r3045746;
        double r3045749 = r3045746 * r3045748;
        double r3045750 = 2.0;
        double r3045751 = /* ERROR: no posit support in C */;
        double r3045752 = r3045751 * r3045741;
        double r3045753 = r3045744 + r3045752;
        double r3045754 = r3045753 * r3045753;
        double r3045755 = r3045749 / r3045754;
        double r3045756 = 1.0;
        double r3045757 = /* ERROR: no posit support in C */;
        double r3045758 = r3045754 - r3045757;
        double r3045759 = r3045755 / r3045758;
        return r3045759;
}

double f(double alpha, double beta, double i) {
        double r3045760 = i;
        double r3045761 = alpha;
        double r3045762 = beta;
        double r3045763 = r3045761 + r3045762;
        double r3045764 = 2.0;
        double r3045765 = r3045764 * r3045760;
        double r3045766 = r3045763 + r3045765;
        double r3045767 = r3045763 + r3045760;
        double r3045768 = r3045766 / r3045767;
        double r3045769 = r3045760 / r3045768;
        double r3045770 = 1.0;
        double r3045771 = r3045766 + r3045770;
        double r3045772 = r3045769 / r3045771;
        double r3045773 = r3045762 * r3045761;
        double r3045774 = r3045760 * r3045767;
        double r3045775 = r3045773 + r3045774;
        double r3045776 = r3045775 / r3045766;
        double r3045777 = r3045766 - r3045770;
        double r3045778 = r3045776 / r3045777;
        double r3045779 = r3045772 * r3045778;
        return r3045779;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 3.3

    \[\frac{\left(\frac{\left(\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right) \cdot \left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\left(\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right) - \left(1.0\right)\right)}\]
  2. Using strategy rm
  3. Applied difference-of-sqr-13.3

    \[\leadsto \frac{\left(\frac{\left(\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right) \cdot \left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\color{blue}{\left(\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(1.0\right)}\right) \cdot \left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) - \left(1.0\right)\right)\right)}}\]
  4. Applied p16-times-frac1.8

    \[\leadsto \frac{\color{blue}{\left(\left(\frac{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right) \cdot \left(\frac{\left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)\right)}}{\left(\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(1.0\right)}\right) \cdot \left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) - \left(1.0\right)\right)\right)}\]
  5. Applied p16-times-frac1.7

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

    \[\leadsto \left(\frac{\color{blue}{\left(\frac{i}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)}\right)}\right)}}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(1.0\right)}\right)}\right) \cdot \left(\frac{\left(\frac{\left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) - \left(1.0\right)\right)}\right)\]
  8. Final simplification1.5

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

Reproduce

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