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 -7.4245623139035352 \cdot 10^{126}:\\
\;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\
\mathbf{elif}\;y \le 39.4883580871444266:\\
\;\;\;\;x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \log 1 - \log \left(e^{a \cdot b + 1 \cdot \left(a \cdot z\right)}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;x \cdot e^{\log \left({z}^{y}\right) + \log \left({1}^{a}\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r114571 = x;
double r114572 = y;
double r114573 = z;
double r114574 = log(r114573);
double r114575 = t;
double r114576 = r114574 - r114575;
double r114577 = r114572 * r114576;
double r114578 = a;
double r114579 = 1.0;
double r114580 = r114579 - r114573;
double r114581 = log(r114580);
double r114582 = b;
double r114583 = r114581 - r114582;
double r114584 = r114578 * r114583;
double r114585 = r114577 + r114584;
double r114586 = exp(r114585);
double r114587 = r114571 * r114586;
return r114587;
}
double f(double x, double y, double z, double t, double a, double b) {
double r114588 = y;
double r114589 = -7.424562313903535e+126;
bool r114590 = r114588 <= r114589;
double r114591 = x;
double r114592 = z;
double r114593 = log(r114592);
double r114594 = r114593 * r114588;
double r114595 = a;
double r114596 = 1.0;
double r114597 = log(r114596);
double r114598 = r114595 * r114597;
double r114599 = r114594 + r114598;
double r114600 = t;
double r114601 = r114600 * r114588;
double r114602 = r114599 - r114601;
double r114603 = exp(r114602);
double r114604 = r114591 * r114603;
double r114605 = 39.48835808714443;
bool r114606 = r114588 <= r114605;
double r114607 = r114593 - r114600;
double r114608 = r114588 * r114607;
double r114609 = b;
double r114610 = r114595 * r114609;
double r114611 = r114595 * r114592;
double r114612 = r114596 * r114611;
double r114613 = r114610 + r114612;
double r114614 = exp(r114613);
double r114615 = log(r114614);
double r114616 = r114598 - r114615;
double r114617 = r114608 + r114616;
double r114618 = exp(r114617);
double r114619 = r114591 * r114618;
double r114620 = pow(r114592, r114588);
double r114621 = log(r114620);
double r114622 = pow(r114596, r114595);
double r114623 = log(r114622);
double r114624 = r114621 + r114623;
double r114625 = exp(r114624);
double r114626 = r114591 * r114625;
double r114627 = r114606 ? r114619 : r114626;
double r114628 = r114590 ? r114604 : r114627;
return r114628;
}



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 < -7.424562313903535e+126Initial program 2.9
Taylor expanded around 0 13.9
if -7.424562313903535e+126 < y < 39.48835808714443Initial program 2.3
Taylor expanded around 0 0.2
rmApplied add-log-exp4.5
Applied add-log-exp6.5
Applied sum-log6.5
Simplified1.4
if 39.48835808714443 < y Initial program 1.1
Taylor expanded around 0 1.8
Taylor expanded around 0 0
Simplified0
Final simplification1.9
herbie shell --seed 2020062
(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))))))