\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\frac{\frac{\beta - \alpha}{2 \cdot i + \left(\beta + \alpha\right)} \cdot \frac{\beta + \alpha}{\left(2.0 + \left(\beta + \alpha\right)\right) + 2 \cdot i} + 1.0}{2.0}double f(double alpha, double beta, double i) {
double r5209300 = alpha;
double r5209301 = beta;
double r5209302 = r5209300 + r5209301;
double r5209303 = r5209301 - r5209300;
double r5209304 = r5209302 * r5209303;
double r5209305 = 2.0;
double r5209306 = /* ERROR: no posit support in C */;
double r5209307 = i;
double r5209308 = r5209306 * r5209307;
double r5209309 = r5209302 + r5209308;
double r5209310 = r5209304 / r5209309;
double r5209311 = 2.0;
double r5209312 = /* ERROR: no posit support in C */;
double r5209313 = r5209309 + r5209312;
double r5209314 = r5209310 / r5209313;
double r5209315 = 1.0;
double r5209316 = /* ERROR: no posit support in C */;
double r5209317 = r5209314 + r5209316;
double r5209318 = r5209317 / r5209312;
return r5209318;
}
double f(double alpha, double beta, double i) {
double r5209319 = beta;
double r5209320 = alpha;
double r5209321 = r5209319 - r5209320;
double r5209322 = 2.0;
double r5209323 = i;
double r5209324 = r5209322 * r5209323;
double r5209325 = r5209319 + r5209320;
double r5209326 = r5209324 + r5209325;
double r5209327 = r5209321 / r5209326;
double r5209328 = 2.0;
double r5209329 = r5209328 + r5209325;
double r5209330 = r5209329 + r5209324;
double r5209331 = r5209325 / r5209330;
double r5209332 = r5209327 * r5209331;
double r5209333 = 1.0;
double r5209334 = r5209332 + r5209333;
double r5209335 = r5209334 / r5209328;
return r5209335;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 1.0
Simplified1.0
rmApplied p16-times-frac0.6
Final simplification0.6
herbie shell --seed 2019133 +o rules:numerics
(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)))