\frac{\left(\frac{\left(\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right) \cdot \left(\frac{\left(\beta \cdot \alpha\right)}{\left(i \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{i}\right)\right)}\right)\right)}{\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\left(\left(\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right) \cdot \left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right) - \left(1.0\right)\right)}\frac{\frac{i}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 1.0}}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) + i}} \cdot \frac{\frac{\beta \cdot \alpha + i \cdot \left(\left(\alpha + \beta\right) + i\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) - 1.0}double f(double alpha, double beta, double i) {
double r5128050 = i;
double r5128051 = alpha;
double r5128052 = beta;
double r5128053 = r5128051 + r5128052;
double r5128054 = r5128053 + r5128050;
double r5128055 = r5128050 * r5128054;
double r5128056 = r5128052 * r5128051;
double r5128057 = r5128056 + r5128055;
double r5128058 = r5128055 * r5128057;
double r5128059 = 2.0;
double r5128060 = /* ERROR: no posit support in C */;
double r5128061 = r5128060 * r5128050;
double r5128062 = r5128053 + r5128061;
double r5128063 = r5128062 * r5128062;
double r5128064 = r5128058 / r5128063;
double r5128065 = 1.0;
double r5128066 = /* ERROR: no posit support in C */;
double r5128067 = r5128063 - r5128066;
double r5128068 = r5128064 / r5128067;
return r5128068;
}
double f(double alpha, double beta, double i) {
double r5128069 = i;
double r5128070 = alpha;
double r5128071 = beta;
double r5128072 = r5128070 + r5128071;
double r5128073 = 2.0;
double r5128074 = r5128073 * r5128069;
double r5128075 = r5128072 + r5128074;
double r5128076 = 1.0;
double r5128077 = r5128075 + r5128076;
double r5128078 = r5128069 / r5128077;
double r5128079 = r5128072 + r5128069;
double r5128080 = r5128075 / r5128079;
double r5128081 = r5128078 / r5128080;
double r5128082 = r5128071 * r5128070;
double r5128083 = r5128069 * r5128079;
double r5128084 = r5128082 + r5128083;
double r5128085 = r5128084 / r5128075;
double r5128086 = r5128075 - r5128076;
double r5128087 = r5128085 / r5128086;
double r5128088 = r5128081 * r5128087;
return r5128088;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
Initial program 3.3
rmApplied difference-of-sqr-13.3
Applied p16-times-frac1.7
Applied p16-times-frac1.7
rmApplied associate-/l*1.5
rmApplied associate-/l/1.5
rmApplied associate-/r*1.5
Final simplification1.5
herbie shell --seed 2019128 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/4"
:pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)) (>.p16 i (real->posit16 1)))
(/.p16 (/.p16 (*.p16 (*.p16 i (+.p16 (+.p16 alpha beta) i)) (+.p16 (*.p16 beta alpha) (*.p16 i (+.p16 (+.p16 alpha beta) i)))) (*.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)))) (-.p16 (*.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i))) (real->posit16 1.0))))