\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\left(\frac{\frac{{\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt[3]{a} \cdot \sqrt[3]{a}}\right)}^{1}}{\sqrt{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}}{y} \cdot \frac{{\left(\frac{\sqrt[3]{1}}{\sqrt[3]{a}}\right)}^{1}}{\sqrt{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot xdouble f(double x, double y, double z, double t, double a, double b) {
double r318299 = x;
double r318300 = y;
double r318301 = z;
double r318302 = log(r318301);
double r318303 = r318300 * r318302;
double r318304 = t;
double r318305 = 1.0;
double r318306 = r318304 - r318305;
double r318307 = a;
double r318308 = log(r318307);
double r318309 = r318306 * r318308;
double r318310 = r318303 + r318309;
double r318311 = b;
double r318312 = r318310 - r318311;
double r318313 = exp(r318312);
double r318314 = r318299 * r318313;
double r318315 = r318314 / r318300;
return r318315;
}
double f(double x, double y, double z, double t, double a, double b) {
double r318316 = 1.0;
double r318317 = cbrt(r318316);
double r318318 = r318317 * r318317;
double r318319 = a;
double r318320 = cbrt(r318319);
double r318321 = r318320 * r318320;
double r318322 = r318318 / r318321;
double r318323 = 1.0;
double r318324 = pow(r318322, r318323);
double r318325 = y;
double r318326 = z;
double r318327 = r318316 / r318326;
double r318328 = log(r318327);
double r318329 = r318325 * r318328;
double r318330 = r318316 / r318319;
double r318331 = log(r318330);
double r318332 = t;
double r318333 = r318331 * r318332;
double r318334 = b;
double r318335 = r318333 + r318334;
double r318336 = r318329 + r318335;
double r318337 = exp(r318336);
double r318338 = sqrt(r318337);
double r318339 = r318324 / r318338;
double r318340 = r318339 / r318325;
double r318341 = r318317 / r318320;
double r318342 = pow(r318341, r318323);
double r318343 = r318342 / r318338;
double r318344 = r318340 * r318343;
double r318345 = x;
double r318346 = r318344 * r318345;
return r318346;
}




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 | 11.4 |
| Herbie | 1.4 |
Initial program 2.1
Taylor expanded around inf 2.1
Simplified6.2
rmApplied div-inv6.2
Applied add-sqr-sqrt6.2
Applied add-cube-cbrt6.4
Applied add-cube-cbrt6.4
Applied times-frac6.4
Applied unpow-prod-down6.4
Applied times-frac6.4
Applied times-frac1.2
Final simplification1.4
herbie shell --seed 2019298
(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.88458485041274715) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.22883740731) (/ (* (/ 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))