\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{e^{\left(\log z \cdot y + \left(t - 1.0\right) \cdot \log a\right) - b}}}{\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}} \cdot \left(x \cdot \frac{\sqrt[3]{{e}^{\left(\left(\log z \cdot y + \left(t - 1.0\right) \cdot \log a\right) - b\right)}} \cdot \sqrt[3]{e^{\left(\log z \cdot y + \left(t - 1.0\right) \cdot \log a\right) - b}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r9557368 = x;
double r9557369 = y;
double r9557370 = z;
double r9557371 = log(r9557370);
double r9557372 = r9557369 * r9557371;
double r9557373 = t;
double r9557374 = 1.0;
double r9557375 = r9557373 - r9557374;
double r9557376 = a;
double r9557377 = log(r9557376);
double r9557378 = r9557375 * r9557377;
double r9557379 = r9557372 + r9557378;
double r9557380 = b;
double r9557381 = r9557379 - r9557380;
double r9557382 = exp(r9557381);
double r9557383 = r9557368 * r9557382;
double r9557384 = r9557383 / r9557369;
return r9557384;
}
double f(double x, double y, double z, double t, double a, double b) {
double r9557385 = z;
double r9557386 = log(r9557385);
double r9557387 = y;
double r9557388 = r9557386 * r9557387;
double r9557389 = t;
double r9557390 = 1.0;
double r9557391 = r9557389 - r9557390;
double r9557392 = a;
double r9557393 = log(r9557392);
double r9557394 = r9557391 * r9557393;
double r9557395 = r9557388 + r9557394;
double r9557396 = b;
double r9557397 = r9557395 - r9557396;
double r9557398 = exp(r9557397);
double r9557399 = cbrt(r9557398);
double r9557400 = cbrt(r9557387);
double r9557401 = r9557400 * r9557400;
double r9557402 = cbrt(r9557401);
double r9557403 = cbrt(r9557400);
double r9557404 = r9557402 * r9557403;
double r9557405 = r9557399 / r9557404;
double r9557406 = x;
double r9557407 = exp(1.0);
double r9557408 = pow(r9557407, r9557397);
double r9557409 = cbrt(r9557408);
double r9557410 = r9557409 * r9557399;
double r9557411 = r9557410 / r9557401;
double r9557412 = r9557406 * r9557411;
double r9557413 = r9557405 * r9557412;
return r9557413;
}




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 | 1.8 |
|---|---|
| Target | 11.2 |
| Herbie | 1.1 |
Initial program 1.8
rmApplied *-un-lft-identity1.8
Applied times-frac2.0
Simplified2.0
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied associate-*r*1.1
rmApplied *-un-lft-identity1.1
Applied exp-prod1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Applied cbrt-prod1.1
Final simplification1.1
herbie shell --seed 2019156
(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) (* 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) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))