\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\begin{array}{l}
\mathbf{if}\;\alpha \le 1.244272110236542990854135182922651770205 \cdot 10^{212}:\\
\;\;\;\;\frac{\log \left(e^{\mathsf{fma}\left(\frac{\beta + \alpha}{2 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, 1\right)}\right)}{2}\\
\mathbf{elif}\;\alpha \le 1.675582865797448591833702134224369736841 \cdot 10^{277} \lor \neg \left(\alpha \le 8.077229676032386787136342497816904083827 \cdot 10^{288}\right):\\
\;\;\;\;\frac{\frac{2}{\alpha} + \left(\frac{8}{{\alpha}^{3}} - \frac{4}{\alpha \cdot \alpha}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(\log 2 - \log \alpha\right) + \left(\frac{1}{\beta} - \left(\frac{2}{\alpha} - \log \beta\right)\right)}}{2}\\
\end{array}double f(double alpha, double beta, double i) {
double r100425 = alpha;
double r100426 = beta;
double r100427 = r100425 + r100426;
double r100428 = r100426 - r100425;
double r100429 = r100427 * r100428;
double r100430 = 2.0;
double r100431 = i;
double r100432 = r100430 * r100431;
double r100433 = r100427 + r100432;
double r100434 = r100429 / r100433;
double r100435 = r100433 + r100430;
double r100436 = r100434 / r100435;
double r100437 = 1.0;
double r100438 = r100436 + r100437;
double r100439 = r100438 / r100430;
return r100439;
}
double f(double alpha, double beta, double i) {
double r100440 = alpha;
double r100441 = 1.244272110236543e+212;
bool r100442 = r100440 <= r100441;
double r100443 = beta;
double r100444 = r100443 + r100440;
double r100445 = 2.0;
double r100446 = i;
double r100447 = fma(r100446, r100445, r100444);
double r100448 = r100445 + r100447;
double r100449 = r100444 / r100448;
double r100450 = r100443 - r100440;
double r100451 = r100450 / r100447;
double r100452 = 1.0;
double r100453 = fma(r100449, r100451, r100452);
double r100454 = exp(r100453);
double r100455 = log(r100454);
double r100456 = r100455 / r100445;
double r100457 = 1.6755828657974486e+277;
bool r100458 = r100440 <= r100457;
double r100459 = 8.077229676032387e+288;
bool r100460 = r100440 <= r100459;
double r100461 = !r100460;
bool r100462 = r100458 || r100461;
double r100463 = r100445 / r100440;
double r100464 = 8.0;
double r100465 = 3.0;
double r100466 = pow(r100440, r100465);
double r100467 = r100464 / r100466;
double r100468 = 4.0;
double r100469 = r100440 * r100440;
double r100470 = r100468 / r100469;
double r100471 = r100467 - r100470;
double r100472 = r100463 + r100471;
double r100473 = r100472 / r100445;
double r100474 = 2.0;
double r100475 = log(r100474);
double r100476 = log(r100440);
double r100477 = r100475 - r100476;
double r100478 = r100452 / r100443;
double r100479 = log(r100443);
double r100480 = r100463 - r100479;
double r100481 = r100478 - r100480;
double r100482 = r100477 + r100481;
double r100483 = exp(r100482);
double r100484 = r100483 / r100445;
double r100485 = r100462 ? r100473 : r100484;
double r100486 = r100442 ? r100456 : r100485;
return r100486;
}



Bits error versus alpha



Bits error versus beta



Bits error versus i
if alpha < 1.244272110236543e+212Initial program 18.9
Simplified7.3
rmApplied fma-udef7.2
Simplified7.3
rmApplied add-log-exp7.3
Applied add-log-exp7.3
Applied sum-log7.3
Simplified7.3
if 1.244272110236543e+212 < alpha < 1.6755828657974486e+277 or 8.077229676032387e+288 < alpha Initial program 64.0
Simplified51.1
rmApplied fma-udef49.9
Simplified49.9
rmApplied add-exp-log49.9
Simplified49.9
Taylor expanded around inf 42.0
Simplified42.0
if 1.6755828657974486e+277 < alpha < 8.077229676032387e+288Initial program 64.0
Simplified52.8
rmApplied fma-udef51.9
Simplified51.8
rmApplied add-exp-log51.8
Simplified51.8
Taylor expanded around inf 51.3
Simplified51.3
Final simplification11.1
herbie shell --seed 2019194 +o rules:numerics
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:pre (and (> alpha -1.0) (> beta -1.0) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) 1.0) 2.0))