\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 r5601822 = i;
double r5601823 = alpha;
double r5601824 = beta;
double r5601825 = r5601823 + r5601824;
double r5601826 = r5601825 + r5601822;
double r5601827 = r5601822 * r5601826;
double r5601828 = r5601824 * r5601823;
double r5601829 = r5601828 + r5601827;
double r5601830 = r5601827 * r5601829;
double r5601831 = 2.0;
double r5601832 = /* ERROR: no posit support in C */;
double r5601833 = r5601832 * r5601822;
double r5601834 = r5601825 + r5601833;
double r5601835 = r5601834 * r5601834;
double r5601836 = r5601830 / r5601835;
double r5601837 = 1.0;
double r5601838 = /* ERROR: no posit support in C */;
double r5601839 = r5601835 - r5601838;
double r5601840 = r5601836 / r5601839;
return r5601840;
}
double f(double alpha, double beta, double i) {
double r5601841 = i;
double r5601842 = alpha;
double r5601843 = beta;
double r5601844 = r5601842 + r5601843;
double r5601845 = 2.0;
double r5601846 = r5601845 * r5601841;
double r5601847 = r5601844 + r5601846;
double r5601848 = 1.0;
double r5601849 = r5601847 + r5601848;
double r5601850 = r5601844 + r5601841;
double r5601851 = r5601847 / r5601850;
double r5601852 = r5601849 * r5601851;
double r5601853 = r5601841 / r5601852;
double r5601854 = r5601843 * r5601842;
double r5601855 = r5601841 * r5601850;
double r5601856 = r5601854 + r5601855;
double r5601857 = r5601856 / r5601847;
double r5601858 = r5601847 - r5601848;
double r5601859 = r5601857 / r5601858;
double r5601860 = r5601853 * r5601859;
return r5601860;
}



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.8
Applied p16-times-frac1.7
rmApplied associate-/l*1.5
rmApplied associate-/l/1.5
Final simplification1.5
herbie shell --seed 2019130 +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))))