\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.0} + 1.0}{2.0}\frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}, \frac{\alpha + \beta}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}}, 1.0\right)\right)\right)}\right)}{2.0}double f(double alpha, double beta, double i) {
double r4442118 = alpha;
double r4442119 = beta;
double r4442120 = r4442118 + r4442119;
double r4442121 = r4442119 - r4442118;
double r4442122 = r4442120 * r4442121;
double r4442123 = 2.0;
double r4442124 = i;
double r4442125 = r4442123 * r4442124;
double r4442126 = r4442120 + r4442125;
double r4442127 = r4442122 / r4442126;
double r4442128 = 2.0;
double r4442129 = r4442126 + r4442128;
double r4442130 = r4442127 / r4442129;
double r4442131 = 1.0;
double r4442132 = r4442130 + r4442131;
double r4442133 = r4442132 / r4442128;
return r4442133;
}
double f(double alpha, double beta, double i) {
double r4442134 = beta;
double r4442135 = alpha;
double r4442136 = r4442134 - r4442135;
double r4442137 = i;
double r4442138 = 2.0;
double r4442139 = r4442135 + r4442134;
double r4442140 = fma(r4442137, r4442138, r4442139);
double r4442141 = r4442136 / r4442140;
double r4442142 = 2.0;
double r4442143 = r4442140 + r4442142;
double r4442144 = sqrt(r4442143);
double r4442145 = r4442139 / r4442144;
double r4442146 = 1.0;
double r4442147 = r4442146 / r4442144;
double r4442148 = r4442145 * r4442147;
double r4442149 = 1.0;
double r4442150 = fma(r4442141, r4442148, r4442149);
double r4442151 = expm1(r4442150);
double r4442152 = log(r4442151);
double r4442153 = exp(r4442152);
double r4442154 = log1p(r4442153);
double r4442155 = r4442154 / r4442142;
return r4442155;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 23.1
Simplified19.2
rmApplied log1p-expm1-u19.2
Simplified12.0
rmApplied add-exp-log12.0
rmApplied add-sqr-sqrt12.1
Applied *-un-lft-identity12.1
Applied times-frac12.1
Final simplification12.1
herbie shell --seed 2019158 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (> alpha -1) (> beta -1) (> i 0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2.0)) 1.0) 2.0))