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 \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le -0.003354970188924930908636046211768189095892:\\
\;\;\;\;\sqrt{x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}} \cdot \sqrt{x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot e^{-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r88416 = x;
double r88417 = y;
double r88418 = z;
double r88419 = log(r88418);
double r88420 = t;
double r88421 = r88419 - r88420;
double r88422 = r88417 * r88421;
double r88423 = a;
double r88424 = 1.0;
double r88425 = r88424 - r88418;
double r88426 = log(r88425);
double r88427 = b;
double r88428 = r88426 - r88427;
double r88429 = r88423 * r88428;
double r88430 = r88422 + r88429;
double r88431 = exp(r88430);
double r88432 = r88416 * r88431;
return r88432;
}
double f(double x, double y, double z, double t, double a, double b) {
double r88433 = y;
double r88434 = z;
double r88435 = log(r88434);
double r88436 = t;
double r88437 = r88435 - r88436;
double r88438 = r88433 * r88437;
double r88439 = a;
double r88440 = 1.0;
double r88441 = r88440 - r88434;
double r88442 = log(r88441);
double r88443 = b;
double r88444 = r88442 - r88443;
double r88445 = r88439 * r88444;
double r88446 = r88438 + r88445;
double r88447 = -0.003354970188924931;
bool r88448 = r88446 <= r88447;
double r88449 = x;
double r88450 = exp(r88446);
double r88451 = r88449 * r88450;
double r88452 = sqrt(r88451);
double r88453 = r88452 * r88452;
double r88454 = r88439 * r88443;
double r88455 = r88439 * r88434;
double r88456 = r88440 * r88455;
double r88457 = 0.5;
double r88458 = 2.0;
double r88459 = pow(r88434, r88458);
double r88460 = r88439 * r88459;
double r88461 = r88457 * r88460;
double r88462 = r88456 + r88461;
double r88463 = r88454 + r88462;
double r88464 = -r88463;
double r88465 = exp(r88464);
double r88466 = r88449 * r88465;
double r88467 = r88448 ? r88453 : r88466;
return r88467;
}



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 (- (log z) t)) (* a (- (log (- 1.0 z)) b))) < -0.003354970188924931Initial program 0.1
rmApplied add-sqr-sqrt0.3
if -0.003354970188924931 < (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))) Initial program 6.4
Taylor expanded around 0 1.3
Taylor expanded around inf 2.5
Final simplification1.0
herbie shell --seed 2019297
(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))))))