double f(double alpha, double beta) {
double r2203971 = beta;
double r2203972 = alpha;
double r2203973 = r2203971 - r2203972;
double r2203974 = r2203972 + r2203971;
double r2203975 = 2.0;
double r2203976 = r2203974 + r2203975;
double r2203977 = r2203973 / r2203976;
double r2203978 = 1.0;
double r2203979 = r2203977 + r2203978;
double r2203980 = r2203979 / r2203975;
return r2203980;
}
double f(double alpha, double beta) {
double r2203981 = beta;
double r2203982 = alpha;
double r2203983 = r2203981 - r2203982;
double r2203984 = 2.0;
double r2203985 = r2203981 + r2203984;
double r2203986 = r2203982 + r2203985;
double r2203987 = r2203983 / r2203986;
double r2203988 = 1.0;
double r2203989 = r2203987 + r2203988;
double r2203990 = r2203989 / r2203984;
return r2203990;
}
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\frac{\frac{\beta - \alpha}{\alpha + \left(\beta + 2.0\right)} + 1.0}{2.0}


Bits error versus alpha



Bits error versus beta
Initial program 0.7
rmApplied associate-+l+0.7
Final simplification0.7
herbie shell --seed 2019102 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/1"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)))
(/.p16 (+.p16 (/.p16 (-.p16 beta alpha) (+.p16 (+.p16 alpha beta) (real->posit16 2.0))) (real->posit16 1.0)) (real->posit16 2.0)))