x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot e^{\mathsf{fma}\left(y, \log z - t, a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}double f(double x, double y, double z, double t, double a, double b) {
double r109600 = x;
double r109601 = y;
double r109602 = z;
double r109603 = log(r109602);
double r109604 = t;
double r109605 = r109603 - r109604;
double r109606 = r109601 * r109605;
double r109607 = a;
double r109608 = 1.0;
double r109609 = r109608 - r109602;
double r109610 = log(r109609);
double r109611 = b;
double r109612 = r109610 - r109611;
double r109613 = r109607 * r109612;
double r109614 = r109606 + r109613;
double r109615 = exp(r109614);
double r109616 = r109600 * r109615;
return r109616;
}
double f(double x, double y, double z, double t, double a, double b) {
double r109617 = x;
double r109618 = y;
double r109619 = z;
double r109620 = log(r109619);
double r109621 = t;
double r109622 = r109620 - r109621;
double r109623 = a;
double r109624 = 1.0;
double r109625 = log(r109624);
double r109626 = 0.5;
double r109627 = 2.0;
double r109628 = pow(r109619, r109627);
double r109629 = pow(r109624, r109627);
double r109630 = r109628 / r109629;
double r109631 = r109626 * r109630;
double r109632 = r109624 * r109619;
double r109633 = r109631 + r109632;
double r109634 = r109625 - r109633;
double r109635 = b;
double r109636 = r109634 - r109635;
double r109637 = r109623 * r109636;
double r109638 = fma(r109618, r109622, r109637);
double r109639 = exp(r109638);
double r109640 = r109617 * r109639;
return r109640;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a



Bits error versus b
Initial program 2.1
Taylor expanded around 0 0.5
rmApplied fma-def0.3
Final simplification0.3
herbie shell --seed 2019353 +o rules:numerics
(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))))))