\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{\left(0.0 + \frac{\alpha + \beta}{\left(i \cdot 2 + \left(\beta + 2.0\right)\right) + \alpha} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + i \cdot 2}\right) + 1.0}{2.0}double f(double alpha, double beta, double i) {
double r5448195 = alpha;
double r5448196 = beta;
double r5448197 = r5448195 + r5448196;
double r5448198 = r5448196 - r5448195;
double r5448199 = r5448197 * r5448198;
double r5448200 = 2.0;
double r5448201 = /* ERROR: no posit support in C */;
double r5448202 = i;
double r5448203 = r5448201 * r5448202;
double r5448204 = r5448197 + r5448203;
double r5448205 = r5448199 / r5448204;
double r5448206 = 2.0;
double r5448207 = /* ERROR: no posit support in C */;
double r5448208 = r5448204 + r5448207;
double r5448209 = r5448205 / r5448208;
double r5448210 = 1.0;
double r5448211 = /* ERROR: no posit support in C */;
double r5448212 = r5448209 + r5448211;
double r5448213 = r5448212 / r5448207;
return r5448213;
}
double f(double alpha, double beta, double i) {
double r5448214 = 0.0;
double r5448215 = alpha;
double r5448216 = beta;
double r5448217 = r5448215 + r5448216;
double r5448218 = i;
double r5448219 = 2.0;
double r5448220 = r5448218 * r5448219;
double r5448221 = 2.0;
double r5448222 = r5448216 + r5448221;
double r5448223 = r5448220 + r5448222;
double r5448224 = r5448223 + r5448215;
double r5448225 = r5448217 / r5448224;
double r5448226 = r5448216 - r5448215;
double r5448227 = r5448217 + r5448220;
double r5448228 = r5448226 / r5448227;
double r5448229 = r5448225 * r5448228;
double r5448230 = r5448214 + r5448229;
double r5448231 = 1.0;
double r5448232 = r5448230 + r5448231;
double r5448233 = r5448232 / r5448221;
return r5448233;
}



Bits error versus alpha



Bits error versus beta



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