\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}\begin{array}{l}
\mathbf{if}\;\frac{\frac{\frac{1.0 + \left(\alpha \cdot \beta + \left(\beta + \alpha\right)\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0} \le 0.08333374198991911:\\
\;\;\;\;\frac{\frac{\frac{1.0 + \left(\alpha \cdot \beta + \left(\beta + \alpha\right)\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \beta + \alpha, 0.5\right)}{\mathsf{fma}\left(\left(\alpha + 2\right) + \beta, \left(\alpha + 2\right) + \beta, \left(\left(\alpha + 2\right) + \beta\right) \cdot 1.0\right)}\\
\end{array}double f(double alpha, double beta) {
double r1605731 = alpha;
double r1605732 = beta;
double r1605733 = r1605731 + r1605732;
double r1605734 = r1605732 * r1605731;
double r1605735 = r1605733 + r1605734;
double r1605736 = 1.0;
double r1605737 = r1605735 + r1605736;
double r1605738 = 2.0;
double r1605739 = 1.0;
double r1605740 = r1605738 * r1605739;
double r1605741 = r1605733 + r1605740;
double r1605742 = r1605737 / r1605741;
double r1605743 = r1605742 / r1605741;
double r1605744 = r1605741 + r1605736;
double r1605745 = r1605743 / r1605744;
return r1605745;
}
double f(double alpha, double beta) {
double r1605746 = 1.0;
double r1605747 = alpha;
double r1605748 = beta;
double r1605749 = r1605747 * r1605748;
double r1605750 = r1605748 + r1605747;
double r1605751 = r1605749 + r1605750;
double r1605752 = r1605746 + r1605751;
double r1605753 = 2.0;
double r1605754 = r1605753 + r1605750;
double r1605755 = r1605752 / r1605754;
double r1605756 = r1605755 / r1605754;
double r1605757 = r1605754 + r1605746;
double r1605758 = r1605756 / r1605757;
double r1605759 = 0.08333374198991911;
bool r1605760 = r1605758 <= r1605759;
double r1605761 = 0.25;
double r1605762 = 0.5;
double r1605763 = fma(r1605761, r1605750, r1605762);
double r1605764 = r1605747 + r1605753;
double r1605765 = r1605764 + r1605748;
double r1605766 = r1605765 * r1605746;
double r1605767 = fma(r1605765, r1605765, r1605766);
double r1605768 = r1605763 / r1605767;
double r1605769 = r1605760 ? r1605758 : r1605768;
return r1605769;
}



Bits error versus alpha



Bits error versus beta
if (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1.0)) < 0.08333374198991911Initial program 0.1
if 0.08333374198991911 < (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1.0)) Initial program 56.8
Simplified56.8
Taylor expanded around 0 22.2
Simplified22.2
Final simplification1.5
herbie shell --seed 2019151 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:pre (and (> alpha -1) (> beta -1))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1.0)))