\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;
}



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
Final simplification1.5
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))))