x \cdot \log \left(\frac{x}{y}\right) - z\left(\left(\left(2 \cdot \log \left(\frac{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}}{\sqrt[3]{y}}\right)\right) \cdot 1\right) \cdot x + x \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)\right) - zdouble f(double x, double y, double z) {
double r449281 = x;
double r449282 = y;
double r449283 = r449281 / r449282;
double r449284 = log(r449283);
double r449285 = r449281 * r449284;
double r449286 = z;
double r449287 = r449285 - r449286;
return r449287;
}
double f(double x, double y, double z) {
double r449288 = 2.0;
double r449289 = x;
double r449290 = cbrt(r449289);
double r449291 = r449290 * r449290;
double r449292 = cbrt(r449291);
double r449293 = cbrt(r449290);
double r449294 = r449292 * r449293;
double r449295 = y;
double r449296 = cbrt(r449295);
double r449297 = r449294 / r449296;
double r449298 = log(r449297);
double r449299 = r449288 * r449298;
double r449300 = 1.0;
double r449301 = r449299 * r449300;
double r449302 = r449301 * r449289;
double r449303 = r449290 / r449296;
double r449304 = log(r449303);
double r449305 = r449289 * r449304;
double r449306 = r449302 + r449305;
double r449307 = z;
double r449308 = r449306 - r449307;
return r449308;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.0 |
|---|---|
| Target | 8.0 |
| Herbie | 0.2 |
Initial program 15.0
rmApplied add-cube-cbrt15.0
Applied add-cube-cbrt15.0
Applied times-frac15.0
Applied log-prod3.5
Applied distribute-lft-in3.5
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied cbrt-prod0.2
Final simplification0.2
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions.Extra:bd0 from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< y 7.595077799083773e-308) (- (* x (log (/ x y))) z) (- (* x (- (log x) (log y))) z))
(- (* x (log (/ x y))) z))