\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\frac{\sqrt[3]{{\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\sqrt{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}} \cdot \sqrt{\frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)\right)}^{3}}}{2}double f(double alpha, double beta, double i) {
double r71085 = alpha;
double r71086 = beta;
double r71087 = r71085 + r71086;
double r71088 = r71086 - r71085;
double r71089 = r71087 * r71088;
double r71090 = 2.0;
double r71091 = i;
double r71092 = r71090 * r71091;
double r71093 = r71087 + r71092;
double r71094 = r71089 / r71093;
double r71095 = r71093 + r71090;
double r71096 = r71094 / r71095;
double r71097 = 1.0;
double r71098 = r71096 + r71097;
double r71099 = r71098 / r71090;
return r71099;
}
double f(double alpha, double beta, double i) {
double r71100 = beta;
double r71101 = alpha;
double r71102 = r71100 - r71101;
double r71103 = 2.0;
double r71104 = i;
double r71105 = r71101 + r71100;
double r71106 = fma(r71103, r71104, r71105);
double r71107 = r71106 + r71103;
double r71108 = sqrt(r71107);
double r71109 = r71102 / r71108;
double r71110 = 1.0;
double r71111 = r71110 / r71107;
double r71112 = sqrt(r71111);
double r71113 = r71109 * r71112;
double r71114 = r71105 / r71106;
double r71115 = 1.0;
double r71116 = fma(r71113, r71114, r71115);
double r71117 = 3.0;
double r71118 = pow(r71116, r71117);
double r71119 = cbrt(r71118);
double r71120 = r71119 / r71103;
return r71120;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 24.0
Simplified12.6
rmApplied div-inv12.6
rmApplied add-sqr-sqrt12.7
Applied associate-*r*12.7
rmApplied sqrt-div12.6
Applied associate-*r/12.6
Simplified12.6
rmApplied add-cbrt-cube12.6
Simplified12.6
Final simplification12.6
herbie shell --seed 2019304 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:precision binary64
:pre (and (> alpha -1) (> beta -1) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2)) 1) 2))