Time bar (total: 11.4s)
| 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 |
| 0% | 99.9% | 0.1% | 6 |
| 6.2% | 93.6% | 0.1% | 7 |
| 9.4% | 90.5% | 0.1% | 8 |
| 14% | 85.8% | 0.1% | 9 |
| 19.5% | 80.4% | 0.1% | 10 |
| 20.7% | 79.2% | 0.1% | 11 |
| 22% | 77.8% | 0.1% | 12 |
| 23.5% | 76.4% | 0.1% | 13 |
| 23.8% | 76% | 0.1% | 14 |
Compiled 13 to 9 computations (30.8% saved)
| 2.4s | 3599× | body | 1024 | valid |
| 625.0ms | 1425× | body | 512 | valid |
| 385.0ms | 2444× | body | 128 | valid |
| 304.0ms | 230× | body | 2048 | valid |
| 171.0ms | 558× | body | 256 | valid |
Compiled 38 to 26 computations (31.6% saved)
| 1× | egg-herbie |
| 3× | *-commutative_binary64 |
| 2× | associate-/l*_binary64 |
| 1× | +-commutative_binary64 |
| 1× | associate-*r/_binary64 |
| 1× | associate-*l/_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 14 |
| 1 | 13 | 14 |
| 2 | 17 | 14 |
| 3 | 21 | 14 |
| 4 | 22 | 14 |
| 1× | saturated |
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 |
| 15.3b | (/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b))) | |
| ▶ | 15.3b | (*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) |
Compiled 69 to 44 computations (36.2% saved)
Found 3 expressions with local error:
| New | Error | Program |
| ✓ | 0.2b | (*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) |
| ✓ | 0.2b | (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) |
| ✓ | 3.0b | (cos.f64 (+.f64 a b)) |
3 calls:
| 39.0ms | (*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) |
| 22.0ms | (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) |
| 3.0ms | (cos.f64 (+.f64 a b)) |
| 1× | batch-egg-rewrite |
| 588× | prod-diff_binary64 |
| 214× | fma-def_binary64 |
| 196× | expm1-udef_binary64 |
| 196× | log1p-udef_binary64 |
| 123× | egg-rr |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 31 |
| 1 | 200 | 31 |
| 2 | 2864 | 31 |
| 1× | node limit |
3 calls:
| 54.0ms | (*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) |
| 54.0ms | (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) |
| 54.0ms | (cos.f64 (+.f64 a b)) |
| 1× | egg-herbie |
| 692× | fma-def_binary64 |
| 619× | associate-*l*_binary64 |
| 441× | associate-/r*_binary64 |
| 196× | associate-/r/_binary64 |
| 178× | associate-*l/_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 155 | 1422 |
| 1 | 469 | 1420 |
| 2 | 1708 | 1358 |
| 1× | node limit |
16 alts after pruning (16 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 153 | 15 | 168 |
| Fresh | 0 | 1 | 1 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 154 | 16 | 170 |
| Status | Error | Program |
| 15.4b | (*.f64 r (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3)))) | |
| 30.6b | (fma.f64 1/2 (*.f64 (/.f64 (sin.f64 b) (cos.f64 b)) (*.f64 a (*.f64 a r))) (fma.f64 (/.f64 (sin.f64 b) (cos.f64 b)) r (fma.f64 5/6 (*.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 (pow.f64 a 3) r)) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 a r) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 3) (pow.f64 (cos.f64 b) 3)) (*.f64 a (*.f64 a r)) (*.f64 (/.f64 (pow.f64 (sin.f64 b) 4) (pow.f64 (cos.f64 b) 4)) (*.f64 (pow.f64 a 3) r))))))) | |
| 29.8b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b)))) | |
| 21.8b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 30.4b | (fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r)) | |
| 15.6b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b)))) | |
| 0.8b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 15.3b | (/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a)))))) | |
| 38.5b | (*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2)) | |
| 15.3b | (/.f64 (*.f64 (neg.f64 (sin.f64 b)) r) (neg.f64 (cos.f64 (+.f64 a b)))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))))))) | |
| 0.5b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))) | |
| 39.5b | (*.f64 r (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sqrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b)))))) | |
| ▶ | 0.3b | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) |
Compiled 5439 to 1908 computations (64.9% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.1b | (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) |
| ✓ | 0.2b | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) |
| ✓ | 0.2b | (*.f64 (sin.f64 b) (sin.f64 a)) |
| ✓ | 0.2b | (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) |
4 calls:
| 100.0ms | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) |
| 54.0ms | (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) |
| 16.0ms | (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) |
| 8.0ms | (*.f64 (sin.f64 b) (sin.f64 a)) |
| 1× | batch-egg-rewrite |
| 770× | prod-diff_binary64 |
| 441× | egg-rr |
| 145× | add-sqr-sqrt_binary64 |
| 133× | log1p-expm1-u_binary64 |
| 133× | expm1-log1p-u_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 75 |
| 1 | 275 | 39 |
| 2 | 3778 | 39 |
| 1× | node limit |
4 calls:
| 129.0ms | (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) |
| 129.0ms | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) |
| 129.0ms | (*.f64 (sin.f64 b) (sin.f64 a)) |
| 129.0ms | (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) |
| 1× | egg-herbie |
| 841× | fma-def_binary64 |
| 438× | associate-/r*_binary64 |
| 236× | cancel-sign-sub-inv_binary64 |
| 196× | associate-/r/_binary64 |
| 178× | associate-*l/_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 187 | 2682 |
| 1 | 578 | 2672 |
| 2 | 2048 | 2586 |
| 1× | node limit |
16 alts after pruning (16 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 501 | 7 | 508 |
| Fresh | 6 | 9 | 15 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 508 | 16 | 524 |
| Status | Error | Program |
| 29.8b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b)))) | |
| 0.5b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (cbrt.f64 (pow.f64 (cos.f64 b) 2))) (cbrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))))) | |
| 30.4b | (fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r)) | |
| 14.7b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (sqrt.f64 (cos.f64 b))) (sqrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2))) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))))) | |
| 15.6b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b)))) | |
| 0.6b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))))) | |
| 0.8b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 26.9b | (*.f64 r (cbrt.f64 (/.f64 (pow.f64 (sin.f64 b) 3) (pow.f64 (cos.f64 (-.f64 b a)) 3)))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a)))))) | |
| 15.3b | (/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))) | |
| 15.4b | (*.f64 r (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3)))) | |
| 38.5b | (*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2)) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))))))) | |
| ▶ | 0.3b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))) |
Compiled 20090 to 5112 computations (74.6% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.1b | (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))) |
| ✓ | 0.1b | (*.f64 (sin.f64 b) r) |
| 0.2b | (*.f64 (sin.f64 b) (sin.f64 a)) | |
| ✓ | 0.2b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))) |
3 calls:
| 94.0ms | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))) |
| 13.0ms | (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))) |
| 6.0ms | (*.f64 (sin.f64 b) r) |
| 1× | batch-egg-rewrite |
| 277× | expm1-udef_binary64 |
| 277× | log1p-udef_binary64 |
| 154× | add-sqr-sqrt_binary64 |
| 148× | log1p-expm1-u_binary64 |
| 148× | expm1-log1p-u_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 50 |
| 1 | 297 | 26 |
| 2 | 4363 | 26 |
| 1× | node limit |
3 calls:
| 60.0ms | (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))) |
| 60.0ms | (*.f64 (sin.f64 b) r) |
| 60.0ms | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))) |
| 1× | egg-herbie |
| 833× | times-frac_binary64 |
| 666× | associate-/l*_binary64 |
| 529× | fma-def_binary64 |
| 310× | associate-/r*_binary64 |
| 154× | cancel-sign-sub-inv_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 132 | 1093 |
| 1 | 420 | 1083 |
| 2 | 1463 | 1035 |
| 1× | node limit |
17 alts after pruning (17 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 187 | 11 | 198 |
| Fresh | 9 | 6 | 15 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 197 | 17 | 214 |
| Status | Error | Program |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))) | |
| 15.3b | (*.f64 r (*.f64 (sin.f64 b) (/.f64 1 (cos.f64 (+.f64 b a))))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) | |
| 15.3b | (*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 b a))))) | |
| 38.5b | (*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2)) | |
| 28.9b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (pow.f64 (sqrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 2))) | |
| 29.8b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b)))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) | |
| 30.4b | (fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r)) | |
| 0.6b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (cbrt.f64 (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)))) | |
| 0.8b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3))) | |
| ▶ | 0.3b | (/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) |
| 15.3b | (*.f64 (/.f64 (sin.f64 b) 1) (/.f64 r (cos.f64 (+.f64 b a)))) | |
| 1.2b | (/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))) | |
| 0.4b | (*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a)))))) |
Compiled 5272 to 1799 computations (65.9% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.1b | (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))) |
| 0.1b | (*.f64 (sin.f64 b) r) | |
| ✓ | 0.2b | (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) |
| ✓ | 0.2b | (/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) |
3 calls:
| 98.0ms | (/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) |
| 14.0ms | (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))) |
| 10.0ms | (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) |
| 1× | batch-egg-rewrite |
| 333× | prod-diff_binary64 |
| 233× | expm1-udef_binary64 |
| 233× | log1p-udef_binary64 |
| 202× | egg-rr |
| 139× | add-sqr-sqrt_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 54 |
| 1 | 267 | 48 |
| 2 | 3587 | 48 |
| 1× | node limit |
3 calls:
| 79.0ms | (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))) |
| 79.0ms | (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) |
| 79.0ms | (/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) |
| 1× | egg-herbie |
| 833× | times-frac_binary64 |
| 667× | associate-/l*_binary64 |
| 655× | fma-def_binary64 |
| 174× | cancel-sign-sub-inv_binary64 |
| 148× | fma-neg_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 149 | 2011 |
| 1 | 475 | 2009 |
| 2 | 1575 | 1943 |
| 1× | node limit |
16 alts after pruning (15 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 272 | 6 | 278 |
| Fresh | 7 | 9 | 16 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 279 | 16 | 295 |
| Status | Error | Program |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))) | |
| 15.3b | (*.f64 r (*.f64 (sin.f64 b) (/.f64 1 (cos.f64 (+.f64 b a))))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) | |
| 15.3b | (*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 b a))))) | |
| 38.5b | (*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2)) | |
| 0.7b | (/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (pow.f64 (cbrt.f64 (cos.f64 b)) 2)) (cbrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))) | |
| 29.8b | (/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b)))) | |
| 0.4b | (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) | |
| 14.7b | (/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (sqrt.f64 (cos.f64 b))) (sqrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) | |
| 26.6b | (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 r a) (/.f64 r (/.f64 (cos.f64 b) (sin.f64 b)))) | |
| 1.2b | (/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) | |
| ✓ | 0.3b | (/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) |
| 0.8b | (*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))) | |
| 15.3b | (*.f64 (/.f64 (sin.f64 b) 1) (/.f64 r (cos.f64 (+.f64 b a)))) | |
| 0.6b | (/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))) (fma.f64 (sin.f64 a) (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b)))))) | |
| 0.3b | (/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))) (fma.f64 (sin.f64 a) (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b)))))) |
Compiled 9683 to 2425 computations (75% saved)
Total 0.3b remaining (76%)
Threshold costs 0.3b (76%)
Compiled 48778 to 27050 computations (44.5% saved)
| 1× | egg-herbie |
| 3× | *-commutative_binary64 |
| 1× | +-commutative_binary64 |
| 1× | sub-neg_binary64 |
| 1× | neg-sub0_binary64 |
| 1× | neg-mul-1_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 15 | 30 |
| 1 | 21 | 30 |
| 2 | 23 | 30 |
| 3 | 24 | 30 |
| 1× | saturated |
Compiled 526 to 289 computations (45.1% saved)
Loading profile data...