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^{\left(\log z - t\right) \cdot y + a \cdot \log 1}\\
\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 r132963 = x;
double r132964 = y;
double r132965 = z;
double r132966 = log(r132965);
double r132967 = t;
double r132968 = r132966 - r132967;
double r132969 = r132964 * r132968;
double r132970 = a;
double r132971 = 1.0;
double r132972 = r132971 - r132965;
double r132973 = log(r132972);
double r132974 = b;
double r132975 = r132973 - r132974;
double r132976 = r132970 * r132975;
double r132977 = r132969 + r132976;
double r132978 = exp(r132977);
double r132979 = r132963 * r132978;
return r132979;
}
double f(double x, double y, double z, double t, double a, double b) {
double r132980 = y;
double r132981 = -2.303180600045709;
bool r132982 = r132980 <= r132981;
double r132983 = 1.0795444971458526e+106;
bool r132984 = r132980 <= r132983;
double r132985 = !r132984;
bool r132986 = r132982 || r132985;
double r132987 = x;
double r132988 = z;
double r132989 = log(r132988);
double r132990 = t;
double r132991 = r132989 - r132990;
double r132992 = r132991 * r132980;
double r132993 = a;
double r132994 = 1.0;
double r132995 = log(r132994);
double r132996 = r132993 * r132995;
double r132997 = r132992 + r132996;
double r132998 = exp(r132997);
double r132999 = r132987 * r132998;
double r133000 = pow(r132994, r132993);
double r133001 = 0.5;
double r133002 = 2.0;
double r133003 = pow(r132988, r133002);
double r133004 = r132993 * r133003;
double r133005 = pow(r132994, r133002);
double r133006 = r133004 / r133005;
double r133007 = r133001 * r133006;
double r133008 = b;
double r133009 = r132993 * r133008;
double r133010 = r132990 * r132980;
double r133011 = r132993 * r132988;
double r133012 = r132994 * r133011;
double r133013 = r133010 + r133012;
double r133014 = r133009 + r133013;
double r133015 = r133007 + r133014;
double r133016 = exp(r133015);
double r133017 = r133000 / r133016;
double r133018 = pow(r132988, r132980);
double r133019 = r133017 * r133018;
double r133020 = r132987 * r133019;
double r133021 = r132986 ? r132999 : r133020;
return r133021;
}



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 1.6
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))))))