Time bar (total: 22.2s)
| 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 |
| 0% | 99.8% | 0.2% | 8 |
| 0% | 99.8% | 0.2% | 9 |
| 0% | 99.8% | 0.2% | 10 |
| 0.8% | 99% | 0.2% | 11 |
| 4.7% | 95.1% | 0.2% | 12 |
| 5.9% | 93.2% | 0.8% | 13 |
| 8.5% | 90.2% | 1.3% | 14 |
Compiled 38 to 22 computations (42.1% saved)
(sort lambda1 lambda2)
(sort phi1 phi2)
| 1.4s | 6204× | body | 128 | valid |
| 746.0ms | 815× | body | 1024 | valid |
| 582.0ms | 2491× | body | 128 | invalid |
| 450.0ms | 753× | body | 512 | valid |
| 412.0ms | 463× | body | 1024 | invalid |
| 217.0ms | 370× | body | 512 | invalid |
| 193.0ms | 481× | body | 256 | valid |
| 61.0ms | 159× | body | 256 | invalid |
| 5.0ms | 3× | body | 2048 | valid |
Compiled 113 to 65 computations (42.5% saved)
| 1× | egg-herbie |
| 1413× | unsub-neg_binary64 |
| 897× | distribute-neg-out_binary64 |
| 703× | fma-def_binary64 |
| 583× | neg-sub0_binary64 |
| 478× | sub-neg_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 18 | 24 |
| 1 | 35 | 24 |
| 2 | 83 | 24 |
| 3 | 224 | 24 |
| 4 | 658 | 24 |
| 5 | 2038 | 24 |
| 6 | 3128 | 24 |
| 7 | 3593 | 24 |
| 8 | 4399 | 24 |
| 9 | 4364 | 24 |
| 10 | 4430 | 24 |
| 11 | 4468 | 24 |
| 12 | 5035 | 24 |
3 alts after pruning (3 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 2 | 2 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 0 | 3 | 3 |
| Status | Error | Program |
| ▶ | 3.0b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) |
| 38.2b | (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))) |
Compiled 169 to 97 computations (42.6% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.0b | (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) |
| ✓ | 0.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) |
| ✓ | 0.2b | (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| ✓ | 2.9b | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
4 calls:
| 3.1s | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) |
| 1.0s | (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) |
| 21.0ms | (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 6.0ms | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
| 4× | egg-rewrite |
| 35× | egg |
| 29× | egg |
| 19× | egg |
| 18× | egg |
4 calls:
| 86.0ms | (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 77.0ms | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
| 68.0ms | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) |
| 63.0ms | (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 9 |
| 1 | 157 | 9 |
| 2 | 1975 | 9 |
| 3 | 5759 | 9 |
| 0 | 11 | 15 |
| 1 | 246 | 15 |
| 2 | 3189 | 15 |
| 3 | 4929 | 15 |
| 0 | 15 | 24 |
| 1 | 331 | 24 |
| 2 | 4247 | 24 |
| 3 | 5102 | 24 |
| 0 | 13 | 21 |
| 1 | 292 | 21 |
| 2 | 3788 | 21 |
| 3 | 5204 | 21 |
| 1× | egg-herbie |
| 1133× | associate-*r*_binary64 |
| 461× | fma-def_binary64 |
| 141× | associate-*l*_binary64 |
| 85× | sub-neg_binary64 |
| 65× | associate-/l*_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 2196 | 44761 |
| 1 | 5035 | 44761 |
18 alts after pruning (18 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 280 | 17 | 297 |
| Fresh | 0 | 1 | 1 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 281 | 18 | 299 |
| Status | Error | Program |
| 25.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (cos.f64 (*.f64 1/2 phi2)) (fma.f64 1/2 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) (cos.f64 (*.f64 1/2 phi2))))))) (-.f64 phi1 phi2))) | |
| 28.9b | (-.f64 (*.f64 R phi2) (*.f64 phi1 R)) | |
| 33.6b | (pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) 2) | |
| 3.5b | (*.f64 R (hypot.f64 (*.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (pow.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) 2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| ▶ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2))) |
| 57.8b | (-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))) | |
| 50.1b | (pow.f64 (pow.f64 (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) 3) 1/3) | |
| 3.2b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 38.2b | (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))) | |
| 3.4b | (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) R)) | |
| 8.0b | (*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) | |
| 7.7b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2))) | |
| 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cbrt.f64 (pow.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 3))) (-.f64 phi1 phi2))) | |
| 7.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2))) | |
| 44.2b | (-.f64 (fma.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) | |
| 17.9b | (*.f64 R (hypot.f64 (-.f64 (fma.f64 1/2 (*.f64 lambda2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) phi2)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda1)) (fma.f64 1/2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) (*.f64 phi2 lambda1)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda2))) (-.f64 phi1 phi2))) | |
| 4.3b | (*.f64 (*.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) (pow.f64 (cbrt.f64 R) 2)) (cbrt.f64 R)) | |
| 4.2b | (*.f64 (*.f64 R (pow.f64 (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) 2)) (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) |
Compiled 60964 to 41678 computations (31.6% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.4b | (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| ✓ | 0.5b | (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| ✓ | 0.5b | (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| 2.9b | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
3 calls:
| 662.0ms | (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| 16.0ms | (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| 14.0ms | (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 3× | egg-rewrite |
| 48× | egg |
| 26× | egg |
| 20× | egg |
3 calls:
| 117.0ms | (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| 115.0ms | (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| 54.0ms | (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 11 | 9 |
| 1 | 214 | 9 |
| 2 | 2621 | 9 |
| 3 | 4699 | 9 |
| 4 | 4756 | 9 |
| 5 | 5004 | 9 |
| 0 | 8 | 11 |
| 1 | 174 | 11 |
| 2 | 2156 | 11 |
| 3 | 6179 | 11 |
| 0 | 10 | 14 |
| 1 | 216 | 11 |
| 2 | 2612 | 11 |
| 3 | 4705 | 11 |
| 4 | 4767 | 11 |
| 5 | 4961 | 11 |
| 1× | egg-herbie |
| 771× | cancel-sign-sub-inv_binary64 |
| 384× | associate--l+_binary64 |
| 381× | associate--r+_binary64 |
| 336× | distribute-rgt-neg-in_binary64 |
| 325× | distribute-lft-neg-in_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 123 | 1930 |
| 1 | 401 | 1911 |
| 2 | 1487 | 1701 |
| 3 | 4217 | 1701 |
| 4 | 4902 | 1701 |
| 5 | 4982 | 1701 |
19 alts after pruning (18 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 168 | 4 | 172 |
| Fresh | 3 | 14 | 17 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 171 | 19 | 190 |
| Status | Error | Program |
| 25.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (cos.f64 (*.f64 1/2 phi2)) (fma.f64 1/2 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) (cos.f64 (*.f64 1/2 phi2))))))) (-.f64 phi1 phi2))) | |
| 28.9b | (-.f64 (*.f64 R phi2) (*.f64 phi1 R)) | |
| 33.6b | (pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) 2) | |
| 3.5b | (*.f64 R (hypot.f64 (*.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (pow.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) 2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| ✓ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2))) |
| 57.8b | (-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))) | |
| 4.0b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (*.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 2)))) (-.f64 phi1 phi2))) | |
| 7.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2))) | |
| 7.7b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (exp.f64 (cos.f64 (*.f64 1/2 phi1))))) (-.f64 phi1 phi2))) | |
| 3.2b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| ▶ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2))) |
| 38.2b | (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))) | |
| 3.4b | (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) R)) | |
| 8.0b | (*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) | |
| 44.2b | (-.f64 (fma.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) | |
| 17.9b | (*.f64 R (hypot.f64 (-.f64 (fma.f64 1/2 (*.f64 lambda2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) phi2)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda1)) (fma.f64 1/2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) (*.f64 phi2 lambda1)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda2))) (-.f64 phi1 phi2))) | |
| 4.3b | (*.f64 (*.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) (pow.f64 (cbrt.f64 R) 2)) (cbrt.f64 R)) | |
| 4.2b | (*.f64 (*.f64 R (pow.f64 (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) 2)) (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) | |
| 6.6b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (sqrt.f64 (pow.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2))))) (-.f64 phi1 phi2))) |
Compiled 6721 to 4224 computations (37.2% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.2b | (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| ✓ | 0.2b | (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| ✓ | 0.5b | (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| 2.9b | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
3 calls:
| 1.0s | (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| 755.0ms | (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| 278.0ms | (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 3× | egg-rewrite |
| 40× | egg |
| 37× | egg |
| 29× | egg |
3 calls:
| 67.0ms | (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) |
| 54.0ms | (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) |
| 52.0ms | (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 9 |
| 1 | 218 | 9 |
| 2 | 2384 | 9 |
| 3 | 5039 | 9 |
| 0 | 14 | 21 |
| 1 | 307 | 15 |
| 2 | 3600 | 15 |
| 3 | 5321 | 15 |
| 0 | 9 | 13 |
| 1 | 201 | 11 |
| 2 | 2373 | 11 |
| 3 | 5032 | 11 |
| 1× | egg-herbie |
| 450× | associate--l+_binary64 |
| 422× | associate--r+_binary64 |
| 342× | fma-neg_binary64 |
| 273× | associate-*r*_binary64 |
| 229× | distribute-rgt-neg-in_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 179 | 2272 |
| 1 | 575 | 2242 |
| 2 | 2109 | 2049 |
| 3 | 4884 | 2049 |
| 4 | 4986 | 2049 |
| 5 | 4985 | 2049 |
19 alts after pruning (17 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 186 | 2 | 188 |
| Fresh | 2 | 15 | 17 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 1 | 1 |
| Total | 188 | 19 | 207 |
| Status | Error | Program |
| 33.6b | (pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) 2) | |
| 3.5b | (*.f64 R (hypot.f64 (*.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (pow.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) 2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| ✓ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2))) |
| 57.8b | (-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))) | |
| 4.0b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (*.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 2)))) (-.f64 phi1 phi2))) | |
| 7.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2))) | |
| 7.7b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (exp.f64 (cos.f64 (*.f64 1/2 phi1))))) (-.f64 phi1 phi2))) | |
| ▶ | 3.2b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) |
| ✓ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2))) |
| 4.3b | (*.f64 (*.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) (pow.f64 (cbrt.f64 R) 2)) (cbrt.f64 R)) | |
| 17.3b | (*.f64 R (hypot.f64 (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda1) (-.f64 (*.f64 (*.f64 1/2 (*.f64 phi2 (sin.f64 (*.f64 1/2 phi1)))) (-.f64 lambda2 lambda1)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda2))) (-.f64 phi1 phi2))) | |
| 38.2b | (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))) | |
| 3.4b | (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) R)) | |
| 8.0b | (*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) | |
| 25.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (cos.f64 (*.f64 1/2 phi2)) (fma.f64 1/2 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) (cos.f64 (*.f64 1/2 phi2))))))) (-.f64 phi1 phi2))) | |
| 44.2b | (-.f64 (fma.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) | |
| 4.2b | (*.f64 (*.f64 R (pow.f64 (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) 2)) (cbrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) | |
| 6.6b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (sqrt.f64 (pow.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2))))) (-.f64 phi1 phi2))) | |
| 16.5b | (*.f64 R (hypot.f64 (neg.f64 (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi2 phi1))) lambda2)) (-.f64 phi1 phi2))) |
Compiled 6605 to 3866 computations (41.5% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.2b | (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) |
| ✓ | 0.4b | (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) |
| ✓ | 0.5b | (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 2.9b | (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) |
3 calls:
| 497.0ms | (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) |
| 485.0ms | (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 25.0ms | (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) |
| 3× | egg-rewrite |
| 43× | egg |
| 23× | egg |
| 21× | egg |
3 calls:
| 68.0ms | (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) |
| 58.0ms | (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) |
| 50.0ms | (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 11 |
| 1 | 174 | 11 |
| 2 | 2159 | 11 |
| 3 | 6160 | 11 |
| 0 | 9 | 14 |
| 1 | 196 | 12 |
| 2 | 2301 | 12 |
| 3 | 4869 | 12 |
| 0 | 14 | 15 |
| 1 | 306 | 15 |
| 2 | 3799 | 15 |
| 3 | 5513 | 15 |
| 1× | egg-herbie |
| 885× | cancel-sign-sub-inv_binary64 |
| 320× | associate-*r*_binary64 |
| 273× | unswap-sqr_binary64 |
| 230× | associate-*l*_binary64 |
| 228× | sub-neg_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 228 | 2640 |
| 1 | 740 | 2628 |
| 2 | 2719 | 2612 |
| 3 | 5140 | 2612 |
22 alts after pruning (20 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 240 | 5 | 245 |
| Fresh | 1 | 15 | 16 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 2 | 2 |
| Total | 242 | 22 | 264 |
| Status | Error | Program |
| 33.6b | (pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) 2) | |
| 3.5b | (*.f64 R (hypot.f64 (*.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (pow.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) 2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| ✓ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2))) |
| 57.8b | (-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))) | |
| 4.0b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (*.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 2)))) (-.f64 phi1 phi2))) | |
| 7.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2))) | |
| 7.7b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (exp.f64 (cos.f64 (*.f64 1/2 phi1))))) (-.f64 phi1 phi2))) | |
| 4.3b | (*.f64 (*.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) (pow.f64 (cbrt.f64 R) 2)) (cbrt.f64 R)) | |
| 17.3b | (*.f64 R (hypot.f64 (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda1) (-.f64 (*.f64 (*.f64 1/2 (*.f64 phi2 (sin.f64 (*.f64 1/2 phi1)))) (-.f64 lambda2 lambda1)) (*.f64 (cos.f64 (*.f64 1/2 phi1)) lambda2))) (-.f64 phi1 phi2))) | |
| 3.3b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 3) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 38.2b | (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))) | |
| 3.4b | (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))) R)) | |
| 7.6b | (*.f64 R (hypot.f64 (*.f64 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2)) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 16.5b | (*.f64 R (hypot.f64 (neg.f64 (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi2 phi1))) lambda2)) (-.f64 phi1 phi2))) | |
| 7.6b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/2 phi1))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 7.7b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/2 phi1))) 2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 8.0b | (*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) | |
| 25.3b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (cos.f64 (*.f64 1/2 phi2)) (fma.f64 1/2 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) (cos.f64 (*.f64 1/2 phi2))))))) (-.f64 phi1 phi2))) | |
| ✓ | 3.1b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (pow.f64 (E.f64) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2))) |
| 44.2b | (-.f64 (fma.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) | |
| 7.2b | (*.f64 R (hypot.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2) (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/2 phi2))) (-.f64 lambda1 lambda2))) (-.f64 phi1 phi2))) | |
| 6.6b | (*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (sqrt.f64 (pow.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2))))) (-.f64 phi1 phi2))) |
Compiled 10284 to 6457 computations (37.2% saved)
Total 0.3b remaining (8.9%)
Threshold costs 0.3b (8.9%)
Compiled 49461 to 34325 computations (30.6% saved)
| 1× | egg-herbie |
| 8× | *-commutative_binary64 |
| 7× | +-commutative_binary64 |
| 6× | sub-neg_binary64 |
| 4× | neg-sub0_binary64 |
| 4× | neg-mul-1_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 16 | 35 |
| 1 | 28 | 35 |
| 2 | 41 | 35 |
| 3 | 49 | 35 |
| 4 | 54 | 35 |
| 5 | 55 | 35 |
| 6 | 55 | 35 |
(sort phi1 phi2)
(sort lambda1 lambda2)
Compiled 846 to 568 computations (32.9% saved)
Loading profile data...