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 r99333 = x;
double r99334 = y;
double r99335 = z;
double r99336 = log(r99335);
double r99337 = t;
double r99338 = r99336 - r99337;
double r99339 = r99334 * r99338;
double r99340 = a;
double r99341 = 1.0;
double r99342 = r99341 - r99335;
double r99343 = log(r99342);
double r99344 = b;
double r99345 = r99343 - r99344;
double r99346 = r99340 * r99345;
double r99347 = r99339 + r99346;
double r99348 = exp(r99347);
double r99349 = r99333 * r99348;
return r99349;
}
double f(double x, double y, double z, double t, double a, double b) {
double r99350 = x;
double r99351 = y;
double r99352 = z;
double r99353 = log(r99352);
double r99354 = t;
double r99355 = r99353 - r99354;
double r99356 = r99351 * r99355;
double r99357 = a;
double r99358 = 1.0;
double r99359 = log(r99358);
double r99360 = 0.5;
double r99361 = 2.0;
double r99362 = pow(r99352, r99361);
double r99363 = pow(r99358, r99361);
double r99364 = r99362 / r99363;
double r99365 = r99360 * r99364;
double r99366 = r99358 * r99352;
double r99367 = r99365 + r99366;
double r99368 = r99359 - r99367;
double r99369 = b;
double r99370 = r99368 - r99369;
double r99371 = r99357 * r99370;
double r99372 = r99356 + r99371;
double r99373 = exp(r99372);
double r99374 = r99350 * r99373;
return r99374;
}



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.8
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2020064
(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))))))