x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1.0 - z\right) - b\right)}e^{\mathsf{fma}\left(y, \log z - t, \log 1.0 \cdot a - \mathsf{fma}\left(1.0, z, b\right) \cdot a\right)} \cdot xdouble f(double x, double y, double z, double t, double a, double b) {
double r5913619 = x;
double r5913620 = y;
double r5913621 = z;
double r5913622 = log(r5913621);
double r5913623 = t;
double r5913624 = r5913622 - r5913623;
double r5913625 = r5913620 * r5913624;
double r5913626 = a;
double r5913627 = 1.0;
double r5913628 = r5913627 - r5913621;
double r5913629 = log(r5913628);
double r5913630 = b;
double r5913631 = r5913629 - r5913630;
double r5913632 = r5913626 * r5913631;
double r5913633 = r5913625 + r5913632;
double r5913634 = exp(r5913633);
double r5913635 = r5913619 * r5913634;
return r5913635;
}
double f(double x, double y, double z, double t, double a, double b) {
double r5913636 = y;
double r5913637 = z;
double r5913638 = log(r5913637);
double r5913639 = t;
double r5913640 = r5913638 - r5913639;
double r5913641 = 1.0;
double r5913642 = log(r5913641);
double r5913643 = a;
double r5913644 = r5913642 * r5913643;
double r5913645 = b;
double r5913646 = fma(r5913641, r5913637, r5913645);
double r5913647 = r5913646 * r5913643;
double r5913648 = r5913644 - r5913647;
double r5913649 = fma(r5913636, r5913640, r5913648);
double r5913650 = exp(r5913649);
double r5913651 = x;
double r5913652 = r5913650 * r5913651;
return r5913652;
}



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 1.8
Simplified1.6
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019158 +o rules:numerics
(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))))))