Average Error: 0.1 → 0.1
Time: 8.2s
Precision: binary64
Cost: 448
\[\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3\]
↓
\[d1 \cdot \left(3 + \left(d2 + d3\right)\right)\]
\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3
↓
d1 \cdot \left(3 + \left(d2 + d3\right)\right)
(FPCore (d1 d2 d3) :precision binary64 (+ (+ (* d1 3.0) (* d1 d2)) (* d1 d3)))
↓
(FPCore (d1 d2 d3) :precision binary64 (* d1 (+ 3.0 (+ d2 d3))))
double code(double d1, double d2, double d3) {
return ((d1 * 3.0) + (d1 * d2)) + (d1 * d3);
}
↓
double code(double d1, double d2, double d3) {
return d1 * (3.0 + (d2 + d3));
}
Try it out
Enter valid numbers for all inputs
Target
| Original | 0.1 |
|---|
| Target | 0.1 |
|---|
| Herbie | 0.1 |
|---|
\[d1 \cdot \left(\left(3 + d2\right) + d3\right)\]
Alternatives
| Alternative 1 |
|---|
| Error | 1.3 |
|---|
| Cost | 20672 |
|---|
\[\sqrt[3]{d1 \cdot \left(3 + \left(d2 + d3\right)\right)} \cdot \left(\sqrt[3]{d1 \cdot \left(3 + \left(d2 + d3\right)\right)} \cdot \sqrt[3]{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\right)\]
| Alternative 2 |
|---|
| Error | 1.1 |
|---|
| Cost | 20416 |
|---|
\[\sqrt[3]{3 + \left(d2 + d3\right)} \cdot \left(d1 \cdot \left(\sqrt[3]{3 + \left(d2 + d3\right)} \cdot \sqrt[3]{3 + \left(d2 + d3\right)}\right)\right)\]
| Alternative 3 |
|---|
| Error | 1.4 |
|---|
| Cost | 19904 |
|---|
\[\left(\left(3 + \left(d2 + d3\right)\right) \cdot \sqrt[3]{d1}\right) \cdot \left(\sqrt[3]{d1} \cdot \sqrt[3]{d1}\right)\]
| Alternative 4 |
|---|
| Error | 1.4 |
|---|
| Cost | 19840 |
|---|
\[{\left(\sqrt[3]{d1}\right)}^{2} \cdot \left(\left(3 + \left(d2 + d3\right)\right) \cdot \sqrt[3]{d1}\right)\]
| Alternative 5 |
|---|
| Error | 31.9 |
|---|
| Cost | 13760 |
|---|
\[\sqrt{d1 \cdot \left(3 + \left(d2 + d3\right)\right)} \cdot \sqrt{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
| Alternative 6 |
|---|
| Error | 22.4 |
|---|
| Cost | 13632 |
|---|
\[\sqrt{3 + \left(d2 + d3\right)} \cdot \left(d1 \cdot \sqrt{3 + \left(d2 + d3\right)}\right)\]
| Alternative 7 |
|---|
| Error | 32.3 |
|---|
| Cost | 13376 |
|---|
\[\sqrt{d1} \cdot \left(\left(3 + \left(d2 + d3\right)\right) \cdot \sqrt{d1}\right)\]
| Alternative 8 |
|---|
| Error | 37.9 |
|---|
| Cost | 13312 |
|---|
\[\sqrt[3]{{\left(d1 \cdot \left(3 + \left(d2 + d3\right)\right)\right)}^{3}}\]
| Alternative 9 |
|---|
| Error | 35.8 |
|---|
| Cost | 8448 |
|---|
\[\frac{d1 \cdot \left(81 - \left(\left(d2 + d3\right) \cdot \left(d2 + d3\right)\right) \cdot \left(\left(d2 + d3\right) \cdot \left(d2 + d3\right)\right)\right)}{\left(3 - \left(d2 + d3\right)\right) \cdot \left(9 + {\left(d2 + d3\right)}^{2}\right)}\]
| Alternative 10 |
|---|
| Error | 35.8 |
|---|
| Cost | 7936 |
|---|
\[\frac{\frac{d1 \cdot \left(81 - {\left(d2 + d3\right)}^{4}\right)}{9 + \left(d2 + d3\right) \cdot \left(d2 + d3\right)}}{3 - \left(d2 + d3\right)}\]
| Alternative 11 |
|---|
| Error | 32.2 |
|---|
| Cost | 7936 |
|---|
\[\frac{d1 \cdot \left(27 + {\left(d2 + d3\right)}^{3}\right)}{9 + \left(\left(d2 + d3\right) \cdot \left(d2 + d3\right) - 3 \cdot \left(d2 + d3\right)\right)}\]
| Alternative 12 |
|---|
| Error | 32.2 |
|---|
| Cost | 7680 |
|---|
\[\frac{d1 \cdot \left(27 + {\left(d2 + d3\right)}^{3}\right)}{9 + \left(d2 + d3\right) \cdot \left(\left(d2 + d3\right) + -3\right)}\]
| Alternative 13 |
|---|
| Error | 25.8 |
|---|
| Cost | 7424 |
|---|
\[\frac{1}{\frac{3 - \left(d2 + d3\right)}{d1 \cdot \left(9 - {\left(d2 + d3\right)}^{2}\right)}}\]
| Alternative 14 |
|---|
| Error | 22.2 |
|---|
| Cost | 7296 |
|---|
\[\frac{d1}{\frac{3 - \left(d2 + d3\right)}{9 - {\left(d2 + d3\right)}^{2}}}\]
| Alternative 15 |
|---|
| Error | 25.8 |
|---|
| Cost | 1088 |
|---|
\[\frac{d1 \cdot \left(9 - \left(d2 + d3\right) \cdot \left(d2 + d3\right)\right)}{3 - \left(d2 + d3\right)}\]
| Alternative 16 |
|---|
| Error | 0.1 |
|---|
| Cost | 704 |
|---|
\[\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3\]
| Alternative 17 |
|---|
| Error | 34.5 |
|---|
| Cost | 704 |
|---|
\[\frac{d1 \cdot \left(9 - d3 \cdot d3\right)}{3 - d3}\]
| Alternative 18 |
|---|
| Error | 22.6 |
|---|
| Cost | 320 |
|---|
\[d1 \cdot \left(3 + d2\right)\]
| Alternative 19 |
|---|
| Error | 21.1 |
|---|
| Cost | 320 |
|---|
\[d1 \cdot \left(3 + d3\right)\]
| Alternative 20 |
|---|
| Error | 40.5 |
|---|
| Cost | 192 |
|---|
\[d1 \cdot d3\]
| Alternative 21 |
|---|
| Error | 42.0 |
|---|
| Cost | 192 |
|---|
\[d1 \cdot d2\]
| Alternative 22 |
|---|
| Error | 61.7 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 23 |
|---|
| Error | 62.0 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 24 |
|---|
| Error | 61.7 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
Initial program 0.1
\[\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3\]
Simplified0.1
\[\leadsto \color{blue}{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
Simplified0.1
\[\leadsto \color{blue}{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
Final simplification0.1
\[\leadsto d1 \cdot \left(3 + \left(d2 + d3\right)\right)\]
Reproduce
herbie shell --seed 2021022
(FPCore (d1 d2 d3)
:name "FastMath test3"
:precision binary64
:herbie-target
(* d1 (+ (+ 3.0 d2) d3))
(+ (+ (* d1 3.0) (* d1 d2)) (* d1 d3)))