| Alternative 1 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 7872 |
\[\frac{2}{r \cdot r} + \left(-1.5 - \frac{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right)
\]

(FPCore (v w r) :precision binary64 (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))
(FPCore (v w r) :precision binary64 (+ (/ 2.0 (* r r)) (- -1.5 (/ (* (* r w) (* r w)) (/ (- 1.0 v) (fma v -0.25 0.375))))))
double code(double v, double w, double r) {
return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
double code(double v, double w, double r) {
return (2.0 / (r * r)) + (-1.5 - (((r * w) * (r * w)) / ((1.0 - v) / fma(v, -0.25, 0.375))));
}
function code(v, w, r) return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5) end
function code(v, w, r) return Float64(Float64(2.0 / Float64(r * r)) + Float64(-1.5 - Float64(Float64(Float64(r * w) * Float64(r * w)) / Float64(Float64(1.0 - v) / fma(v, -0.25, 0.375))))) end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
code[v_, w_, r_] := N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] + N[(-1.5 - N[(N[(N[(r * w), $MachinePrecision] * N[(r * w), $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 - v), $MachinePrecision] / N[(v * -0.25 + 0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\begin{array}{l}
\\
\frac{2}{r \cdot r} + \left(-1.5 - \frac{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right)
\end{array}
Herbie found 9 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 85.9%
Simplified88.8%
[Start]85.9% | \[ \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\] |
|---|---|
associate--l- [=>]85.9% | \[ \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v} + 4.5\right)}
\] |
+-commutative [=>]85.9% | \[ \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v} + 4.5\right)
\] |
associate--l+ [=>]85.9% | \[ \color{blue}{\frac{2}{r \cdot r} + \left(3 - \left(\frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v} + 4.5\right)\right)}
\] |
+-commutative [=>]85.9% | \[ \frac{2}{r \cdot r} + \left(3 - \color{blue}{\left(4.5 + \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right)
\] |
associate--r+ [=>]85.9% | \[ \frac{2}{r \cdot r} + \color{blue}{\left(\left(3 - 4.5\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}
\] |
metadata-eval [=>]85.9% | \[ \frac{2}{r \cdot r} + \left(\color{blue}{-1.5} - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)
\] |
associate-*l/ [<=]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \color{blue}{\frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v} \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}\right)
\] |
*-commutative [=>]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right) \cdot \frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}}\right)
\] |
*-commutative [=>]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \color{blue}{\left(r \cdot \left(\left(w \cdot w\right) \cdot r\right)\right)} \cdot \frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}\right)
\] |
*-commutative [=>]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \color{blue}{\left(r \cdot \left(w \cdot w\right)\right)}\right) \cdot \frac{0.125 \cdot \left(3 - 2 \cdot v\right)}{1 - v}\right)
\] |
Taylor expanded in r around 0 88.8%
Simplified97.1%
[Start]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \left({w}^{2} \cdot r\right)\right) \cdot \frac{0.375 + v \cdot -0.25}{1 - v}\right)
\] |
|---|---|
unpow2 [=>]88.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot r\right)\right) \cdot \frac{0.375 + v \cdot -0.25}{1 - v}\right)
\] |
associate-*l* [=>]97.1% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \color{blue}{\left(w \cdot \left(w \cdot r\right)\right)}\right) \cdot \frac{0.375 + v \cdot -0.25}{1 - v}\right)
\] |
Applied egg-rr99.8%
[Start]97.1% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \left(w \cdot \left(w \cdot r\right)\right)\right) \cdot \frac{0.375 + v \cdot -0.25}{1 - v}\right)
\] |
|---|---|
clear-num [=>]97.1% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \left(r \cdot \left(w \cdot \left(w \cdot r\right)\right)\right) \cdot \color{blue}{\frac{1}{\frac{1 - v}{0.375 + v \cdot -0.25}}}\right)
\] |
un-div-inv [=>]97.1% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \color{blue}{\frac{r \cdot \left(w \cdot \left(w \cdot r\right)\right)}{\frac{1 - v}{0.375 + v \cdot -0.25}}}\right)
\] |
associate-*r* [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{\color{blue}{\left(r \cdot w\right) \cdot \left(w \cdot r\right)}}{\frac{1 - v}{0.375 + v \cdot -0.25}}\right)
\] |
*-commutative [<=]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)}{\frac{1 - v}{0.375 + v \cdot -0.25}}\right)
\] |
pow2 [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{\color{blue}{{\left(w \cdot r\right)}^{2}}}{\frac{1 - v}{0.375 + v \cdot -0.25}}\right)
\] |
*-commutative [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{{\color{blue}{\left(r \cdot w\right)}}^{2}}{\frac{1 - v}{0.375 + v \cdot -0.25}}\right)
\] |
+-commutative [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{{\left(r \cdot w\right)}^{2}}{\frac{1 - v}{\color{blue}{v \cdot -0.25 + 0.375}}}\right)
\] |
fma-def [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{{\left(r \cdot w\right)}^{2}}{\frac{1 - v}{\color{blue}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}}\right)
\] |
Applied egg-rr99.8%
[Start]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{{\left(r \cdot w\right)}^{2}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right)
\] |
|---|---|
unpow2 [=>]99.8% | \[ \frac{2}{r \cdot r} + \left(-1.5 - \frac{\color{blue}{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right)
\] |
Final simplification99.8%
| Alternative 1 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 7872 |
| Alternative 2 | |
|---|---|
| Accuracy | 96.8% |
| Cost | 1600 |
| Alternative 3 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 1600 |
| Alternative 4 | |
|---|---|
| Accuracy | 96.5% |
| Cost | 1481 |
| Alternative 5 | |
|---|---|
| Accuracy | 85.4% |
| Cost | 1353 |
| Alternative 6 | |
|---|---|
| Accuracy | 85.1% |
| Cost | 1353 |
| Alternative 7 | |
|---|---|
| Accuracy | 90.8% |
| Cost | 1216 |
| Alternative 8 | |
|---|---|
| Accuracy | 57.3% |
| Cost | 448 |
| Alternative 9 | |
|---|---|
| Accuracy | 57.3% |
| Cost | 448 |
herbie shell --seed 2023167
(FPCore (v w r)
:name "Rosa's TurbineBenchmark"
:precision binary64
(- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))