x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\begin{array}{l}
\mathbf{if}\;y \le -2.303180600045708903422791991033591330051 \lor \neg \left(y \le 1.079544497145852556700355448021813525034 \cdot 10^{106}\right):\\
\;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{{1}^{a}}{e^{\frac{1}{2} \cdot \frac{a \cdot {z}^{2}}{{1}^{2}} + \left(a \cdot b + \left(t \cdot y + 1 \cdot \left(a \cdot z\right)\right)\right)}} \cdot {z}^{y}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r108488 = x;
double r108489 = y;
double r108490 = z;
double r108491 = log(r108490);
double r108492 = t;
double r108493 = r108491 - r108492;
double r108494 = r108489 * r108493;
double r108495 = a;
double r108496 = 1.0;
double r108497 = r108496 - r108490;
double r108498 = log(r108497);
double r108499 = b;
double r108500 = r108498 - r108499;
double r108501 = r108495 * r108500;
double r108502 = r108494 + r108501;
double r108503 = exp(r108502);
double r108504 = r108488 * r108503;
return r108504;
}
double f(double x, double y, double z, double t, double a, double b) {
double r108505 = y;
double r108506 = -2.303180600045709;
bool r108507 = r108505 <= r108506;
double r108508 = 1.0795444971458526e+106;
bool r108509 = r108505 <= r108508;
double r108510 = !r108509;
bool r108511 = r108507 || r108510;
double r108512 = x;
double r108513 = a;
double r108514 = 1.0;
double r108515 = log(r108514);
double r108516 = r108513 * r108515;
double r108517 = z;
double r108518 = log(r108517);
double r108519 = t;
double r108520 = r108518 - r108519;
double r108521 = r108520 * r108505;
double r108522 = r108516 + r108521;
double r108523 = exp(r108522);
double r108524 = r108512 * r108523;
double r108525 = pow(r108514, r108513);
double r108526 = 0.5;
double r108527 = 2.0;
double r108528 = pow(r108517, r108527);
double r108529 = r108513 * r108528;
double r108530 = pow(r108514, r108527);
double r108531 = r108529 / r108530;
double r108532 = r108526 * r108531;
double r108533 = b;
double r108534 = r108513 * r108533;
double r108535 = r108519 * r108505;
double r108536 = r108513 * r108517;
double r108537 = r108514 * r108536;
double r108538 = r108535 + r108537;
double r108539 = r108534 + r108538;
double r108540 = r108532 + r108539;
double r108541 = exp(r108540);
double r108542 = r108525 / r108541;
double r108543 = pow(r108517, r108505);
double r108544 = r108542 * r108543;
double r108545 = r108512 * r108544;
double r108546 = r108511 ? r108524 : r108545;
return r108546;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a



Bits error versus b
Results
if y < -2.303180600045709 or 1.0795444971458526e+106 < y Initial program 2.0
Taylor expanded around 0 8.8
Simplified8.6
if -2.303180600045709 < y < 1.0795444971458526e+106Initial program 2.1
Taylor expanded around 0 0.1
Taylor expanded around inf 0.1
Simplified0.7
Final simplification3.3
herbie shell --seed 2019303
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
:precision binary64
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1 z)) b))))))