\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{i}{\left(\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 1.0\right) \cdot \frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) + i}} \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 r3180591 = i;
double r3180592 = alpha;
double r3180593 = beta;
double r3180594 = r3180592 + r3180593;
double r3180595 = r3180594 + r3180591;
double r3180596 = r3180591 * r3180595;
double r3180597 = r3180593 * r3180592;
double r3180598 = r3180597 + r3180596;
double r3180599 = r3180596 * r3180598;
double r3180600 = 2.0;
double r3180601 = /* ERROR: no posit support in C */;
double r3180602 = r3180601 * r3180591;
double r3180603 = r3180594 + r3180602;
double r3180604 = r3180603 * r3180603;
double r3180605 = r3180599 / r3180604;
double r3180606 = 1.0;
double r3180607 = /* ERROR: no posit support in C */;
double r3180608 = r3180604 - r3180607;
double r3180609 = r3180605 / r3180608;
return r3180609;
}
double f(double alpha, double beta, double i) {
double r3180610 = i;
double r3180611 = alpha;
double r3180612 = beta;
double r3180613 = r3180611 + r3180612;
double r3180614 = 2.0;
double r3180615 = r3180614 * r3180610;
double r3180616 = r3180613 + r3180615;
double r3180617 = 1.0;
double r3180618 = r3180616 + r3180617;
double r3180619 = r3180613 + r3180610;
double r3180620 = r3180616 / r3180619;
double r3180621 = r3180618 * r3180620;
double r3180622 = r3180610 / r3180621;
double r3180623 = r3180612 * r3180611;
double r3180624 = r3180610 * r3180619;
double r3180625 = r3180623 + r3180624;
double r3180626 = r3180625 / r3180616;
double r3180627 = r3180616 - r3180617;
double r3180628 = r3180626 / r3180627;
double r3180629 = r3180622 * r3180628;
return r3180629;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 3.3
rmApplied difference-of-sqr-13.3
Applied p16-times-frac1.7
Applied p16-times-frac1.6
rmApplied associate-/l*1.4
rmApplied associate-/l/1.5
Final simplification1.5
herbie shell --seed 2019135 +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))))