\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 r1958055 = i;
double r1958056 = alpha;
double r1958057 = beta;
double r1958058 = r1958056 + r1958057;
double r1958059 = r1958058 + r1958055;
double r1958060 = r1958055 * r1958059;
double r1958061 = r1958057 * r1958056;
double r1958062 = r1958061 + r1958060;
double r1958063 = r1958060 * r1958062;
double r1958064 = 2.0;
double r1958065 = /* ERROR: no posit support in C */;
double r1958066 = r1958065 * r1958055;
double r1958067 = r1958058 + r1958066;
double r1958068 = r1958067 * r1958067;
double r1958069 = r1958063 / r1958068;
double r1958070 = 1.0;
double r1958071 = /* ERROR: no posit support in C */;
double r1958072 = r1958068 - r1958071;
double r1958073 = r1958069 / r1958072;
return r1958073;
}
double f(double alpha, double beta, double i) {
double r1958074 = i;
double r1958075 = alpha;
double r1958076 = beta;
double r1958077 = r1958075 + r1958076;
double r1958078 = 2.0;
double r1958079 = r1958078 * r1958074;
double r1958080 = r1958077 + r1958079;
double r1958081 = 1.0;
double r1958082 = r1958080 + r1958081;
double r1958083 = r1958074 / r1958082;
double r1958084 = r1958077 + r1958074;
double r1958085 = r1958080 / r1958084;
double r1958086 = r1958083 / r1958085;
double r1958087 = r1958076 * r1958075;
double r1958088 = r1958074 * r1958084;
double r1958089 = r1958087 + r1958088;
double r1958090 = r1958089 / r1958080;
double r1958091 = r1958080 - r1958081;
double r1958092 = r1958090 / r1958091;
double r1958093 = r1958086 * r1958092;
return r1958093;
}



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
(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))))