Time bar (total: 13.2s)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 0% | 99.9% | 0.1% | 0 |
| 0% | 99.9% | 0.1% | 1 |
| 0% | 99.9% | 0.1% | 2 |
| 0% | 99.9% | 0.1% | 3 |
| 0% | 99.9% | 0.1% | 4 |
| 0% | 99.9% | 0.1% | 5 |
| 25% | 74.9% | 0.1% | 6 |
| 31.2% | 68.6% | 0.1% | 7 |
| 37.4% | 62.4% | 0.1% | 8 |
| 45.2% | 54.6% | 0.1% | 9 |
| 45.2% | 54.6% | 0.1% | 10 |
| 50.3% | 49.5% | 0.1% | 11 |
| 56.4% | 43.5% | 0.1% | 12 |
| 56.4% | 41.4% | 2.2% | 13 |
| 59.3% | 37.9% | 2.8% | 14 |
Compiled 27 to 22 computations (18.5% saved)
| 1.3s | 1591× | body | 1024 | valid |
| 1.1s | 5240× | body | 128 | valid |
| 1.1s | 1258× | body | 1024 | invalid |
| 469.0ms | 779× | body | 512 | valid |
| 386.0ms | 638× | body | 512 | invalid |
| 382.0ms | 87× | body | 4096 | valid |
| 313.0ms | 1411× | body | 128 | invalid |
| 216.0ms | 159× | body | 2048 | valid |
| 168.0ms | 400× | body | 256 | valid |
| 140.0ms | 326× | body | 256 | invalid |
Compiled 54 to 44 computations (18.5% saved)
| 2× | egg-herbie |
| 592× | associate-*l*_binary64 |
| 575× | associate-*r*_binary64 |
| 233× | distribute-rgt-in_binary64 |
| 230× | distribute-lft-in_binary64 |
| 207× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 38 | 148 |
| 1 | 92 | 148 |
| 2 | 262 | 148 |
| 3 | 922 | 148 |
| 4 | 3731 | 148 |
| 0 | 3 | 3 |
| 1× | saturated |
| 1× | node limit |
Compiled 26 to 21 computations (19.2% saved)
| 1× | egg-herbie |
| 387× | unsub-neg_binary64 |
| 324× | distribute-rgt-in_binary64 |
| 306× | distribute-lft-in_binary64 |
| 302× | *-commutative_binary64 |
| 278× | associate-+r+_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 17 | 37 |
| 1 | 37 | 37 |
| 2 | 91 | 37 |
| 3 | 275 | 37 |
| 4 | 1081 | 37 |
| 5 | 3145 | 37 |
| 1× | node limit |
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 |
| 33.6b | (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) | |
| ▶ | 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) |
Compiled 153 to 116 computations (24.2% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 1.0b | (-.f64 (*.f64 a a) (*.f64 b b)) |
| ✓ | 10.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) |
| ✓ | 24.7b | (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) |
| ✓ | 25.5b | (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) |
21 calls:
| 42.0ms | (-.f64 (*.f64 a a) (*.f64 b b)) | b | -inf |
| 11.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | angle | 0 |
| 10.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | b | 0 |
| 8.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | angle | -inf |
| 8.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | a | -inf |
| 1× | batch-egg-rewrite |
| 928× | prod-diff_binary64 |
| 185× | add-sqr-sqrt_binary64 |
| 175× | log1p-expm1-u_binary64 |
| 175× | expm1-log1p-u_binary64 |
| 174× | add-cbrt-cube_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 17 | 67 |
| 1 | 371 | 67 |
| 2 | 4817 | 67 |
| 1× | node limit |
| 1× | egg-herbie |
| 783× | fma-def_binary64 |
| 497× | cancel-sign-sub-inv_binary64 |
| 258× | unswap-sqr_binary64 |
| 248× | fma-neg_binary64 |
| 203× | associate-*r*_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 124 | 2520 |
| 1 | 390 | 2296 |
| 2 | 1540 | 2038 |
| 1× | node limit |
34 alts after pruning (34 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 174 | 34 | 208 |
| Fresh | 1 | 0 | 1 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 176 | 34 | 210 |
| Status | Error | Program |
| 46.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 35.8b | (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) | |
| 42.1b | (*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 40.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.8b | (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (fma.f64 (+.f64 a b) (-.f64 a b) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 50.5b | (*.f64 (-.f64 (exp.f64 (log1p.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 35.8b | (*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 36.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)))) | |
| 45.8b | (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| ▶ | 33.2b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) |
| 33.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | |
| 33.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (neg.f64 (*.f64 (*.f64 (cbrt.f64 b) b) (pow.f64 (cbrt.f64 b) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 b) b)) (pow.f64 (cbrt.f64 b) 2) (*.f64 (*.f64 (cbrt.f64 b) b) (pow.f64 (cbrt.f64 b) 2))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) | |
| 44.1b | (exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 47.7b | (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1))) | |
| 48.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 37.1b | (expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 43.6b | (*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 34.0b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1)) | |
| 51.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (pow.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 3) 1/3)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))) | |
| 42.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (pow.f64 a 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 49.2b | (pow.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) | |
| 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 43.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (*.f64 b (neg.f64 b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 39.5b | (+.f64 (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 b b) 1/90)) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 a a)) 1/4374000))) (-.f64 (*.f64 (*.f64 1/708588000000 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5))) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 1/90 (*.f64 a a))) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 b b)) 1/4374000))))) | |
| 35.8b | (*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle)) | |
| 34.0b | (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 46.6b | (sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) | |
| 33.9b | (pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) |
Compiled 9302 to 5324 computations (42.8% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.9b | (-.f64 (*.f64 b b) (*.f64 a a)) |
| ✓ | 10.2b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) |
| ✓ | 24.8b | (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) |
| ✓ | 25.7b | (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) |
21 calls:
| 30.0ms | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | a | inf |
| 11.0ms | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | angle | 0 |
| 10.0ms | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | b | inf |
| 8.0ms | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | b | 0 |
| 8.0ms | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | b | -inf |
| 1× | batch-egg-rewrite |
| 991× | prod-diff_binary64 |
| 180× | add-sqr-sqrt_binary64 |
| 173× | egg-rr |
| 170× | log1p-expm1-u_binary64 |
| 170× | expm1-log1p-u_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 17 | 67 |
| 1 | 362 | 67 |
| 2 | 4644 | 67 |
| 1× | node limit |
| 1× | egg-herbie |
| 800× | fma-def_binary64 |
| 496× | cancel-sign-sub-inv_binary64 |
| 258× | unswap-sqr_binary64 |
| 247× | fma-neg_binary64 |
| 203× | associate-*r*_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 124 | 2088 |
| 1 | 390 | 2080 |
| 2 | 1538 | 2038 |
| 1× | node limit |
39 alts after pruning (39 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 194 | 19 | 213 |
| Fresh | 13 | 20 | 33 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 208 | 39 | 247 |
| Status | Error | Program |
| 35.8b | (*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle)) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 46.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 35.8b | (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) | |
| 53.1b | (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) | |
| 42.1b | (*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 33.8b | (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 46.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 40.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 35.8b | (*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 43.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2))) | |
| 42.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 33.5b | (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3) | |
| 36.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 42.2b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 a (neg.f64 a)))) | |
| 33.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2)))) | |
| ▶ | 33.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) |
| 44.1b | (exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 47.7b | (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 48.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 37.1b | (expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 43.6b | (*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 34.0b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1)) | |
| 53.0b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (log.f64 (pow.f64 (exp.f64 (+.f64 b a)) (-.f64 b a))))) | |
| 46.6b | (sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) | |
| 47.6b | (*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 34.0b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 36.6b | (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 49.2b | (pow.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) | |
| 33.8b | (*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 39.5b | (+.f64 (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 b b) 1/90)) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 a a)) 1/4374000))) (-.f64 (*.f64 (*.f64 1/708588000000 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5))) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 1/90 (*.f64 a a))) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 b b)) 1/4374000))))) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (log.f64 (exp.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 33.4b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))))) | |
| 45.6b | (*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))) | |
| 46.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2)))) |
Compiled 9806 to 5567 computations (43.2% saved)
Found 4 expressions with local error:
| New | Error | Program |
| 1.0b | (-.f64 (*.f64 a a) (*.f64 b b)) | |
| ✓ | 10.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) |
| 24.7b | (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) | |
| 25.7b | (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) |
9 calls:
| 27.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | angle | 0 |
| 9.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | b | 0 |
| 9.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | a | inf |
| 9.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | a | -inf |
| 8.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | a | 0 |
| 1× | batch-egg-rewrite |
| 214× | add-sqr-sqrt_binary64 |
| 202× | log1p-expm1-u_binary64 |
| 202× | expm1-log1p-u_binary64 |
| 201× | add-cbrt-cube_binary64 |
| 200× | add-log-exp_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 20 | 37 |
| 1 | 433 | 37 |
| 1× | node limit |
| 1× | egg-herbie |
| 618× | fma-def_binary64 |
| 463× | unswap-sqr_binary64 |
| 390× | *-commutative_binary64 |
| 365× | sub-neg_binary64 |
| 346× | cancel-sign-sub-inv_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 85 | 1934 |
| 1 | 271 | 1714 |
| 2 | 1109 | 1460 |
| 3 | 4209 | 1460 |
| 1× | node limit |
40 alts after pruning (40 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 200 | 8 | 208 |
| Fresh | 6 | 32 | 38 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 207 | 40 | 247 |
| Status | Error | Program |
| 35.8b | (*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle)) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 35.8b | (*.f64 angle (*.f64 (*.f64 1/90 (PI.f64)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 35.8b | (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) | |
| 53.1b | (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) | |
| 42.1b | (*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 33.8b | (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 46.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 40.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 35.8b | (*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 43.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2))) | |
| 42.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 33.5b | (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) | |
| 36.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 42.2b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 a (neg.f64 a)))) | |
| 33.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2)))) | |
| 48.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | |
| 44.1b | (exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 47.7b | (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 53.0b | (log.f64 (pow.f64 (exp.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)))) (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) | |
| 37.1b | (expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 43.6b | (*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 34.0b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1)) | |
| 46.6b | (sqrt.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) | |
| 45.6b | (*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 49.2b | (pow.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) | |
| 46.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | |
| 46.6b | (sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) | |
| 47.6b | (*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 34.0b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| ▶ | 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) |
| 36.6b | (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 33.8b | (*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)))) | |
| 33.4b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))))) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))) | |
| 46.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2)))) |
Compiled 9552 to 5508 computations (42.3% saved)
Found 4 expressions with local error:
| New | Error | Program |
| 1.0b | (-.f64 (*.f64 a a) (*.f64 b b)) | |
| ✓ | 10.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) |
| 24.7b | (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) | |
| ✓ | 25.5b | (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) |
12 calls:
| 20.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | a | inf |
| 14.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | angle | 0 |
| 11.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | b | inf |
| 9.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | a | -inf |
| 8.0ms | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | a | 0 |
| 1× | batch-egg-rewrite |
| 212× | add-sqr-sqrt_binary64 |
| 204× | log1p-expm1-u_binary64 |
| 204× | expm1-log1p-u_binary64 |
| 202× | add-cbrt-cube_binary64 |
| 200× | add-log-exp_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 23 | 47 |
| 1 | 495 | 47 |
| 1× | node limit |
| 1× | egg-herbie |
| 690× | fma-def_binary64 |
| 446× | *-commutative_binary64 |
| 414× | cancel-sign-sub-inv_binary64 |
| 226× | unswap-sqr_binary64 |
| 209× | fma-neg_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 108 | 2108 |
| 1 | 339 | 1888 |
| 2 | 1339 | 1630 |
| 3 | 4910 | 1630 |
| 1× | node limit |
45 alts after pruning (44 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 202 | 10 | 212 |
| Fresh | 5 | 34 | 39 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 207 | 45 | 252 |
| Status | Error | Program |
| 35.8b | (*.f64 angle (*.f64 (*.f64 1/90 (PI.f64)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 40.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) 3/2)) 3))) | |
| 35.8b | (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 3))) | |
| 53.1b | (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) | |
| 42.1b | (*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 46.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 33.6b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 35.8b | (*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 43.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2))) | |
| 42.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 36.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 1/6) (*.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 1/6) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)))) 3))) | |
| 33.5b | (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) | |
| 33.4b | (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 36.7b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 42.3b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (*.f64 a a)) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 33.9b | (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 33.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2)))) | |
| 48.5b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)))) | |
| 47.7b | (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| 44.1b | (exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 47.7b | (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) | |
| 33.9b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 53.0b | (log.f64 (pow.f64 (exp.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)))) (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) | |
| 37.1b | (expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) | |
| 43.6b | (*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) | |
| 34.0b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1)) | |
| 46.6b | (sqrt.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) | |
| 45.6b | (*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 33.6b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 3))) | |
| 33.9b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))) | |
| 49.2b | (pow.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) | |
| 46.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))))) | |
| 47.6b | (*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 34.0b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 46.5b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2)))) | |
| 48.2b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) | |
| ✓ | 33.4b | (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3))) |
| 36.6b | (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))) | |
| 33.8b | (*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a)))) | |
| 35.8b | (*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle)) | |
| 33.4b | (*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))))) |
Compiled 9330 to 5490 computations (41.2% saved)
Total 2.9b remaining (9%)
Threshold costs 0b (0%)
Compiled 67268 to 46620 computations (30.7% saved)
| 1× | egg-herbie |
| 6× | *-commutative_binary64 |
| 2× | +-commutative_binary64 |
| 2× | sub-neg_binary64 |
| 1× | neg-sub0_binary64 |
| 1× | neg-mul-1_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 18 | 37 |
| 1 | 25 | 37 |
| 2 | 30 | 37 |
| 3 | 32 | 37 |
| 4 | 33 | 37 |
| 1× | saturated |
| 1× | fuel |
Compiled 1357 to 1017 computations (25.1% saved)
Loading profile data...