x \cdot \log \left(\frac{x}{y}\right) - z\left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) + \left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) - \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right)\right) \cdot x - zdouble f(double x, double y, double z) {
double r25103526 = x;
double r25103527 = y;
double r25103528 = r25103526 / r25103527;
double r25103529 = log(r25103528);
double r25103530 = r25103526 * r25103529;
double r25103531 = z;
double r25103532 = r25103530 - r25103531;
return r25103532;
}
double f(double x, double y, double z) {
double r25103533 = x;
double r25103534 = cbrt(r25103533);
double r25103535 = y;
double r25103536 = cbrt(r25103535);
double r25103537 = r25103534 / r25103536;
double r25103538 = log(r25103537);
double r25103539 = r25103534 * r25103534;
double r25103540 = log(r25103539);
double r25103541 = r25103536 * r25103536;
double r25103542 = log(r25103541);
double r25103543 = r25103540 - r25103542;
double r25103544 = r25103538 + r25103543;
double r25103545 = r25103544 * r25103533;
double r25103546 = z;
double r25103547 = r25103545 - r25103546;
return r25103547;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.7 |
|---|---|
| Target | 7.6 |
| Herbie | 0.3 |
Initial program 15.7
rmApplied add-cube-cbrt15.7
Applied add-cube-cbrt15.7
Applied times-frac15.7
Applied log-prod3.8
Simplified3.8
rmApplied frac-times3.8
Applied log-div0.3
Final simplification0.3
herbie shell --seed 2019192
(FPCore (x y z)
:name "Numeric.SpecFunctions.Extra:bd0 from math-functions-0.1.5.2"
:herbie-target
(if (< y 7.595077799083773e-308) (- (* x (log (/ x y))) z) (- (* x (- (log x) (log y))) z))
(- (* x (log (/ x y))) z))