
Time bar (total: 5.2s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 100% | 0% | 0% | 0% | 0% | 0 |
| 0% | 0% | 100% | 0% | 0% | 0% | 0% | 1 |
| 100% | 100% | 0% | 0% | 0% | 0% | 0% | 2 |
Compiled 10 to 5 computations (50% saved)
| 642.0ms | 8248× | body | 256 | valid |
| 1.0ms | 8× | body | 256 | infinite |
| 1× | egg-herbie |
| 82× | fma-def |
| 60× | associate-*r* |
| 31× | *-commutative |
| 18× | associate-*l* |
| 17× | associate-+r- |
| 131× | No Errors |
| 125× | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 39 |
| 1 | 33 | 39 |
| 2 | 75 | 39 |
| 3 | 215 | 39 |
| 4 | 389 | 39 |
| 5 | 480 | 39 |
| 1× | saturated |
| Inputs |
|---|
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x)))) |
| Outputs |
|---|
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
(hypot.f64 x x) |
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
(hypot.f64 x x) |
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x)))) |
(hypot.f64 x x) |
(abs x)
Compiled 30 to 9 computations (70% saved)
Compiled 4 to 2 computations (50% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 100.0% | (hypot.f64 x x) |
| ▶ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| ▶ | 100.0% | (hypot.f64 x x) |
| ▶ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
Compiled 26 to 12 computations (53.8% saved)
Found 3 expressions with local error:
| New | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 100.0% | (+.f64 (*.f64 x x) (*.f64 x x)) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
Compiled 25 to 6 computations (76% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | -inf | (hypot.f64 x x) |
| 1.0ms | x | @ | 0 | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 1.0ms | x | @ | inf | (+.f64 (*.f64 x x) (*.f64 x x)) |
| 0.0ms | x | @ | inf | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 0.0ms | x | @ | 0 | (hypot.f64 x x) |
| 1× | batch-egg-rewrite |
| 657× | associate-*r* |
| 411× | associate-*l* |
| 231× | *-un-lft-identity |
| 178× | add-sqr-sqrt |
| 158× | add-cube-cbrt |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 39 |
| 1 | 113 | 39 |
| 2 | 1252 | 39 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
(+.f64 (*.f64 x x) (*.f64 x x)) |
(hypot.f64 x x) |
| Outputs |
|---|
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
| 1× | egg-herbie |
| 683× | associate-+l+ |
| 528× | distribute-lft-neg-in |
| 501× | distribute-lft-in |
| 457× | fma-def |
| 325× | +-commutative |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 47 | 668 |
| 1 | 61 | 668 |
| 2 | 88 | 668 |
| 3 | 130 | 668 |
| 4 | 240 | 668 |
| 5 | 562 | 668 |
| 6 | 940 | 668 |
| 7 | 1553 | 668 |
| 8 | 1909 | 668 |
| 9 | 2835 | 668 |
| 10 | 3727 | 668 |
| 11 | 5053 | 668 |
| 12 | 7689 | 668 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
| Outputs |
|---|
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 2 (pow.f64 x 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 x (sqrt.f64 2)) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
(*.f64 -1 (*.f64 x (sqrt.f64 2))) |
(neg.f64 (*.f64 x (sqrt.f64 2))) |
(*.f64 (sqrt.f64 2) (neg.f64 x)) |
(*.f64 x (neg.f64 (sqrt.f64 2))) |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
-3 |
-2 |
-3/2 |
-1 |
-1/2 |
-1/4 |
0 |
1/16 |
1/12 |
1/8 |
1/6 |
1/4 |
3/8 |
1/2 |
2/3 |
3/4 |
1 |
4/3 |
3/2 |
7/4 |
2 |
9/4 |
5/2 |
3 |
13/4 |
7/2 |
4 |
9/2 |
5 |
6 |
8 |
9 |
12 |
16 |
18 |
64 |
Compiled 68 to 62 computations (8.8% saved)
6 alts after pruning (4 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 38 | 4 | 42 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 0 | 0 |
| Total | 38 | 6 | 44 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 | |
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 |
Compiled 42 to 28 computations (33.3% saved)
Compiled 1 to 1 computations (0% saved)
6 alts after pruning (4 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 0 | 0 |
| Fresh | 0 | 4 | 4 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 2 | 2 |
| Total | 0 | 6 | 6 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 | |
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 |
Compiled 42 to 28 computations (33.3% saved)
Compiled 1 to 1 computations (0% saved)
6 alts after pruning (4 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 0 | 0 |
| Fresh | 0 | 4 | 4 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 2 | 2 |
| Total | 0 | 6 | 6 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 | |
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 |
Compiled 42 to 28 computations (33.3% saved)
Compiled 1 to 1 computations (0% saved)
6 alts after pruning (4 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 0 | 0 |
| Fresh | 0 | 4 | 4 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 2 | 2 |
| Total | 0 | 6 | 6 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (hypot.f64 x x) |
| ✓ | 55.6% | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 5.4% | 64 | |
| 5.4% | 1 | |
| 5.3% | 1/16 | |
| 3.8% | 0 |
Compiled 37 to 23 computations (37.8% saved)
| Inputs |
|---|
0 |
1/16 |
1 |
64 |
(hypot.f64 x x) |
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| Outputs |
|---|
(hypot.f64 x x) |
4 calls:
| 109.0ms | (+.f64 (*.f64 x x) (*.f64 x x)) |
| 5.0ms | x |
| 4.0ms | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 4.0ms | (*.f64 x x) |
| Accuracy | Segments | Branch |
|---|---|---|
| 100.0% | 1 | x |
| 100.0% | 1 | (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) |
| 100.0% | 1 | (+.f64 (*.f64 x x) (*.f64 x x)) |
| 100.0% | 1 | (*.f64 x x) |
Compiled 39 to 19 computations (51.3% saved)
| Inputs |
|---|
0 |
1/16 |
1 |
64 |
| Outputs |
|---|
1 |
1 calls:
| 5.0ms | x |
| Accuracy | Segments | Branch |
|---|---|---|
| 5.4% | 1 | x |
Compiled 7 to 6 computations (14.3% saved)
| Inputs |
|---|
0 |
1/16 |
| Outputs |
|---|
1/16 |
1 calls:
| 3.0ms | x |
| Accuracy | Segments | Branch |
|---|---|---|
| 5.3% | 1 | x |
Compiled 5 to 4 computations (20% saved)
Total 0.0b remaining (0%)
Threshold costs 0b (0%)
| Inputs |
|---|
0 |
| Outputs |
|---|
0 |
1 calls:
| 3.0ms | x |
| Accuracy | Segments | Branch |
|---|---|---|
| 3.8% | 1 | x |
Compiled 4 to 3 computations (25% saved)
| 1× | egg-herbie |
| 3× | 1-exp |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 16 |
| 1 | 14 | 16 |
| 1× | fuel |
| 1× | saturated |
| Inputs |
|---|
(hypot.f64 x x) |
1 |
1/16 |
0 |
| Outputs |
|---|
(hypot.f64 x x) |
1 |
1/16 |
0 |
Compiled 10 to 8 computations (20% saved)
| 657× | associate-*r* |
| 657× | associate-*r* |
| 657× | associate-*r* |
| 411× | associate-*l* |
| 411× | associate-*l* |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 39 |
| 1 | 33 | 39 |
| 2 | 75 | 39 |
| 3 | 215 | 39 |
| 4 | 389 | 39 |
| 5 | 480 | 39 |
| 0 | 10 | 39 |
| 1 | 113 | 39 |
| 2 | 1252 | 39 |
| 0 | 10 | 39 |
| 1 | 113 | 39 |
| 2 | 1252 | 39 |
| 0 | 10 | 39 |
| 1 | 113 | 39 |
| 2 | 1252 | 39 |
| 1× | node limit |
| 1× | node limit |
| 1× | node limit |
| 1× | saturated |
Compiled 12 to 5 computations (58.3% saved)
(abs x)
Compiled 40 to 22 computations (45% saved)
Loading profile data...