x \cdot \log \left(\frac{x}{y}\right) - z\left(x \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}}\right) - z\right) + \sqrt[3]{\left(\left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) + \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)\right) \cdot \left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) + \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)\right)\right) \cdot \left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) + \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)\right)} \cdot xdouble f(double x, double y, double z) {
double r19676866 = x;
double r19676867 = y;
double r19676868 = r19676866 / r19676867;
double r19676869 = log(r19676868);
double r19676870 = r19676866 * r19676869;
double r19676871 = z;
double r19676872 = r19676870 - r19676871;
return r19676872;
}
double f(double x, double y, double z) {
double r19676873 = x;
double r19676874 = cbrt(r19676873);
double r19676875 = y;
double r19676876 = cbrt(r19676875);
double r19676877 = cbrt(r19676876);
double r19676878 = r19676876 * r19676876;
double r19676879 = cbrt(r19676878);
double r19676880 = r19676877 * r19676879;
double r19676881 = r19676874 / r19676880;
double r19676882 = log(r19676881);
double r19676883 = r19676873 * r19676882;
double r19676884 = z;
double r19676885 = r19676883 - r19676884;
double r19676886 = r19676874 / r19676876;
double r19676887 = log(r19676886);
double r19676888 = r19676887 + r19676887;
double r19676889 = r19676888 * r19676888;
double r19676890 = r19676889 * r19676888;
double r19676891 = cbrt(r19676890);
double r19676892 = r19676891 * r19676873;
double r19676893 = r19676885 + r19676892;
return r19676893;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.0 |
|---|---|
| Target | 7.6 |
| Herbie | 0.3 |
Initial program 15.0
rmApplied add-cube-cbrt15.0
Applied add-cube-cbrt15.0
Applied times-frac15.0
Applied log-prod3.2
Applied distribute-rgt-in3.2
Applied associate--l+3.2
rmApplied add-cbrt-cube3.3
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied cbrt-prod0.3
Final simplification0.3
herbie shell --seed 2019165
(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))