\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 r3691744 = i;
double r3691745 = alpha;
double r3691746 = beta;
double r3691747 = r3691745 + r3691746;
double r3691748 = r3691747 + r3691744;
double r3691749 = r3691744 * r3691748;
double r3691750 = r3691746 * r3691745;
double r3691751 = r3691750 + r3691749;
double r3691752 = r3691749 * r3691751;
double r3691753 = 2.0;
double r3691754 = /* ERROR: no posit support in C */;
double r3691755 = r3691754 * r3691744;
double r3691756 = r3691747 + r3691755;
double r3691757 = r3691756 * r3691756;
double r3691758 = r3691752 / r3691757;
double r3691759 = 1.0;
double r3691760 = /* ERROR: no posit support in C */;
double r3691761 = r3691757 - r3691760;
double r3691762 = r3691758 / r3691761;
return r3691762;
}
double f(double alpha, double beta, double i) {
double r3691763 = i;
double r3691764 = alpha;
double r3691765 = beta;
double r3691766 = r3691764 + r3691765;
double r3691767 = 2.0;
double r3691768 = r3691767 * r3691763;
double r3691769 = r3691766 + r3691768;
double r3691770 = r3691766 + r3691763;
double r3691771 = r3691769 / r3691770;
double r3691772 = r3691763 / r3691771;
double r3691773 = 1.0;
double r3691774 = r3691769 + r3691773;
double r3691775 = r3691772 / r3691774;
double r3691776 = r3691765 * r3691764;
double r3691777 = r3691763 * r3691770;
double r3691778 = r3691776 + r3691777;
double r3691779 = r3691778 / r3691769;
double r3691780 = r3691769 - r3691773;
double r3691781 = r3691779 / r3691780;
double r3691782 = r3691775 * r3691781;
return r3691782;
}



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.5
Final simplification1.5
herbie shell --seed 2019133 +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))))