| Alternative 1 | |
|---|---|
| Accuracy | 98.1% |
| Cost | 7360 |
\[\mathsf{fma}\left(x, y, \frac{z}{\frac{16}{t}}\right) + \left(c - \frac{a}{\frac{4}{b}}\right)
\]

(FPCore (x y z t a b c) :precision binary64 (+ (- (+ (* x y) (/ (* z t) 16.0)) (/ (* a b) 4.0)) c))
(FPCore (x y z t a b c) :precision binary64 (+ (fma x y (/ z (/ 16.0 t))) (- c (/ a (/ 4.0 b)))))
double code(double x, double y, double z, double t, double a, double b, double c) {
return (((x * y) + ((z * t) / 16.0)) - ((a * b) / 4.0)) + c;
}
double code(double x, double y, double z, double t, double a, double b, double c) {
return fma(x, y, (z / (16.0 / t))) + (c - (a / (4.0 / b)));
}
function code(x, y, z, t, a, b, c) return Float64(Float64(Float64(Float64(x * y) + Float64(Float64(z * t) / 16.0)) - Float64(Float64(a * b) / 4.0)) + c) end
function code(x, y, z, t, a, b, c) return Float64(fma(x, y, Float64(z / Float64(16.0 / t))) + Float64(c - Float64(a / Float64(4.0 / b)))) end
code[x_, y_, z_, t_, a_, b_, c_] := N[(N[(N[(N[(x * y), $MachinePrecision] + N[(N[(z * t), $MachinePrecision] / 16.0), $MachinePrecision]), $MachinePrecision] - N[(N[(a * b), $MachinePrecision] / 4.0), $MachinePrecision]), $MachinePrecision] + c), $MachinePrecision]
code[x_, y_, z_, t_, a_, b_, c_] := N[(N[(x * y + N[(z / N[(16.0 / t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(c - N[(a / N[(4.0 / b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c
\mathsf{fma}\left(x, y, \frac{z}{\frac{16}{t}}\right) + \left(c - \frac{a}{\frac{4}{b}}\right)
Herbie found 15 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 98.8%
Simplified99.5%
[Start]98.8% | \[ \left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c
\] |
|---|---|
associate-+l- [=>]98.8% | \[ \color{blue}{\left(x \cdot y + \frac{z \cdot t}{16}\right) - \left(\frac{a \cdot b}{4} - c\right)}
\] |
sub-neg [=>]98.8% | \[ \color{blue}{\left(x \cdot y + \frac{z \cdot t}{16}\right) + \left(-\left(\frac{a \cdot b}{4} - c\right)\right)}
\] |
neg-mul-1 [=>]98.8% | \[ \left(x \cdot y + \frac{z \cdot t}{16}\right) + \color{blue}{-1 \cdot \left(\frac{a \cdot b}{4} - c\right)}
\] |
metadata-eval [<=]98.8% | \[ \left(x \cdot y + \frac{z \cdot t}{16}\right) + \color{blue}{\left(-1\right)} \cdot \left(\frac{a \cdot b}{4} - c\right)
\] |
metadata-eval [<=]98.8% | \[ \left(x \cdot y + \frac{z \cdot t}{16}\right) + \left(-\color{blue}{\left(--1\right)}\right) \cdot \left(\frac{a \cdot b}{4} - c\right)
\] |
cancel-sign-sub-inv [<=]98.8% | \[ \color{blue}{\left(x \cdot y + \frac{z \cdot t}{16}\right) - \left(--1\right) \cdot \left(\frac{a \cdot b}{4} - c\right)}
\] |
fma-def [=>]99.6% | \[ \color{blue}{\mathsf{fma}\left(x, y, \frac{z \cdot t}{16}\right)} - \left(--1\right) \cdot \left(\frac{a \cdot b}{4} - c\right)
\] |
associate-/l* [=>]99.6% | \[ \mathsf{fma}\left(x, y, \color{blue}{\frac{z}{\frac{16}{t}}}\right) - \left(--1\right) \cdot \left(\frac{a \cdot b}{4} - c\right)
\] |
metadata-eval [=>]99.6% | \[ \mathsf{fma}\left(x, y, \frac{z}{\frac{16}{t}}\right) - \color{blue}{1} \cdot \left(\frac{a \cdot b}{4} - c\right)
\] |
*-lft-identity [=>]99.6% | \[ \mathsf{fma}\left(x, y, \frac{z}{\frac{16}{t}}\right) - \color{blue}{\left(\frac{a \cdot b}{4} - c\right)}
\] |
associate-/l* [=>]99.5% | \[ \mathsf{fma}\left(x, y, \frac{z}{\frac{16}{t}}\right) - \left(\color{blue}{\frac{a}{\frac{4}{b}}} - c\right)
\] |
Final simplification99.5%
| Alternative 1 | |
|---|---|
| Accuracy | 98.1% |
| Cost | 7360 |
| Alternative 2 | |
|---|---|
| Accuracy | 66.0% |
| Cost | 2396 |
| Alternative 3 | |
|---|---|
| Accuracy | 89.1% |
| Cost | 1353 |
| Alternative 4 | |
|---|---|
| Accuracy | 39.1% |
| Cost | 1244 |
| Alternative 5 | |
|---|---|
| Accuracy | 86.9% |
| Cost | 1225 |
| Alternative 6 | |
|---|---|
| Accuracy | 89.0% |
| Cost | 1225 |
| Alternative 7 | |
|---|---|
| Accuracy | 86.9% |
| Cost | 1224 |
| Alternative 8 | |
|---|---|
| Accuracy | 62.8% |
| Cost | 1104 |
| Alternative 9 | |
|---|---|
| Accuracy | 97.8% |
| Cost | 1088 |
| Alternative 10 | |
|---|---|
| Accuracy | 65.1% |
| Cost | 969 |
| Alternative 11 | |
|---|---|
| Accuracy | 39.3% |
| Cost | 848 |
| Alternative 12 | |
|---|---|
| Accuracy | 60.9% |
| Cost | 713 |
| Alternative 13 | |
|---|---|
| Accuracy | 55.4% |
| Cost | 585 |
| Alternative 14 | |
|---|---|
| Accuracy | 37.4% |
| Cost | 456 |
| Alternative 15 | |
|---|---|
| Accuracy | 22.7% |
| Cost | 64 |
herbie shell --seed 2023263
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:quartForm from diagrams-solve-0.1, C"
:precision binary64
(+ (- (+ (* x y) (/ (* z t) 16.0)) (/ (* a b) 4.0)) c))