double f(double alpha, double beta) {
double r1204504 = alpha;
double r1204505 = beta;
double r1204506 = r1204504 + r1204505;
double r1204507 = r1204505 * r1204504;
double r1204508 = r1204506 + r1204507;
double r1204509 = 1.0;
double r1204510 = r1204508 + r1204509;
double r1204511 = 2.0;
double r1204512 = 1.0;
double r1204513 = r1204511 * r1204512;
double r1204514 = r1204506 + r1204513;
double r1204515 = r1204510 / r1204514;
double r1204516 = r1204515 / r1204514;
double r1204517 = r1204514 + r1204509;
double r1204518 = r1204516 / r1204517;
return r1204518;
}
double f(double alpha, double beta) {
double r1204519 = alpha;
double r1204520 = beta;
double r1204521 = r1204519 + r1204520;
double r1204522 = r1204520 * r1204519;
double r1204523 = r1204521 + r1204522;
double r1204524 = 1.0;
double r1204525 = r1204523 + r1204524;
double r1204526 = 2.0;
double r1204527 = 1.0;
double r1204528 = r1204526 * r1204527;
double r1204529 = r1204521 + r1204528;
double r1204530 = r1204525 / r1204529;
double r1204531 = r1204529 + r1204524;
double r1204532 = r1204530 / r1204531;
double r1204533 = r1204532 / r1204529;
return r1204533;
}
\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
(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))))