x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)}double f(double x, double y, double z, double t, double a, double b) {
double r96554 = x;
double r96555 = y;
double r96556 = z;
double r96557 = log(r96556);
double r96558 = t;
double r96559 = r96557 - r96558;
double r96560 = r96555 * r96559;
double r96561 = a;
double r96562 = 1.0;
double r96563 = r96562 - r96556;
double r96564 = log(r96563);
double r96565 = b;
double r96566 = r96564 - r96565;
double r96567 = r96561 * r96566;
double r96568 = r96560 + r96567;
double r96569 = exp(r96568);
double r96570 = r96554 * r96569;
return r96570;
}
double f(double x, double y, double z, double t, double a, double b) {
double r96571 = x;
double r96572 = y;
double r96573 = z;
double r96574 = log(r96573);
double r96575 = t;
double r96576 = r96574 - r96575;
double r96577 = r96572 * r96576;
double r96578 = a;
double r96579 = 1.0;
double r96580 = log(r96579);
double r96581 = 0.5;
double r96582 = 2.0;
double r96583 = pow(r96573, r96582);
double r96584 = pow(r96579, r96582);
double r96585 = r96583 / r96584;
double r96586 = r96581 * r96585;
double r96587 = r96579 * r96573;
double r96588 = r96586 + r96587;
double r96589 = r96580 - r96588;
double r96590 = b;
double r96591 = r96589 - r96590;
double r96592 = r96578 * r96591;
double r96593 = r96577 + r96592;
double r96594 = exp(r96593);
double r96595 = r96571 * r96594;
return r96595;
}



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
Initial program 1.9
Taylor expanded around 0 0.5
Final simplification0.5
herbie shell --seed 2020046
(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))))))