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 -3.41421094382123369 \cdot 10^{52} \lor \neg \left(y \le 2.80049767411103575 \cdot 10^{-17}\right):\\
\;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\
\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 r79074 = x;
double r79075 = y;
double r79076 = z;
double r79077 = log(r79076);
double r79078 = t;
double r79079 = r79077 - r79078;
double r79080 = r79075 * r79079;
double r79081 = a;
double r79082 = 1.0;
double r79083 = r79082 - r79076;
double r79084 = log(r79083);
double r79085 = b;
double r79086 = r79084 - r79085;
double r79087 = r79081 * r79086;
double r79088 = r79080 + r79087;
double r79089 = exp(r79088);
double r79090 = r79074 * r79089;
return r79090;
}
double f(double x, double y, double z, double t, double a, double b) {
double r79091 = y;
double r79092 = -3.4142109438212337e+52;
bool r79093 = r79091 <= r79092;
double r79094 = 2.800497674111036e-17;
bool r79095 = r79091 <= r79094;
double r79096 = !r79095;
bool r79097 = r79093 || r79096;
double r79098 = x;
double r79099 = a;
double r79100 = 1.0;
double r79101 = log(r79100);
double r79102 = r79099 * r79101;
double r79103 = z;
double r79104 = log(r79103);
double r79105 = t;
double r79106 = r79104 - r79105;
double r79107 = r79106 * r79091;
double r79108 = r79102 + r79107;
double r79109 = exp(r79108);
double r79110 = r79098 * r79109;
double r79111 = b;
double r79112 = r79099 * r79111;
double r79113 = r79099 * r79103;
double r79114 = r79100 * r79113;
double r79115 = 0.5;
double r79116 = 2.0;
double r79117 = pow(r79103, r79116);
double r79118 = r79099 * r79117;
double r79119 = r79115 * r79118;
double r79120 = r79114 + r79119;
double r79121 = r79112 + r79120;
double r79122 = -r79121;
double r79123 = exp(r79122);
double r79124 = r79098 * r79123;
double r79125 = r79097 ? r79110 : r79124;
return r79125;
}



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 < -3.4142109438212337e+52 or 2.800497674111036e-17 < y Initial program 1.7
Taylor expanded around 0 6.7
Simplified6.6
if -3.4142109438212337e+52 < y < 2.800497674111036e-17Initial program 2.3
Taylor expanded around 0 0.0
Taylor expanded around inf 7.8
Final simplification7.3
herbie shell --seed 2019199
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))))))