\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\beta \cdot \alpha\right)}\right)}{\left(1.0\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot \left(1\right)\right)}\right)}{\left(1.0\right)}\right)}\frac{\frac{\frac{\left(\mathsf{qma}\left(\left(\mathsf{qma}\left(\left(\left(\alpha + \beta\right)\right), \beta, \alpha\right)\right), 1.0, 1.0\right)\right)}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}double f(double alpha, double beta) {
double r1798388 = alpha;
double r1798389 = beta;
double r1798390 = r1798388 + r1798389;
double r1798391 = r1798389 * r1798388;
double r1798392 = r1798390 + r1798391;
double r1798393 = 1.0;
double r1798394 = /* ERROR: no posit support in C */;
double r1798395 = r1798392 + r1798394;
double r1798396 = 2.0;
double r1798397 = /* ERROR: no posit support in C */;
double r1798398 = 1.0;
double r1798399 = /* ERROR: no posit support in C */;
double r1798400 = r1798397 * r1798399;
double r1798401 = r1798390 + r1798400;
double r1798402 = r1798395 / r1798401;
double r1798403 = r1798402 / r1798401;
double r1798404 = r1798401 + r1798394;
double r1798405 = r1798403 / r1798404;
return r1798405;
}
double f(double alpha, double beta) {
double r1798406 = alpha;
double r1798407 = beta;
double r1798408 = r1798406 + r1798407;
double r1798409 = /*Error: no posit support in C */;
double r1798410 = /*Error: no posit support in C */;
double r1798411 = 1.0;
double r1798412 = /*Error: no posit support in C */;
double r1798413 = /*Error: no posit support in C */;
double r1798414 = 2.0;
double r1798415 = 1.0;
double r1798416 = r1798414 * r1798415;
double r1798417 = r1798408 + r1798416;
double r1798418 = r1798413 / r1798417;
double r1798419 = r1798418 / r1798417;
double r1798420 = r1798417 + r1798411;
double r1798421 = r1798419 / r1798420;
return r1798421;
}



Bits error versus alpha



Bits error versus beta
Initial program 0.4
rmApplied *p16-lft-identity-expand0.4
Applied introduce-quire0.4
Applied insert-quire-fdp-add0.4
Applied insert-quire-fdp-add0.3
Final simplification0.3
herbie shell --seed 2019153 +o rules:numerics
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)))
(/.p16 (/.p16 (/.p16 (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 beta alpha)) (real->posit16 1.0)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1)))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) (real->posit16 1))) (real->posit16 1.0))))