\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\sqrt{{\left(\frac{1}{a}\right)}^{1}} \cdot \frac{x}{\frac{y}{\frac{\sqrt{{\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)}}}}double f(double x, double y, double z, double t, double a, double b) {
double r450266 = x;
double r450267 = y;
double r450268 = z;
double r450269 = log(r450268);
double r450270 = r450267 * r450269;
double r450271 = t;
double r450272 = 1.0;
double r450273 = r450271 - r450272;
double r450274 = a;
double r450275 = log(r450274);
double r450276 = r450273 * r450275;
double r450277 = r450270 + r450276;
double r450278 = b;
double r450279 = r450277 - r450278;
double r450280 = exp(r450279);
double r450281 = r450266 * r450280;
double r450282 = r450281 / r450267;
return r450282;
}
double f(double x, double y, double z, double t, double a, double b) {
double r450283 = 1.0;
double r450284 = a;
double r450285 = r450283 / r450284;
double r450286 = 1.0;
double r450287 = pow(r450285, r450286);
double r450288 = sqrt(r450287);
double r450289 = x;
double r450290 = y;
double r450291 = z;
double r450292 = r450283 / r450291;
double r450293 = log(r450292);
double r450294 = log(r450285);
double r450295 = t;
double r450296 = b;
double r450297 = fma(r450294, r450295, r450296);
double r450298 = fma(r450290, r450293, r450297);
double r450299 = exp(r450298);
double r450300 = r450288 / r450299;
double r450301 = r450290 / r450300;
double r450302 = r450289 / r450301;
double r450303 = r450288 * r450302;
return r450303;
}




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 | 1.8 |
|---|---|
| Target | 11.4 |
| Herbie | 0.8 |
Initial program 1.8
Taylor expanded around inf 1.9
Simplified1.2
rmApplied associate-/l*1.2
rmApplied *-un-lft-identity1.2
Applied add-sqr-sqrt1.2
Applied times-frac1.2
Applied *-un-lft-identity1.2
Applied times-frac1.2
Applied *-un-lft-identity1.2
Applied times-frac0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2020018 +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))