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 r77499 = x;
double r77500 = y;
double r77501 = z;
double r77502 = log(r77501);
double r77503 = t;
double r77504 = r77502 - r77503;
double r77505 = r77500 * r77504;
double r77506 = a;
double r77507 = 1.0;
double r77508 = r77507 - r77501;
double r77509 = log(r77508);
double r77510 = b;
double r77511 = r77509 - r77510;
double r77512 = r77506 * r77511;
double r77513 = r77505 + r77512;
double r77514 = exp(r77513);
double r77515 = r77499 * r77514;
return r77515;
}
double f(double x, double y, double z, double t, double a, double b) {
double r77516 = x;
double r77517 = y;
double r77518 = z;
double r77519 = log(r77518);
double r77520 = t;
double r77521 = r77519 - r77520;
double r77522 = r77517 * r77521;
double r77523 = a;
double r77524 = 1.0;
double r77525 = log(r77524);
double r77526 = 0.5;
double r77527 = 2.0;
double r77528 = pow(r77518, r77527);
double r77529 = pow(r77524, r77527);
double r77530 = r77528 / r77529;
double r77531 = r77526 * r77530;
double r77532 = r77524 * r77518;
double r77533 = r77531 + r77532;
double r77534 = r77525 - r77533;
double r77535 = b;
double r77536 = r77534 - r77535;
double r77537 = r77523 * r77536;
double r77538 = r77522 + r77537;
double r77539 = exp(r77538);
double r77540 = r77516 * r77539;
return r77540;
}



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.4
Final simplification0.4
herbie shell --seed 2019323
(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))))))