double f(double alpha, double beta, double i) {
double r2027212 = alpha;
double r2027213 = beta;
double r2027214 = r2027212 + r2027213;
double r2027215 = r2027213 - r2027212;
double r2027216 = r2027214 * r2027215;
double r2027217 = 2.0;
double r2027218 = i;
double r2027219 = r2027217 * r2027218;
double r2027220 = r2027214 + r2027219;
double r2027221 = r2027216 / r2027220;
double r2027222 = 2.0;
double r2027223 = r2027220 + r2027222;
double r2027224 = r2027221 / r2027223;
double r2027225 = 1.0;
double r2027226 = r2027224 + r2027225;
double r2027227 = r2027226 / r2027222;
return r2027227;
}
double f(double alpha, double beta, double i) {
double r2027228 = beta;
double r2027229 = alpha;
double r2027230 = r2027228 - r2027229;
double r2027231 = r2027228 + r2027229;
double r2027232 = 2.0;
double r2027233 = r2027229 + r2027232;
double r2027234 = r2027228 + r2027233;
double r2027235 = 2.0;
double r2027236 = i;
double r2027237 = r2027235 * r2027236;
double r2027238 = r2027234 + r2027237;
double r2027239 = r2027231 / r2027238;
double r2027240 = r2027230 * r2027239;
double r2027241 = r2027237 + r2027231;
double r2027242 = r2027240 / r2027241;
double r2027243 = 1.0;
double r2027244 = r2027242 + r2027243;
double r2027245 = r2027244 / r2027232;
return r2027245;
}
\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{\frac{\left(\beta - \alpha\right) \cdot \frac{\beta + \alpha}{\left(\beta + \left(\alpha + 2.0\right)\right) + 2 \cdot i}}{2 \cdot i + \left(\beta + \alpha\right)} + 1.0}{2.0}


Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 0.9
Simplified1.0
rmApplied p16-times-frac0.6
rmApplied associate-*l/0.6
Final simplification0.6
herbie shell --seed 2019101
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)) (>.p16 i (real->posit16 0)))
(/.p16 (+.p16 (/.p16 (/.p16 (*.p16 (+.p16 alpha beta) (-.p16 beta alpha)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)) (real->posit16 2.0))) (real->posit16 1.0)) (real->posit16 2.0)))