\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x - \left(\log \left({y}^{\frac{2}{3}}\right) \cdot \left(y + 0.5\right) + \left(\left(y + 0.5\right) \cdot \log \left(\sqrt[3]{y}\right) - y\right)\right)\right) - zdouble f(double x, double y, double z) {
double r16596243 = x;
double r16596244 = y;
double r16596245 = 0.5;
double r16596246 = r16596244 + r16596245;
double r16596247 = log(r16596244);
double r16596248 = r16596246 * r16596247;
double r16596249 = r16596243 - r16596248;
double r16596250 = r16596249 + r16596244;
double r16596251 = z;
double r16596252 = r16596250 - r16596251;
return r16596252;
}
double f(double x, double y, double z) {
double r16596253 = x;
double r16596254 = y;
double r16596255 = 0.6666666666666666;
double r16596256 = pow(r16596254, r16596255);
double r16596257 = log(r16596256);
double r16596258 = 0.5;
double r16596259 = r16596254 + r16596258;
double r16596260 = r16596257 * r16596259;
double r16596261 = cbrt(r16596254);
double r16596262 = log(r16596261);
double r16596263 = r16596259 * r16596262;
double r16596264 = r16596263 - r16596254;
double r16596265 = r16596260 + r16596264;
double r16596266 = r16596253 - r16596265;
double r16596267 = z;
double r16596268 = r16596266 - r16596267;
return r16596268;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 0.1
rmApplied associate-+l-0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.2
Applied distribute-lft-in0.2
Applied associate--l+0.2
rmApplied pow1/30.1
Applied pow1/30.2
Applied pow-prod-up0.2
Simplified0.2
rmApplied +-commutative0.2
Final simplification0.2
herbie shell --seed 2019179
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))