\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}{\alpha + \left(i \cdot 2 + \beta\right)} \cdot \frac{1.0}{\frac{\left(i \cdot 2 + \alpha\right) + \left(2.0 + \beta\right)}{\beta + \alpha}} + 1.0}{2.0}double f(double alpha, double beta, double i) {
double r3721262 = alpha;
double r3721263 = beta;
double r3721264 = r3721262 + r3721263;
double r3721265 = r3721263 - r3721262;
double r3721266 = r3721264 * r3721265;
double r3721267 = 2.0;
double r3721268 = /* ERROR: no posit support in C */;
double r3721269 = i;
double r3721270 = r3721268 * r3721269;
double r3721271 = r3721264 + r3721270;
double r3721272 = r3721266 / r3721271;
double r3721273 = 2.0;
double r3721274 = /* ERROR: no posit support in C */;
double r3721275 = r3721271 + r3721274;
double r3721276 = r3721272 / r3721275;
double r3721277 = 1.0;
double r3721278 = /* ERROR: no posit support in C */;
double r3721279 = r3721276 + r3721278;
double r3721280 = r3721279 / r3721274;
return r3721280;
}
double f(double alpha, double beta, double i) {
double r3721281 = beta;
double r3721282 = alpha;
double r3721283 = r3721281 - r3721282;
double r3721284 = i;
double r3721285 = 2.0;
double r3721286 = r3721284 * r3721285;
double r3721287 = r3721286 + r3721281;
double r3721288 = r3721282 + r3721287;
double r3721289 = r3721283 / r3721288;
double r3721290 = 1.0;
double r3721291 = r3721286 + r3721282;
double r3721292 = 2.0;
double r3721293 = r3721292 + r3721281;
double r3721294 = r3721291 + r3721293;
double r3721295 = r3721281 + r3721282;
double r3721296 = r3721294 / r3721295;
double r3721297 = r3721290 / r3721296;
double r3721298 = r3721289 * r3721297;
double r3721299 = r3721298 + r3721290;
double r3721300 = r3721299 / r3721292;
return r3721300;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 0.9
Simplified1.0
rmApplied p16-times-frac0.6
rmApplied p16-*-un-lft-identity0.6
Applied associate-/l*0.6
rmApplied *p16-rgt-identity-expand0.6
Applied associate-/l*0.6
Simplified0.6
rmApplied associate-+r+0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019158
(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)))