Time bar (total: 13.6s)
| 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 |
| 9.4% | 90.4% | 0.2% | 6 |
| 17.2% | 82.7% | 0.2% | 7 |
| 19.5% | 80.3% | 0.2% | 8 |
| 30.8% | 69% | 0.2% | 9 |
| 35.5% | 64.3% | 0.2% | 10 |
| 42.4% | 57.4% | 0.2% | 11 |
| 47.1% | 52.7% | 0.2% | 12 |
| 48.9% | 50.8% | 0.3% | 13 |
| 50% | 49.7% | 0.4% | 14 |
Compiled 42 to 20 computations (52.4% saved)
| 2.3s | 2432× | body | 1024 | invalid |
| 1.9s | 7828× | body | 128 | valid |
| 750.0ms | 993× | body | 512 | invalid |
| 183.0ms | 564× | body | 128 | invalid |
| 181.0ms | 425× | body | 256 | invalid |
| 167.0ms | 166× | body | 1024 | valid |
| 84.0ms | 142× | body | 512 | valid |
| 47.0ms | 24× | body | 2048 | invalid |
| 42.0ms | 102× | body | 256 | valid |
| 29.0ms | 18× | body | 2048 | valid |
Compiled 125 to 59 computations (52.8% saved)
| 1× | egg-herbie |
| 373× | rules-1_binary64 |
| 365× | rules-6-rev_binary64 |
| 344× | rules-20_binary64 |
| 313× | rules-33_binary64 |
| 295× | rules-1-rev_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 20 | 40 |
| 1 | 46 | 38 |
| 2 | 123 | 38 |
| 3 | 324 | 38 |
| 4 | 1182 | 38 |
| 5 | 4091 | 38 |
| 6 | 4883 | 38 |
| 7 | 4981 | 38 |
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 |
| ▶ | 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) |
| 31.2b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re)))) |
Compiled 206 to 96 computations (53.4% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.7b | (*.f64 y.re (atan2.f64 x.im x.re)) |
| ✓ | 0.7b | (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) |
| ✓ | 1.4b | (*.f64 (atan2.f64 x.im x.re) y.im) |
| ✓ | 31.6b | (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) |
4 calls:
| 481.0ms | (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) |
| 86.0ms | (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) |
| 8.0ms | (*.f64 (atan2.f64 x.im x.re) y.im) |
| 6.0ms | (*.f64 y.re (atan2.f64 x.im x.re)) |
| 2× | batch-egg-rewrite |
| 625× | prod-diff_binary64 |
| 190× | egg-rr |
| 148× | add-sqr-sqrt_binary64 |
| 136× | add-log-exp_binary64 |
| 136× | log1p-expm1-u_binary64 |
4 calls:
| 87.0ms | (*.f64 y.re (atan2.f64 x.im x.re)) |
| 87.0ms | (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) |
| 87.0ms | (*.f64 (atan2.f64 x.im x.re) y.im) |
| 87.0ms | (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 15 | 50 |
| 1 | 335 | 50 |
| 2 | 4189 | 50 |
| 3 | 5478 | 50 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 544× | fma-def_binary64 |
| 411× | rules-13_binary64 |
| 400× | rules-14-rev_binary64 |
| 307× | rules-21_binary64 |
| 255× | rules-20_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 558 | 7070 |
| 1 | 2234 | 6584 |
| 2 | 5342 | 6584 |
12 alts after pruning (12 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 309 | 12 | 321 |
| Fresh | 1 | 0 | 1 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 311 | 12 | 323 |
| Status | Error | Program |
| 18.9b | (*.f64 (fma.f64 (log.f64 (hypot.f64 x.im x.re)) (/.f64 y.re (exp.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) (exp.f64 (neg.f64 (*.f64 y.im (atan2.f64 x.im x.re))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 7.7b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re)))) | |
| 19.5b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (sqrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2)) | |
| 36.7b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 (log.f64 (/.f64 -1 x.im)) y.im)))) | |
| 7.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (fabs.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) | |
| 17.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (-.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (fma.f64 1/2 (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (*.f64 (*.f64 y.im y.im) (pow.f64 (log.f64 (hypot.f64 x.im x.re)) 2))) (*.f64 (log.f64 (hypot.f64 x.im x.re)) (*.f64 y.im (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3)) | |
| ▶ | 2.3b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) |
| 34.9b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (*.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))) | |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (log.f64 (exp.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))))) |
Compiled 17989 to 6112 computations (66% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.3b | (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) |
| 0.7b | (*.f64 y.re (atan2.f64 x.im x.re)) | |
| ✓ | 1.4b | (*.f64 y.im (atan2.f64 x.im x.re)) |
| 31.6b | (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) |
2 calls:
| 509.0ms | (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) |
| 6.0ms | (*.f64 y.im (atan2.f64 x.im x.re)) |
| 2× | batch-egg-rewrite |
| 910× | log1p-expm1-u_binary64 |
| 910× | expm1-log1p-u_binary64 |
| 248× | prod-diff_binary64 |
| 126× | egg-rr |
| 99× | add-sqr-sqrt_binary64 |
2 calls:
| 70.0ms | (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) |
| 70.0ms | (*.f64 y.im (atan2.f64 x.im x.re)) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 16 |
| 1 | 223 | 16 |
| 2 | 2749 | 16 |
| 3 | 6540 | 16 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 680× | fma-neg_binary64 |
| 579× | rules-11_binary64 |
| 416× | fma-def_binary64 |
| 393× | rules-20_binary64 |
| 324× | rules-15-rev_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 91 | 1092 |
| 1 | 302 | 992 |
| 2 | 1403 | 976 |
| 3 | 6126 | 976 |
11 alts after pruning (11 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 328 | 2 | 330 |
| Fresh | 2 | 9 | 11 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 331 | 11 | 342 |
| Status | Error | Program |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| ▶ | 3.0b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re)))) |
| 7.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (fabs.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) | |
| 17.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (-.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (fma.f64 1/2 (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (*.f64 (*.f64 y.im y.im) (pow.f64 (log.f64 (hypot.f64 x.im x.re)) 2))) (*.f64 (log.f64 (hypot.f64 x.im x.re)) (*.f64 y.im (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))))) | |
| 18.9b | (*.f64 (fma.f64 (log.f64 (hypot.f64 x.im x.re)) (/.f64 y.re (exp.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) (exp.f64 (neg.f64 (*.f64 y.im (atan2.f64 x.im x.re))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 19.5b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (sqrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2)) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3)) | |
| 34.9b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 34.2b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 y.im (log.f64 (/.f64 -1 x.im)))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (*.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))) | |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (log.f64 (exp.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))))) |
Compiled 16149 to 5097 computations (68.4% saved)
Found 4 expressions with local error:
| New | Error | Program |
| 0.3b | (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) | |
| 0.7b | (*.f64 y.re (atan2.f64 x.im x.re)) | |
| 1.4b | (*.f64 y.im (atan2.f64 x.im x.re)) | |
| ✓ | 18.2b | (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) |
1 calls:
| 14.0ms | (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) |
| 2× | batch-egg-rewrite |
| 651× | log1p-expm1-u_binary64 |
| 651× | expm1-log1p-u_binary64 |
| 383× | prod-diff_binary64 |
| 71× | add-sqr-sqrt_binary64 |
| 64× | add-cbrt-cube_binary64 |
1 calls:
| 71.0ms | (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 9 |
| 1 | 157 | 9 |
| 2 | 1951 | 9 |
| 3 | 5021 | 9 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 739× | rules-11_binary64 |
| 482× | fma-neg_binary64 |
| 442× | rules-20_binary64 |
| 415× | fma-def_binary64 |
| 286× | rules-13_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 29 | 110 |
| 1 | 73 | 106 |
| 2 | 266 | 106 |
| 3 | 1388 | 106 |
| 4 | 5444 | 106 |
11 alts after pruning (10 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 273 | 0 | 273 |
| Fresh | 0 | 10 | 10 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 273 | 11 | 284 |
| Status | Error | Program |
| ▶ | 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) |
| ✓ | 3.0b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re)))) |
| 7.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (fabs.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) | |
| 17.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (-.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (fma.f64 1/2 (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (*.f64 (*.f64 y.im y.im) (pow.f64 (log.f64 (hypot.f64 x.im x.re)) 2))) (*.f64 (log.f64 (hypot.f64 x.im x.re)) (*.f64 y.im (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))))) | |
| 18.9b | (*.f64 (fma.f64 (log.f64 (hypot.f64 x.im x.re)) (/.f64 y.re (exp.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) (exp.f64 (neg.f64 (*.f64 y.im (atan2.f64 x.im x.re))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 19.5b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (sqrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2)) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3)) | |
| 34.9b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 34.2b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 y.im (log.f64 (/.f64 -1 x.im)))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (*.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))) | |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (log.f64 (exp.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))))) |
Compiled 9508 to 3157 computations (66.8% saved)
Found 4 expressions with local error:
| New | Error | Program |
| 0.7b | (*.f64 y.re (atan2.f64 x.im x.re)) | |
| ✓ | 0.7b | (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) |
| 1.4b | (*.f64 y.im (atan2.f64 x.im x.re)) | |
| 31.6b | (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) |
1 calls:
| 9.0ms | (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) |
| 2× | batch-egg-rewrite |
| 637× | expm1-log1p-u_binary64 |
| 636× | log1p-expm1-u_binary64 |
| 210× | prod-diff_binary64 |
| 125× | expm1-udef_binary64 |
| 125× | log1p-udef_binary64 |
1 calls:
| 45.0ms | (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 7 |
| 1 | 157 | 7 |
| 2 | 1920 | 7 |
| 3 | 4991 | 7 |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 1× | egg-herbie |
| 1× | rules-20_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 252 |
| 1 | 7 | 252 |
| 2 | 7 | 252 |
11 alts after pruning (9 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 297 | 1 | 298 |
| Fresh | 1 | 8 | 9 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 1 | 1 |
| Total | 298 | 11 | 309 |
| Status | Error | Program |
| 19.5b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (sqrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2)) | |
| 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))) | |
| ✓ | 7.0b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (log1p.f64 (expm1.f64 (*.f64 y.im (atan2.f64 x.im x.re)))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) |
| ✓ | 3.0b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re)))) |
| 7.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (fabs.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) | |
| 17.4b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (-.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (fma.f64 1/2 (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (*.f64 (*.f64 y.im y.im) (pow.f64 (log.f64 (hypot.f64 x.im x.re)) 2))) (*.f64 (log.f64 (hypot.f64 x.im x.re)) (*.f64 y.im (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))))) | |
| 18.9b | (*.f64 (fma.f64 (log.f64 (hypot.f64 x.im x.re)) (/.f64 y.re (exp.f64 (*.f64 y.im (atan2.f64 x.im x.re)))) (exp.f64 (neg.f64 (*.f64 y.im (atan2.f64 x.im x.re))))) (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3)) | |
| 34.9b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (cos.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) | |
| 34.2b | (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (hypot.f64 x.re x.im)) y.re) (*.f64 y.im (atan2.f64 x.im x.re)))) (cos.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 y.im (log.f64 (/.f64 -1 x.im)))))) | |
| 7.1b | (*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (*.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) (pow.f64 (cbrt.f64 (cos.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))) |
Compiled 14344 to 4307 computations (70% saved)
Total 0.4b remaining (11.7%)
Threshold costs 0.4b (11.7%)
Compiled 12707 to 7050 computations (44.5% saved)
| 1× | egg-herbie |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 16 | 40 |
| 1 | 16 | 40 |
Compiled 441 to 232 computations (47.4% saved)
Loading profile data...