double f(double alpha, double beta) {
double r521622 = alpha;
double r521623 = beta;
double r521624 = r521622 + r521623;
double r521625 = r521623 * r521622;
double r521626 = r521624 + r521625;
double r521627 = 1.0;
double r521628 = r521626 + r521627;
double r521629 = 2.0;
double r521630 = 1.0;
double r521631 = r521629 * r521630;
double r521632 = r521624 + r521631;
double r521633 = r521628 / r521632;
double r521634 = r521633 / r521632;
double r521635 = r521632 + r521627;
double r521636 = r521634 / r521635;
return r521636;
}
double f(double alpha, double beta) {
double r521637 = alpha;
double r521638 = beta;
double r521639 = r521637 + r521638;
double r521640 = r521638 * r521637;
double r521641 = r521639 + r521640;
double r521642 = 1.0;
double r521643 = r521641 + r521642;
double r521644 = 2.0;
double r521645 = 1.0;
double r521646 = r521644 * r521645;
double r521647 = r521639 + r521646;
double r521648 = r521643 / r521647;
double r521649 = r521648 / r521647;
double r521650 = r521647 + r521642;
double r521651 = r521649 / r521650;
return r521651;
}
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}


Bits error versus alpha



Bits error versus beta
Initial program 0.4
Final simplification0.4
herbie shell --seed 2019102 +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))))