| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 19776 |
\[x \cdot \left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) \cdot 3\right) - z
\]

(FPCore (x y z) :precision binary64 (- (* x (log (/ x y))) z))
(FPCore (x y z) :precision binary64 (- (* x (* (log (/ (cbrt x) (cbrt y))) 3.0)) z))
double code(double x, double y, double z) {
return (x * log((x / y))) - z;
}
double code(double x, double y, double z) {
return (x * (log((cbrt(x) / cbrt(y))) * 3.0)) - z;
}
public static double code(double x, double y, double z) {
return (x * Math.log((x / y))) - z;
}
public static double code(double x, double y, double z) {
return (x * (Math.log((Math.cbrt(x) / Math.cbrt(y))) * 3.0)) - z;
}
function code(x, y, z) return Float64(Float64(x * log(Float64(x / y))) - z) end
function code(x, y, z) return Float64(Float64(x * Float64(log(Float64(cbrt(x) / cbrt(y))) * 3.0)) - z) end
code[x_, y_, z_] := N[(N[(x * N[Log[N[(x / y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]
code[x_, y_, z_] := N[(N[(x * N[(N[Log[N[(N[Power[x, 1/3], $MachinePrecision] / N[Power[y, 1/3], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 3.0), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]
x \cdot \log \left(\frac{x}{y}\right) - z
x \cdot \left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) \cdot 3\right) - z
Herbie found 7 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Results
| Original | 77.6% |
|---|---|
| Target | 88.6% |
| Herbie | 99.7% |
Initial program 80.5%
Applied egg-rr80.4%
[Start]80.5% | \[ x \cdot \log \left(\frac{x}{y}\right) - z
\] |
|---|---|
add-cube-cbrt [=>]80.4% | \[ x \cdot \log \color{blue}{\left(\left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y}}\right)} - z
\] |
associate-*l* [=>]80.4% | \[ x \cdot \log \color{blue}{\left(\sqrt[3]{\frac{x}{y}} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right)} - z
\] |
log-prod [=>]80.4% | \[ x \cdot \color{blue}{\left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + \log \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right)} - z
\] |
pow2 [=>]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + \log \color{blue}{\left({\left(\sqrt[3]{\frac{x}{y}}\right)}^{2}\right)}\right) - z
\] |
metadata-eval [<=]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + \log \left({\left(\sqrt[3]{\frac{x}{y}}\right)}^{\color{blue}{\left(1 + 1\right)}}\right)\right) - z
\] |
log-pow [=>]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + \color{blue}{\left(1 + 1\right) \cdot \log \left(\sqrt[3]{\frac{x}{y}}\right)}\right) - z
\] |
metadata-eval [=>]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + \color{blue}{2} \cdot \log \left(\sqrt[3]{\frac{x}{y}}\right)\right) - z
\] |
Simplified80.4%
[Start]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) + 2 \cdot \log \left(\sqrt[3]{\frac{x}{y}}\right)\right) - z
\] |
|---|---|
distribute-rgt1-in [=>]80.4% | \[ x \cdot \color{blue}{\left(\left(2 + 1\right) \cdot \log \left(\sqrt[3]{\frac{x}{y}}\right)\right)} - z
\] |
metadata-eval [=>]80.4% | \[ x \cdot \left(\color{blue}{3} \cdot \log \left(\sqrt[3]{\frac{x}{y}}\right)\right) - z
\] |
*-commutative [=>]80.4% | \[ x \cdot \color{blue}{\left(\log \left(\sqrt[3]{\frac{x}{y}}\right) \cdot 3\right)} - z
\] |
Applied egg-rr99.6%
[Start]80.4% | \[ x \cdot \left(\log \left(\sqrt[3]{\frac{x}{y}}\right) \cdot 3\right) - z
\] |
|---|---|
cbrt-div [=>]99.6% | \[ x \cdot \left(\log \color{blue}{\left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)} \cdot 3\right) - z
\] |
div-inv [=>]99.6% | \[ x \cdot \left(\log \color{blue}{\left(\sqrt[3]{x} \cdot \frac{1}{\sqrt[3]{y}}\right)} \cdot 3\right) - z
\] |
Simplified99.6%
[Start]99.6% | \[ x \cdot \left(\log \left(\sqrt[3]{x} \cdot \frac{1}{\sqrt[3]{y}}\right) \cdot 3\right) - z
\] |
|---|---|
associate-*r/ [=>]99.6% | \[ x \cdot \left(\log \color{blue}{\left(\frac{\sqrt[3]{x} \cdot 1}{\sqrt[3]{y}}\right)} \cdot 3\right) - z
\] |
*-rgt-identity [=>]99.6% | \[ x \cdot \left(\log \left(\frac{\color{blue}{\sqrt[3]{x}}}{\sqrt[3]{y}}\right) \cdot 3\right) - z
\] |
Final simplification99.6%
| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 19776 |
| Alternative 2 | |
|---|---|
| Accuracy | 87.8% |
| Cost | 26760 |
| Alternative 3 | |
|---|---|
| Accuracy | 87.8% |
| Cost | 20424 |
| Alternative 4 | |
|---|---|
| Accuracy | 91.0% |
| Cost | 13512 |
| Alternative 5 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 13508 |
| Alternative 6 | |
|---|---|
| Accuracy | 66.3% |
| Cost | 7249 |
| Alternative 7 | |
|---|---|
| Accuracy | 51.1% |
| Cost | 128 |
herbie shell --seed 2023263
(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))