\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\frac{\frac{\frac{\sqrt{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}}{\sqrt{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}}{\sqrt{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right) + 1}{\frac{\sqrt{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}}double f(double alpha, double beta) {
double r162492 = alpha;
double r162493 = beta;
double r162494 = r162492 + r162493;
double r162495 = r162493 * r162492;
double r162496 = r162494 + r162495;
double r162497 = 1.0;
double r162498 = r162496 + r162497;
double r162499 = 2.0;
double r162500 = r162499 * r162497;
double r162501 = r162494 + r162500;
double r162502 = r162498 / r162501;
double r162503 = r162502 / r162501;
double r162504 = r162501 + r162497;
double r162505 = r162503 / r162504;
return r162505;
}
double f(double alpha, double beta) {
double r162506 = 1.0;
double r162507 = alpha;
double r162508 = beta;
double r162509 = r162507 + r162508;
double r162510 = fma(r162507, r162508, r162509);
double r162511 = r162506 + r162510;
double r162512 = sqrt(r162511);
double r162513 = 2.0;
double r162514 = fma(r162506, r162513, r162509);
double r162515 = sqrt(r162514);
double r162516 = r162512 / r162515;
double r162517 = r162516 / r162515;
double r162518 = r162514 + r162506;
double r162519 = r162512 / r162514;
double r162520 = r162518 / r162519;
double r162521 = r162517 / r162520;
return r162521;
}



Bits error versus alpha



Bits error versus beta
Initial program 3.9
Simplified3.9
rmApplied add-sqr-sqrt4.4
Applied add-sqr-sqrt4.8
Applied add-sqr-sqrt4.7
Applied times-frac4.7
Applied times-frac4.5
Applied associate-/l*4.5
Simplified4.0
Final simplification4.0
herbie shell --seed 2019303 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:precision binary64
:pre (and (> alpha -1) (> beta -1))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1)))