\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\beta \cdot \alpha\right)}\right)}{\left(1.0\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}{\left(1.0\right)}\right)}\frac{\frac{\beta + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{\alpha + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}double f(double alpha, double beta) {
double r1128748 = alpha;
double r1128749 = beta;
double r1128750 = r1128748 + r1128749;
double r1128751 = r1128749 * r1128748;
double r1128752 = r1128750 + r1128751;
double r1128753 = 1.0;
double r1128754 = /* ERROR: no posit support in C */;
double r1128755 = r1128752 + r1128754;
double r1128756 = 2.0;
double r1128757 = /* ERROR: no posit support in C */;
double r1128758 = 1.0;
double r1128759 = /* ERROR: no posit support in C */;
double r1128760 = r1128757 * r1128759;
double r1128761 = r1128750 + r1128760;
double r1128762 = r1128755 / r1128761;
double r1128763 = r1128762 / r1128761;
double r1128764 = r1128761 + r1128754;
double r1128765 = r1128763 / r1128764;
return r1128765;
}
double f(double alpha, double beta) {
double r1128766 = beta;
double r1128767 = 1.0;
double r1128768 = r1128766 + r1128767;
double r1128769 = alpha;
double r1128770 = r1128769 + r1128766;
double r1128771 = 2.0;
double r1128772 = 1.0;
double r1128773 = r1128771 * r1128772;
double r1128774 = r1128770 + r1128773;
double r1128775 = r1128768 / r1128774;
double r1128776 = r1128769 + r1128767;
double r1128777 = r1128776 / r1128774;
double r1128778 = r1128775 * r1128777;
double r1128779 = r1128774 + r1128767;
double r1128780 = r1128778 / r1128779;
return r1128780;
}



Bits error versus alpha



Bits error versus beta
Initial program 0.4
rmApplied associate-+l+0.4
rmApplied associate-/l/0.4
Simplified0.4
rmApplied p16-times-frac0.3
Final simplification0.3
herbie shell --seed 2019104 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)))
(/.p16 (/.p16 (/.p16 (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 beta alpha)) (real->posit16 1.0)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1))) (real->posit16 1.0))))