x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot \left(\sqrt[3]{\sqrt{{\left(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)}\right)}^{3}}} \cdot \sqrt[3]{\sqrt{\sqrt{{\left(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)}\right)}^{3}}} \cdot \sqrt{\sqrt{{\left(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)}\right)}^{3}}}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r130345 = x;
double r130346 = y;
double r130347 = z;
double r130348 = log(r130347);
double r130349 = t;
double r130350 = r130348 - r130349;
double r130351 = r130346 * r130350;
double r130352 = a;
double r130353 = 1.0;
double r130354 = r130353 - r130347;
double r130355 = log(r130354);
double r130356 = b;
double r130357 = r130355 - r130356;
double r130358 = r130352 * r130357;
double r130359 = r130351 + r130358;
double r130360 = exp(r130359);
double r130361 = r130345 * r130360;
return r130361;
}
double f(double x, double y, double z, double t, double a, double b) {
double r130362 = x;
double r130363 = y;
double r130364 = z;
double r130365 = log(r130364);
double r130366 = t;
double r130367 = r130365 - r130366;
double r130368 = r130363 * r130367;
double r130369 = a;
double r130370 = 1.0;
double r130371 = log(r130370);
double r130372 = 0.5;
double r130373 = 2.0;
double r130374 = pow(r130364, r130373);
double r130375 = pow(r130370, r130373);
double r130376 = r130374 / r130375;
double r130377 = r130372 * r130376;
double r130378 = r130370 * r130364;
double r130379 = r130377 + r130378;
double r130380 = r130371 - r130379;
double r130381 = b;
double r130382 = r130380 - r130381;
double r130383 = r130369 * r130382;
double r130384 = r130368 + r130383;
double r130385 = exp(r130384);
double r130386 = 3.0;
double r130387 = pow(r130385, r130386);
double r130388 = sqrt(r130387);
double r130389 = cbrt(r130388);
double r130390 = sqrt(r130388);
double r130391 = r130390 * r130390;
double r130392 = cbrt(r130391);
double r130393 = r130389 * r130392;
double r130394 = r130362 * r130393;
return r130394;
}



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 0.9
Taylor expanded around 0 0.6
rmApplied add-cbrt-cube0.7
Simplified0.7
rmApplied add-sqr-sqrt0.7
Applied cbrt-prod0.7
rmApplied add-sqr-sqrt0.7
Applied sqrt-prod0.7
Final simplification0.7
herbie shell --seed 2020021
(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))))))