\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(\left(x - \left(\left(\left(\log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right) \cdot 2\right) \cdot \left(y + 0.5\right) + \left(\log \left(\sqrt[3]{\sqrt[3]{y}}\right) \cdot 2\right) \cdot \left(y + 0.5\right)\right) + \log \left(\sqrt[3]{y}\right) \cdot \left(y + 0.5\right)\right)\right) + y\right) - zdouble f(double x, double y, double z) {
double r405264 = x;
double r405265 = y;
double r405266 = 0.5;
double r405267 = r405265 + r405266;
double r405268 = log(r405265);
double r405269 = r405267 * r405268;
double r405270 = r405264 - r405269;
double r405271 = r405270 + r405265;
double r405272 = z;
double r405273 = r405271 - r405272;
return r405273;
}
double f(double x, double y, double z) {
double r405274 = x;
double r405275 = y;
double r405276 = cbrt(r405275);
double r405277 = r405276 * r405276;
double r405278 = cbrt(r405277);
double r405279 = log(r405278);
double r405280 = 2.0;
double r405281 = r405279 * r405280;
double r405282 = 0.5;
double r405283 = r405275 + r405282;
double r405284 = r405281 * r405283;
double r405285 = cbrt(r405276);
double r405286 = log(r405285);
double r405287 = r405286 * r405280;
double r405288 = r405287 * r405283;
double r405289 = r405284 + r405288;
double r405290 = log(r405276);
double r405291 = r405290 * r405283;
double r405292 = r405289 + r405291;
double r405293 = r405274 - r405292;
double r405294 = r405293 + r405275;
double r405295 = z;
double r405296 = r405294 - r405295;
return r405296;
}




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 add-cube-cbrt0.1
Applied log-prod0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied cbrt-prod0.2
Applied log-prod0.2
Applied distribute-lft-in0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020065
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))