\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{1}{\frac{y}{\left(x \cdot \frac{{\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{a}}\right)}^{1}}{\sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}} \cdot \sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot \frac{{\left(\frac{\sqrt[3]{1}}{\sqrt{a}}\right)}^{1}}{\sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}}}double f(double x, double y, double z, double t, double a, double b) {
double r504416 = x;
double r504417 = y;
double r504418 = z;
double r504419 = log(r504418);
double r504420 = r504417 * r504419;
double r504421 = t;
double r504422 = 1.0;
double r504423 = r504421 - r504422;
double r504424 = a;
double r504425 = log(r504424);
double r504426 = r504423 * r504425;
double r504427 = r504420 + r504426;
double r504428 = b;
double r504429 = r504427 - r504428;
double r504430 = exp(r504429);
double r504431 = r504416 * r504430;
double r504432 = r504431 / r504417;
return r504432;
}
double f(double x, double y, double z, double t, double a, double b) {
double r504433 = 1.0;
double r504434 = y;
double r504435 = x;
double r504436 = cbrt(r504433);
double r504437 = r504436 * r504436;
double r504438 = a;
double r504439 = sqrt(r504438);
double r504440 = r504437 / r504439;
double r504441 = 1.0;
double r504442 = pow(r504440, r504441);
double r504443 = z;
double r504444 = r504433 / r504443;
double r504445 = log(r504444);
double r504446 = r504434 * r504445;
double r504447 = r504433 / r504438;
double r504448 = log(r504447);
double r504449 = t;
double r504450 = r504448 * r504449;
double r504451 = b;
double r504452 = r504450 + r504451;
double r504453 = r504446 + r504452;
double r504454 = exp(r504453);
double r504455 = cbrt(r504454);
double r504456 = r504455 * r504455;
double r504457 = r504442 / r504456;
double r504458 = r504435 * r504457;
double r504459 = r504436 / r504439;
double r504460 = pow(r504459, r504441);
double r504461 = r504460 / r504455;
double r504462 = r504458 * r504461;
double r504463 = r504434 / r504462;
double r504464 = r504433 / r504463;
return r504464;
}




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.0 |
|---|---|
| Target | 11.2 |
| Herbie | 1.4 |
Initial program 2.0
Taylor expanded around inf 2.0
Simplified1.3
rmApplied add-cube-cbrt1.4
Applied add-sqr-sqrt1.4
Applied add-cube-cbrt1.4
Applied times-frac1.4
Applied unpow-prod-down1.4
Applied times-frac1.4
Applied associate-*r*1.4
rmApplied clear-num1.4
Final simplification1.4
herbie shell --seed 2020047
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1) (log a))) b))) y))