double f(double alpha, double beta) {
double r775851 = alpha;
double r775852 = beta;
double r775853 = r775851 + r775852;
double r775854 = r775852 * r775851;
double r775855 = r775853 + r775854;
double r775856 = 1.0;
double r775857 = r775855 + r775856;
double r775858 = 2.0;
double r775859 = 1.0;
double r775860 = r775858 * r775859;
double r775861 = r775853 + r775860;
double r775862 = r775857 / r775861;
double r775863 = r775862 / r775861;
double r775864 = r775861 + r775856;
double r775865 = r775863 / r775864;
return r775865;
}
double f(double alpha, double beta) {
double r775866 = alpha;
double r775867 = beta;
double r775868 = r775866 + r775867;
double r775869 = r775867 * r775866;
double r775870 = r775868 + r775869;
double r775871 = 1.0;
double r775872 = r775870 + r775871;
double r775873 = 2.0;
double r775874 = 1.0;
double r775875 = r775873 * r775874;
double r775876 = r775868 + r775875;
double r775877 = r775872 / r775876;
double r775878 = r775876 + r775871;
double r775879 = r775877 / r775878;
double r775880 = r775879 / r775876;
return r775880;
}
\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(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}}{\left(\alpha + \beta\right) + 2 \cdot 1}


Bits error versus alpha



Bits error versus beta
Initial program 0.4
rmApplied associate-/l/0.4
rmApplied associate-/r*0.4
Final simplification0.4
herbie shell --seed 2019101 +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))))