Time bar (total: 8.9s)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 0% | 99.8% | 0.2% | 0 |
| 0% | 99.8% | 0.2% | 1 |
| 0% | 99.8% | 0.2% | 2 |
| 0% | 99.8% | 0.2% | 3 |
| 0% | 99.8% | 0.2% | 4 |
| 0% | 99.8% | 0.2% | 5 |
| 0% | 99.8% | 0.2% | 6 |
| 0% | 99.8% | 0.2% | 7 |
| 6.2% | 93.6% | 0.2% | 8 |
| 25% | 74.9% | 0.2% | 9 |
| 28.1% | 71.7% | 0.2% | 10 |
| 29.6% | 70.2% | 0.2% | 11 |
| 53% | 46.8% | 0.2% | 12 |
| 71.3% | 28.5% | 0.2% | 13 |
| 71.7% | 28.1% | 0.2% | 14 |
Compiled 20 to 12 computations (40% saved)
| 1.0s | 8256× | body | 128 | valid |
| 55.0ms | 467× | body | 128 | invalid |
Compiled 59 to 35 computations (40.7% saved)
| 1× | egg-herbie |
| 1070× | fma-neg_binary64 |
| 881× | fma-def_binary64 |
| 768× | times-frac_binary64 |
| 551× | cancel-sign-sub-inv_binary64 |
| 514× | unsub-neg_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 12 | 20 |
| 1 | 25 | 20 |
| 2 | 47 | 20 |
| 3 | 78 | 20 |
| 4 | 149 | 20 |
| 5 | 228 | 20 |
| 6 | 324 | 20 |
| 7 | 500 | 20 |
| 8 | 694 | 20 |
| 9 | 867 | 20 |
| 10 | 999 | 20 |
| 11 | 2422 | 20 |
| 12 | 3920 | 20 |
| 13 | 4950 | 20 |
1 alts after pruning (1 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 1 | 1 | 2 |
| Fresh | 1 | 0 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 2 | 1 | 3 |
| Status | Error | Program |
| ▶ | 25.3b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
Compiled 69 to 33 computations (52.2% saved)
Found 2 expressions with local error:
| New | Error | Program |
| ✓ | 0.3b | (-.f64 (*.f64 b c) (*.f64 a d)) |
| ✓ | 24.9b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
2 calls:
| 83.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
| 8.0ms | (-.f64 (*.f64 b c) (*.f64 a d)) |
| 2× | batch-egg-rewrite |
| 449× | fma-def_binary64 |
| 239× | fma-neg_binary64 |
| 227× | expm1-udef_binary64 |
| 227× | log1p-udef_binary64 |
| 224× | egg-rr |
2 calls:
| 73.0ms | (-.f64 (*.f64 b c) (*.f64 a d)) |
| 73.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 11 | 30 |
| 1 | 244 | 29 |
| 2 | 3323 | 29 |
| 3 | 5042 | 29 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 905× | fma-neg_binary64 |
| 615× | fma-def_binary64 |
| 483× | associate-*l/_binary64 |
| 469× | cancel-sign-sub-inv_binary64 |
| 360× | associate-/r/_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 47 | 1722 |
| 1 | 131 | 1638 |
| 2 | 372 | 1599 |
| 3 | 1558 | 1554 |
| 4 | 4686 | 1554 |
| 5 | 5175 | 1554 |
9 alts after pruning (8 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 241 | 8 | 249 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 241 | 9 | 250 |
| Status | Error | Program |
| 41.2b | (pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2) | |
| 34.2b | (neg.f64 (/.f64 a d)) | |
| ▶ | 15.3b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)))) |
| 32.7b | (-.f64 (*.f64 (/.f64 c (*.f64 d d)) (+.f64 b (/.f64 (*.f64 a c) d))) (/.f64 a d)) | |
| 17.5b | (*.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) 2) (hypot.f64 c d)) (/.f64 (cbrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d))) | |
| 17.0b | (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (hypot.f64 c d))) | |
| 41.0b | (-.f64 (/.f64 b c) (*.f64 (/.f64 d (*.f64 c c)) (+.f64 a (/.f64 (*.f64 d b) c)))) | |
| 41.6b | (/.f64 b c) | |
| ✓ | 25.3b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
Compiled 6322 to 1602 computations (74.7% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.0b | (/.f64 c (hypot.f64 c d)) |
| ✓ | 0.0b | (pow.f64 (hypot.f64 c d) 2) |
| ✓ | 0.3b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)))) |
| ✓ | 16.8b | (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)) |
4 calls:
| 234.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)))) |
| 95.0ms | (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)) |
| 47.0ms | (pow.f64 (hypot.f64 c d) 2) |
| 20.0ms | (/.f64 c (hypot.f64 c d)) |
| 2× | batch-egg-rewrite |
| 598× | prod-diff_binary64 |
| 581× | egg-rr |
| 254× | log1p-udef_binary64 |
| 152× | add-sqr-sqrt_binary64 |
| 142× | log1p-expm1-u_binary64 |
4 calls:
| 185.0ms | (/.f64 c (hypot.f64 c d)) |
| 185.0ms | (pow.f64 (hypot.f64 c d) 2) |
| 185.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)))) |
| 185.0ms | (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2)) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 14 | 58 |
| 1 | 303 | 55 |
| 2 | 3692 | 55 |
| 3 | 5297 | 55 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 632× | times-frac_binary64 |
| 407× | associate-/l*_binary64 |
| 291× | associate-/r*_binary64 |
| 280× | cancel-sign-sub-inv_binary64 |
| 258× | sub-neg_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 108 | 2980 |
| 1 | 319 | 2826 |
| 2 | 1013 | 2708 |
| 3 | 4632 | 2681 |
| 4 | 5015 | 2681 |
7 alts after pruning (6 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 650 | 4 | 654 |
| Fresh | 5 | 2 | 7 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 1 | 1 |
| Total | 656 | 7 | 663 |
| Status | Error | Program |
| 13.1b | (+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| ✓ | 25.3b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
| 12.5b | (+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| 41.2b | (pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2) | |
| 17.0b | (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (hypot.f64 c d))) | |
| ▶ | 0.6b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 15.4b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2))))) |
Compiled 34068 to 12307 computations (63.9% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.0b | (/.f64 b (hypot.f64 c d)) |
| 0.0b | (/.f64 c (hypot.f64 c d)) | |
| ✓ | 0.3b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| ✓ | 0.4b | (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))) |
3 calls:
| 237.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 92.0ms | (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))) |
| 76.0ms | (/.f64 b (hypot.f64 c d)) |
| 2× | batch-egg-rewrite |
| 691× | prod-diff_binary64 |
| 650× | egg-rr |
| 148× | add-sqr-sqrt_binary64 |
| 137× | log1p-expm1-u_binary64 |
| 137× | expm1-log1p-u_binary64 |
3 calls:
| 217.0ms | (/.f64 b (hypot.f64 c d)) |
| 217.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 217.0ms | (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 57 |
| 1 | 289 | 48 |
| 2 | 3842 | 48 |
| 3 | 5238 | 48 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 754× | fma-neg_binary64 |
| 547× | times-frac_binary64 |
| 474× | associate-/l*_binary64 |
| 300× | associate-/r*_binary64 |
| 291× | cancel-sign-sub-inv_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 116 | 3142 |
| 1 | 345 | 2998 |
| 2 | 1106 | 2880 |
| 3 | 4638 | 2880 |
| 4 | 5222 | 2880 |
7 alts after pruning (6 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 779 | 2 | 781 |
| Fresh | 1 | 4 | 5 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 1 | 1 |
| Total | 781 | 7 | 788 |
| Status | Error | Program |
| 13.1b | (+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| ✓ | 25.3b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
| 12.5b | (+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| 41.2b | (pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2) | |
| ▶ | 0.7b | (fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 15.4b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2))))) | |
| 9.7b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 d (*.f64 (/.f64 (hypot.f64 c d) a) (hypot.f64 c d))))) |
Compiled 43412 to 11489 computations (73.5% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.2b | (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) |
| ✓ | 0.3b | (fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| ✓ | 0.4b | (/.f64 c (sqrt.f64 (hypot.f64 c d))) |
| 0.4b | (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))) |
3 calls:
| 229.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 28.0ms | (/.f64 c (sqrt.f64 (hypot.f64 c d))) |
| 19.0ms | (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) |
| 2× | batch-egg-rewrite |
| 794× | prod-diff_binary64 |
| 698× | egg-rr |
| 181× | add-sqr-sqrt_binary64 |
| 168× | log1p-expm1-u_binary64 |
| 168× | expm1-log1p-u_binary64 |
3 calls:
| 267.0ms | (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) |
| 267.0ms | (fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 267.0ms | (/.f64 c (sqrt.f64 (hypot.f64 c d))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 17 | 50 |
| 1 | 369 | 44 |
| 2 | 4765 | 44 |
| 3 | 6404 | 44 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 484× | times-frac_binary64 |
| 319× | fma-def_binary64 |
| 314× | associate-*r*_binary64 |
| 312× | cancel-sign-sub-inv_binary64 |
| 289× | associate-/l*_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 135 | 2152 |
| 1 | 381 | 2054 |
| 2 | 1181 | 1993 |
| 3 | 4668 | 1966 |
| 4 | 5040 | 1966 |
7 alts after pruning (5 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 843 | 0 | 843 |
| Fresh | 0 | 5 | 5 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 1 | 1 |
| Total | 843 | 7 | 850 |
| Status | Error | Program |
| 13.1b | (+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| ✓ | 25.3b | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d))) |
| 12.5b | (+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) | |
| 41.2b | (pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2) | |
| ✓ | 0.7b | (fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d))))) |
| 15.4b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2))))) | |
| 9.7b | (fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 d (*.f64 (/.f64 (hypot.f64 c d) a) (hypot.f64 c d))))) |
Compiled 48911 to 12829 computations (73.8% saved)
Total 1.4b remaining (91.7%)
Threshold costs 0b (0%)
Compiled 24568 to 12784 computations (48% saved)
| 1× | egg-herbie |
| 9× | *-commutative_binary64 |
| 8× | +-commutative_binary64 |
| 8× | sub-neg_binary64 |
| 8× | neg-sub0_binary64 |
| 7× | neg-mul-1_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 16 | 39 |
| 1 | 27 | 38 |
| 2 | 42 | 38 |
| 3 | 55 | 38 |
| 4 | 64 | 38 |
| 5 | 69 | 38 |
| 6 | 70 | 38 |
| 7 | 70 | 38 |
Compiled 275 to 141 computations (48.7% saved)
Loading profile data...