\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}double f(double alpha, double beta, double i) {
double r3671707 = alpha;
double r3671708 = beta;
double r3671709 = r3671707 + r3671708;
double r3671710 = r3671708 - r3671707;
double r3671711 = r3671709 * r3671710;
double r3671712 = 2.0;
double r3671713 = /* ERROR: no posit support in C */;
double r3671714 = i;
double r3671715 = r3671713 * r3671714;
double r3671716 = r3671709 + r3671715;
double r3671717 = r3671711 / r3671716;
double r3671718 = 2.0;
double r3671719 = /* ERROR: no posit support in C */;
double r3671720 = r3671716 + r3671719;
double r3671721 = r3671717 / r3671720;
double r3671722 = 1.0;
double r3671723 = /* ERROR: no posit support in C */;
double r3671724 = r3671721 + r3671723;
double r3671725 = r3671724 / r3671719;
return r3671725;
}
double f(double alpha, double beta, double i) {
double r3671726 = alpha;
double r3671727 = beta;
double r3671728 = r3671726 + r3671727;
double r3671729 = 2.0;
double r3671730 = i;
double r3671731 = r3671729 * r3671730;
double r3671732 = r3671728 + r3671731;
double r3671733 = r3671727 - r3671726;
double r3671734 = r3671732 / r3671733;
double r3671735 = r3671728 / r3671734;
double r3671736 = 2.0;
double r3671737 = r3671732 + r3671736;
double r3671738 = r3671735 / r3671737;
double r3671739 = 1.0;
double r3671740 = r3671738 + r3671739;
double r3671741 = r3671740 / r3671736;
return r3671741;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 0.9
rmApplied associate-/l*0.6
Final simplification0.6
herbie shell --seed 2019130 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)) (>.p16 i (real->posit16 0)))
(/.p16 (+.p16 (/.p16 (/.p16 (*.p16 (+.p16 alpha beta) (-.p16 beta alpha)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)) (real->posit16 2.0))) (real->posit16 1.0)) (real->posit16 2.0)))