\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;a \le 4.53731180448953874 \cdot 10^{-185}:\\
\;\;\;\;\frac{\sqrt[3]{{\left(x \cdot \frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), t, b\right)\right)}}\right)}^{3}}}{y}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{\frac{y}{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), t, b\right)\right)}}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r470304 = x;
double r470305 = y;
double r470306 = z;
double r470307 = log(r470306);
double r470308 = r470305 * r470307;
double r470309 = t;
double r470310 = 1.0;
double r470311 = r470309 - r470310;
double r470312 = a;
double r470313 = log(r470312);
double r470314 = r470311 * r470313;
double r470315 = r470308 + r470314;
double r470316 = b;
double r470317 = r470315 - r470316;
double r470318 = exp(r470317);
double r470319 = r470304 * r470318;
double r470320 = r470319 / r470305;
return r470320;
}
double f(double x, double y, double z, double t, double a, double b) {
double r470321 = a;
double r470322 = 4.537311804489539e-185;
bool r470323 = r470321 <= r470322;
double r470324 = x;
double r470325 = 1.0;
double r470326 = r470325 / r470321;
double r470327 = 1.0;
double r470328 = pow(r470326, r470327);
double r470329 = y;
double r470330 = z;
double r470331 = r470325 / r470330;
double r470332 = log(r470331);
double r470333 = log(r470326);
double r470334 = t;
double r470335 = b;
double r470336 = fma(r470333, r470334, r470335);
double r470337 = fma(r470329, r470332, r470336);
double r470338 = exp(r470337);
double r470339 = r470328 / r470338;
double r470340 = r470324 * r470339;
double r470341 = 3.0;
double r470342 = pow(r470340, r470341);
double r470343 = cbrt(r470342);
double r470344 = r470343 / r470329;
double r470345 = r470329 / r470339;
double r470346 = r470325 / r470345;
double r470347 = r470324 * r470346;
double r470348 = r470323 ? r470344 : r470347;
return r470348;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 2.0 |
|---|---|
| Target | 11.2 |
| Herbie | 1.0 |
if a < 4.537311804489539e-185Initial program 0.7
Taylor expanded around inf 0.7
Simplified0.1
rmApplied add-cbrt-cube0.1
Applied add-cbrt-cube64.0
Applied cbrt-undiv64.0
Applied add-cbrt-cube64.0
Applied cbrt-unprod64.0
Simplified2.2
if 4.537311804489539e-185 < a Initial program 2.2
Taylor expanded around inf 2.2
Simplified1.5
rmApplied associate-/l*0.6
rmApplied div-inv0.7
Final simplification1.0
herbie shell --seed 2020056 +o rules:numerics
(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))