e^{\left(x + y \cdot \log y\right) - z}{\left(e^{\sqrt[3]{\left(\mathsf{fma}\left(y, \log y, x - z\right) \cdot \mathsf{fma}\left(y, \log y, x - z\right)\right) \cdot \left(27 \cdot \mathsf{fma}\left(y, \log y, x - z\right)\right)}}\right)}^{\frac{1}{3}}double f(double x, double y, double z) {
double r11795406 = x;
double r11795407 = y;
double r11795408 = log(r11795407);
double r11795409 = r11795407 * r11795408;
double r11795410 = r11795406 + r11795409;
double r11795411 = z;
double r11795412 = r11795410 - r11795411;
double r11795413 = exp(r11795412);
return r11795413;
}
double f(double x, double y, double z) {
double r11795414 = y;
double r11795415 = log(r11795414);
double r11795416 = x;
double r11795417 = z;
double r11795418 = r11795416 - r11795417;
double r11795419 = fma(r11795414, r11795415, r11795418);
double r11795420 = r11795419 * r11795419;
double r11795421 = 27.0;
double r11795422 = r11795421 * r11795419;
double r11795423 = r11795420 * r11795422;
double r11795424 = cbrt(r11795423);
double r11795425 = exp(r11795424);
double r11795426 = 0.3333333333333333;
double r11795427 = pow(r11795425, r11795426);
return r11795427;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 0.0
Simplified0.0
rmApplied expm1-log1p-u0.0
rmApplied add-cbrt-cube0.1
Simplified0.1
rmApplied pow1/30.1
rmApplied add-cbrt-cube0.1
Applied add-cbrt-cube0.1
Applied cbrt-unprod0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.Poisson.Internal:probability from math-functions-0.1.5.2"
:herbie-target
(exp (+ (- x z) (* (log y) y)))
(exp (- (+ x (* y (log y))) z)))