\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{x \cdot \left(\left(\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}\right) \cdot \sqrt[3]{\left(\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}\right) \cdot \sqrt[3]{{\left(\sqrt{e}\right)}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)} \cdot {\left(\sqrt{e}\right)}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}}\right)}{y}double f(double x, double y, double z, double t, double a, double b) {
double r21997430 = x;
double r21997431 = y;
double r21997432 = z;
double r21997433 = log(r21997432);
double r21997434 = r21997431 * r21997433;
double r21997435 = t;
double r21997436 = 1.0;
double r21997437 = r21997435 - r21997436;
double r21997438 = a;
double r21997439 = log(r21997438);
double r21997440 = r21997437 * r21997439;
double r21997441 = r21997434 + r21997440;
double r21997442 = b;
double r21997443 = r21997441 - r21997442;
double r21997444 = exp(r21997443);
double r21997445 = r21997430 * r21997444;
double r21997446 = r21997445 / r21997431;
return r21997446;
}
double f(double x, double y, double z, double t, double a, double b) {
double r21997447 = x;
double r21997448 = a;
double r21997449 = log(r21997448);
double r21997450 = t;
double r21997451 = 1.0;
double r21997452 = r21997450 - r21997451;
double r21997453 = r21997449 * r21997452;
double r21997454 = z;
double r21997455 = log(r21997454);
double r21997456 = y;
double r21997457 = r21997455 * r21997456;
double r21997458 = r21997453 + r21997457;
double r21997459 = b;
double r21997460 = r21997458 - r21997459;
double r21997461 = exp(r21997460);
double r21997462 = cbrt(r21997461);
double r21997463 = r21997462 * r21997462;
double r21997464 = exp(1.0);
double r21997465 = sqrt(r21997464);
double r21997466 = pow(r21997465, r21997460);
double r21997467 = r21997466 * r21997466;
double r21997468 = cbrt(r21997467);
double r21997469 = r21997463 * r21997468;
double r21997470 = cbrt(r21997469);
double r21997471 = r21997463 * r21997470;
double r21997472 = r21997447 * r21997471;
double r21997473 = r21997472 / r21997456;
return r21997473;
}




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
| Original | 2.1 |
|---|---|
| Target | 10.9 |
| Herbie | 2.0 |
Initial program 2.1
rmApplied add-cube-cbrt2.1
rmApplied add-cube-cbrt2.1
rmApplied *-un-lft-identity2.1
Applied exp-prod2.1
Simplified2.1
rmApplied add-sqr-sqrt2.0
Applied unpow-prod-down2.0
Final simplification2.0
herbie shell --seed 2019168
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))