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));
}

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.1
Target0.1
Herbie0.1
\[d1 \cdot \left(\left(3 + d2\right) + d3\right)\]

Alternatives

Alternative 1
Error1.3
Cost20672
\[\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
Error1.1
Cost20416
\[\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
Error1.4
Cost19904
\[\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
Error1.4
Cost19840
\[{\left(\sqrt[3]{d1}\right)}^{2} \cdot \left(\left(3 + \left(d2 + d3\right)\right) \cdot \sqrt[3]{d1}\right)\]
Alternative 5
Error31.9
Cost13760
\[\sqrt{d1 \cdot \left(3 + \left(d2 + d3\right)\right)} \cdot \sqrt{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
Alternative 6
Error22.4
Cost13632
\[\sqrt{3 + \left(d2 + d3\right)} \cdot \left(d1 \cdot \sqrt{3 + \left(d2 + d3\right)}\right)\]
Alternative 7
Error32.3
Cost13376
\[\sqrt{d1} \cdot \left(\left(3 + \left(d2 + d3\right)\right) \cdot \sqrt{d1}\right)\]
Alternative 8
Error37.9
Cost13312
\[\sqrt[3]{{\left(d1 \cdot \left(3 + \left(d2 + d3\right)\right)\right)}^{3}}\]
Alternative 9
Error35.8
Cost8448
\[\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
Error35.8
Cost7936
\[\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
Error32.2
Cost7936
\[\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
Error32.2
Cost7680
\[\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
Error25.8
Cost7424
\[\frac{1}{\frac{3 - \left(d2 + d3\right)}{d1 \cdot \left(9 - {\left(d2 + d3\right)}^{2}\right)}}\]
Alternative 14
Error22.2
Cost7296
\[\frac{d1}{\frac{3 - \left(d2 + d3\right)}{9 - {\left(d2 + d3\right)}^{2}}}\]
Alternative 15
Error25.8
Cost1088
\[\frac{d1 \cdot \left(9 - \left(d2 + d3\right) \cdot \left(d2 + d3\right)\right)}{3 - \left(d2 + d3\right)}\]
Alternative 16
Error0.1
Cost704
\[\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3\]
Alternative 17
Error34.5
Cost704
\[\frac{d1 \cdot \left(9 - d3 \cdot d3\right)}{3 - d3}\]
Alternative 18
Error22.6
Cost320
\[d1 \cdot \left(3 + d2\right)\]
Alternative 19
Error21.1
Cost320
\[d1 \cdot \left(3 + d3\right)\]
Alternative 20
Error40.5
Cost192
\[d1 \cdot d3\]
Alternative 21
Error42.0
Cost192
\[d1 \cdot d2\]
Alternative 22
Error61.7
Cost64
\[1\]
Alternative 23
Error62.0
Cost64
\[0\]
Alternative 24
Error61.7
Cost64
\[-1\]

Error

Derivation

  1. Initial program 0.1

    \[\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3\]
  2. Simplified0.1

    \[\leadsto \color{blue}{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
  3. Simplified0.1

    \[\leadsto \color{blue}{d1 \cdot \left(3 + \left(d2 + d3\right)\right)}\]
  4. 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)))