| Alternative 1 | |
|---|---|
| Accuracy | 72.8% |
| Cost | 520 |
(FPCore (x y z) :precision binary64 (- x (* y z)))
(FPCore (x y z) :precision binary64 (fma (- y) z x))
double code(double x, double y, double z) {
return x - (y * z);
}
double code(double x, double y, double z) {
return fma(-y, z, x);
}
function code(x, y, z) return Float64(x - Float64(y * z)) end
function code(x, y, z) return fma(Float64(-y), z, x) end
code[x_, y_, z_] := N[(x - N[(y * z), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_] := N[((-y) * z + x), $MachinePrecision]
x - y \cdot z
\mathsf{fma}\left(-y, z, x\right)
| Original | 100.0% |
|---|---|
| Target | 100.0% |
| Herbie | 100.0% |
Initial program 100.0%
Applied egg-rr36.7%
[Start]100.0 | \[ x - y \cdot z
\] |
|---|---|
sub-neg [=>]100.0 | \[ \color{blue}{x + \left(-y \cdot z\right)}
\] |
flip3-+ [=>]36.7 | \[ \color{blue}{\frac{{x}^{3} + {\left(-y \cdot z\right)}^{3}}{x \cdot x + \left(\left(-y \cdot z\right) \cdot \left(-y \cdot z\right) - x \cdot \left(-y \cdot z\right)\right)}}
\] |
distribute-rgt-neg-in [=>]36.7 | \[ \frac{{x}^{3} + {\color{blue}{\left(y \cdot \left(-z\right)\right)}}^{3}}{x \cdot x + \left(\left(-y \cdot z\right) \cdot \left(-y \cdot z\right) - x \cdot \left(-y \cdot z\right)\right)}
\] |
distribute-rgt-neg-in [=>]36.7 | \[ \frac{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}}{x \cdot x + \left(\color{blue}{\left(y \cdot \left(-z\right)\right)} \cdot \left(-y \cdot z\right) - x \cdot \left(-y \cdot z\right)\right)}
\] |
distribute-rgt-neg-in [=>]36.7 | \[ \frac{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \color{blue}{\left(y \cdot \left(-z\right)\right)} - x \cdot \left(-y \cdot z\right)\right)}
\] |
distribute-rgt-neg-in [=>]36.7 | \[ \frac{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \color{blue}{\left(y \cdot \left(-z\right)\right)}\right)}
\] |
Applied egg-rr9.7%
[Start]36.7 | \[ \frac{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
|---|---|
add-sqr-sqrt [=>]18.2 | \[ \frac{\color{blue}{\sqrt{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}} \cdot \sqrt{{x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
sqrt-unprod [=>]9.8 | \[ \frac{\color{blue}{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right)}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
distribute-rgt-neg-out [=>]9.8 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + {\color{blue}{\left(-y \cdot z\right)}}^{3}\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
cube-neg [=>]9.8 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \color{blue}{\left(-{\left(y \cdot z\right)}^{3}\right)}\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
add-sqr-sqrt [=>]4.9 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \left(-{\left(y \cdot \color{blue}{\left(\sqrt{z} \cdot \sqrt{z}\right)}\right)}^{3}\right)\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
sqrt-unprod [=>]6.4 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \left(-{\left(y \cdot \color{blue}{\sqrt{z \cdot z}}\right)}^{3}\right)\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
sqr-neg [<=]6.4 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \left(-{\left(y \cdot \sqrt{\color{blue}{\left(-z\right) \cdot \left(-z\right)}}\right)}^{3}\right)\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
sqrt-unprod [<=]2.7 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \left(-{\left(y \cdot \color{blue}{\left(\sqrt{-z} \cdot \sqrt{-z}\right)}\right)}^{3}\right)\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
add-sqr-sqrt [<=]5.3 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \left({x}^{3} + \left(-{\left(y \cdot \color{blue}{\left(-z\right)}\right)}^{3}\right)\right)}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
sub-neg [<=]5.3 | \[ \frac{\sqrt{\left({x}^{3} + {\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot \color{blue}{\left({x}^{3} - {\left(y \cdot \left(-z\right)\right)}^{3}\right)}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
difference-of-squares [<=]5.3 | \[ \frac{\sqrt{\color{blue}{{x}^{3} \cdot {x}^{3} - {\left(y \cdot \left(-z\right)\right)}^{3} \cdot {\left(y \cdot \left(-z\right)\right)}^{3}}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
cancel-sign-sub-inv [=>]5.3 | \[ \frac{\sqrt{\color{blue}{{x}^{3} \cdot {x}^{3} + \left(-{\left(y \cdot \left(-z\right)\right)}^{3}\right) \cdot {\left(y \cdot \left(-z\right)\right)}^{3}}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
Applied egg-rr9.7%
[Start]9.7 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) - x \cdot \left(y \cdot \left(-z\right)\right)\right)}
\] |
|---|---|
sub-neg [=>]9.7 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \color{blue}{\left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(-x \cdot \left(y \cdot \left(-z\right)\right)\right)\right)}}
\] |
associate-*r* [=>]9.6 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(-\color{blue}{\left(x \cdot y\right) \cdot \left(-z\right)}\right)\right)}
\] |
distribute-rgt-neg-in [=>]9.6 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \color{blue}{\left(x \cdot y\right) \cdot \left(-\left(-z\right)\right)}\right)}
\] |
add-sqr-sqrt [=>]4.8 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(x \cdot y\right) \cdot \left(-\color{blue}{\sqrt{-z} \cdot \sqrt{-z}}\right)\right)}
\] |
sqrt-unprod [=>]8.3 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(x \cdot y\right) \cdot \left(-\color{blue}{\sqrt{\left(-z\right) \cdot \left(-z\right)}}\right)\right)}
\] |
sqr-neg [=>]8.3 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(x \cdot y\right) \cdot \left(-\sqrt{\color{blue}{z \cdot z}}\right)\right)}
\] |
sqrt-unprod [<=]4.8 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(x \cdot y\right) \cdot \left(-\color{blue}{\sqrt{z} \cdot \sqrt{z}}\right)\right)}
\] |
add-sqr-sqrt [<=]9.6 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \left(x \cdot y\right) \cdot \left(-\color{blue}{z}\right)\right)}
\] |
associate-*r* [<=]9.6 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right)\right) + \color{blue}{x \cdot \left(y \cdot \left(-z\right)\right)}\right)}
\] |
distribute-rgt-out [=>]9.6 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \color{blue}{\left(y \cdot \left(-z\right)\right) \cdot \left(y \cdot \left(-z\right) + x\right)}}
\] |
add-sqr-sqrt [=>]4.8 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot \color{blue}{\left(\sqrt{-z} \cdot \sqrt{-z}\right)}\right) \cdot \left(y \cdot \left(-z\right) + x\right)}
\] |
sqrt-unprod [=>]7.5 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot \color{blue}{\sqrt{\left(-z\right) \cdot \left(-z\right)}}\right) \cdot \left(y \cdot \left(-z\right) + x\right)}
\] |
sqr-neg [=>]7.5 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot \sqrt{\color{blue}{z \cdot z}}\right) \cdot \left(y \cdot \left(-z\right) + x\right)}
\] |
sqrt-unprod [<=]5.1 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot \color{blue}{\left(\sqrt{z} \cdot \sqrt{z}\right)}\right) \cdot \left(y \cdot \left(-z\right) + x\right)}
\] |
add-sqr-sqrt [<=]10.0 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot \color{blue}{z}\right) \cdot \left(y \cdot \left(-z\right) + x\right)}
\] |
+-commutative [<=]10.0 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \color{blue}{\left(x + y \cdot \left(-z\right)\right)}}
\] |
add-sqr-sqrt [=>]4.8 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \left(x + y \cdot \color{blue}{\left(\sqrt{-z} \cdot \sqrt{-z}\right)}\right)}
\] |
sqrt-unprod [=>]7.7 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \left(x + y \cdot \color{blue}{\sqrt{\left(-z\right) \cdot \left(-z\right)}}\right)}
\] |
sqr-neg [=>]7.7 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \left(x + y \cdot \sqrt{\color{blue}{z \cdot z}}\right)}
\] |
sqrt-unprod [<=]4.9 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \left(x + y \cdot \color{blue}{\left(\sqrt{z} \cdot \sqrt{z}\right)}\right)}
\] |
add-sqr-sqrt [<=]9.7 | \[ \frac{\sqrt{{\left(y \cdot z\right)}^{6} + {x}^{6}}}{x \cdot x + \left(y \cdot z\right) \cdot \left(x + y \cdot \color{blue}{z}\right)}
\] |
Taylor expanded in y around 0 100.0%
Simplified100.0%
[Start]100.0 | \[ -1 \cdot \left(y \cdot z\right) + x
\] |
|---|---|
associate-*r* [=>]100.0 | \[ \color{blue}{\left(-1 \cdot y\right) \cdot z} + x
\] |
fma-def [=>]100.0 | \[ \color{blue}{\mathsf{fma}\left(-1 \cdot y, z, x\right)}
\] |
mul-1-neg [=>]100.0 | \[ \mathsf{fma}\left(\color{blue}{-y}, z, x\right)
\] |
Final simplification100.0%
| Alternative 1 | |
|---|---|
| Accuracy | 72.8% |
| Cost | 520 |
| Alternative 2 | |
|---|---|
| Accuracy | 100.0% |
| Cost | 320 |
| Alternative 3 | |
|---|---|
| Accuracy | 58.5% |
| Cost | 64 |
herbie shell --seed 2023143
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, C"
:precision binary64
:herbie-target
(/ (+ x (* y z)) (/ (+ x (* y z)) (- x (* y z))))
(- x (* y z)))