
Time bar (total: 2.3s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 100% | 99.9% | 0% | 0.1% | 0% | 0% | 0% | 1 |
Compiled 10 to 6 computations (40% saved)
ival-add: 0.0ms (0% of total)ival-mult: 0.0ms (0% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| 514.0ms | 8256× | 0 | valid |
ival-mult: 147.0ms (75% of total)ival-add: 39.0ms (19.9% of total)const: 8.0ms (4.1% of total)backward-pass: 3.0ms (1.5% of total)| 2× | egg-herbie |
| 164× | fnmsub-define |
| 164× | fmsub-define |
| 164× | fnmadd-define |
| 128× | fmm-def |
| 100× | sum3-define |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 14 | 32 |
| 1 | 44 | 32 |
| 2 | 101 | 30 |
| 3 | 279 | 30 |
| 4 | 550 | 30 |
| 5 | 683 | 30 |
| 6 | 707 | 30 |
| 0 | 5 | 5 |
| 1 | 9 | 5 |
| 2 | 10 | 5 |
| 0 | 10 | 5 |
| 1× | iter limit |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
(+ (* re re) (* im im)) |
| Outputs |
|---|
(+ (* re re) (* im im)) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
| Inputs |
|---|
(+ (* re re) (* im im)) |
(+ (* (neg re) (neg re)) (* im im)) |
(+ (* re re) (* (neg im) (neg im))) |
(neg (+ (* (neg re) (neg re)) (* im im))) |
(neg (+ (* re re) (* (neg im) (neg im)))) |
(+ (* im im) (* re re)) |
| Outputs |
|---|
(+ (* re re) (* im im)) |
(fma im im (square re)) |
(+ (* (neg re) (neg re)) (* im im)) |
(fma im im (square re)) |
(+ (* re re) (* (neg im) (neg im))) |
(fma im im (square re)) |
(neg (+ (* (neg re) (neg re)) (* im im))) |
(fnmsub re re (square im)) |
(neg (+ (* re re) (* (neg im) (neg im)))) |
(fnmsub re re (square im)) |
(+ (* im im) (* re re)) |
(fma im im (square re)) |
(abs re)
(abs im)
(sort re im)
| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 0 | 0 | - | 0 | - | im |
| 0 | 0 | - | 0 | - | (*.f64 im im) |
| 0 | 0 | - | 0 | - | (*.f64 re re) |
| 0 | 0 | - | 0 | - | re |
| 0 | 0 | - | 0 | - | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 43.0ms | 512× | 0 | valid |
Compiled 45 to 17 computations (62.2% saved)
ival-mult: 9.0ms (76.4% of total)ival-add: 2.0ms (17% of total)const: 1.0ms (8.5% of total)backward-pass: 0.0ms (0% of total)Compiled 9 to 5 computations (44.4% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 100.0% | (+.f64 (*.f64 re re) (*.f64 im im)) |
Compiled 9 to 5 computations (44.4% saved)
| 1× | egg-herbie |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | 0 | (*.f64 im im) |
| ✓ | cost-diff | 0 | (*.f64 re re) |
| ✓ | cost-diff | 0 | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 4× | fma-lowering-fma.f32 |
| 4× | fma-define |
| 4× | +-lowering-+.f64 |
| 4× | *-lowering-*.f32 |
| 4× | *-lowering-*.f64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 11 |
| 1 | 9 | 11 |
| 2 | 10 | 11 |
| 0 | 10 | 11 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(+ (* re re) (* im im)) |
(* re re) |
re |
(* im im) |
im |
| Outputs |
|---|
(+ (* re re) (* im im)) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
(* re re) |
(*.f64 re re) |
re |
(* im im) |
(*.f64 im im) |
im |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (*.f64 re re) |
| ✓ | accuracy | 100.0% | (*.f64 im im) |
| ✓ | accuracy | 100.0% | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 20.0ms | 256× | 0 | valid |
Compiled 18 to 6 computations (66.7% saved)
ival-mult: 6.0ms (80.7% of total)ival-add: 1.0ms (13.5% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| Inputs |
|---|
#<alt (+ (* re re) (* im im))> |
#<alt (* re re)> |
#<alt (* im im)> |
| Outputs |
|---|
#<alt (pow im 2)> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (pow re 2)> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (pow re 2)> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (pow re 2)> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (pow im 2)> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (pow im 2)> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | re | @ | 0 | (+ (* re re) (* im im)) |
| 0.0ms | re | @ | inf | (+ (* re re) (* im im)) |
| 0.0ms | im | @ | 0 | (+ (* re re) (* im im)) |
| 0.0ms | im | @ | inf | (+ (* re re) (* im im)) |
| 0.0ms | re | @ | -inf | (+ (* re re) (* im im)) |
| 1× | batch-egg-rewrite |
| 12× | pow-to-exp |
| 12× | exp-prod |
| 12× | *-lowering-*.f32 |
| 12× | *-lowering-*.f64 |
| 10× | exp-lowering-exp.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 9 |
| 1 | 12 | 9 |
| 2 | 19 | 9 |
| 3 | 27 | 9 |
| 4 | 44 | 9 |
| 5 | 51 | 9 |
| 6 | 56 | 9 |
| 0 | 56 | 9 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(+ (* re re) (* im im)) |
(* re re) |
(* im im) |
| Outputs |
|---|
(+.f64 (*.f64 re re) (*.f64 im im)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(fma.f64 re re (*.f64 im im)) |
(fma.f64 im im (*.f64 re re)) |
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 re))) |
(pow.f64 re #s(literal 2 binary64)) |
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 re)) |
(*.f64 re re) |
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 im))) |
(pow.f64 im #s(literal 2 binary64)) |
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 im)) |
(*.f64 im im) |
| 1× | egg-herbie |
| 6730× | *-lowering-*.f32 |
| 6730× | *-lowering-*.f64 |
| 3558× | cube-prod |
| 2910× | /-lowering-/.f32 |
| 2910× | /-lowering-/.f64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 216 |
| 1 | 34 | 150 |
| 2 | 94 | 150 |
| 3 | 373 | 150 |
| 4 | 1028 | 150 |
| 5 | 2078 | 150 |
| 6 | 2395 | 150 |
| 7 | 2729 | 150 |
| 8 | 3443 | 150 |
| 9 | 4060 | 150 |
| 10 | 4979 | 150 |
| 11 | 6010 | 150 |
| 12 | 6585 | 150 |
| 13 | 6723 | 150 |
| 14 | 6723 | 150 |
| 15 | 6723 | 150 |
| 16 | 7419 | 150 |
| 0 | 8236 | 150 |
| 1× | iter limit |
| 1× | node limit |
| Inputs |
|---|
(pow im 2) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(pow re 2) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(pow re 2) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(pow re 2) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(pow im 2) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(pow im 2) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
| Outputs |
|---|
(pow im 2) |
(*.f64 im im) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow im 2) |
(*.f64 im im) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow im 2) |
(*.f64 im im) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
Compiled 404 to 26 computations (93.6% saved)
3 alts after pruning (2 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 58 | 2 | 60 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 58 | 3 | 61 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 100.0% | (fma.f64 im im (*.f64 re re)) |
| ✓ | 100.0% | (+.f64 (*.f64 re re) (*.f64 im im)) |
| ▶ | 99.3% | (*.f64 im im) |
Compiled 22 to 12 computations (45.5% saved)
| 1× | egg-herbie |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | 0 | (*.f64 re re) |
| ✓ | cost-diff | 6272 | (fma.f64 im im (*.f64 re re)) |
| ✓ | cost-diff | 0 | (*.f64 im im) |
| 4× | fma-lowering-fma.f32 |
| 4× | fma-define |
| 4× | +-lowering-+.f64 |
| 4× | *-lowering-*.f32 |
| 4× | *-lowering-*.f64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 12 |
| 1 | 9 | 12 |
| 2 | 10 | 12 |
| 0 | 10 | 12 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* im im) |
im |
(+ (* im im) (* re re)) |
im |
(* re re) |
re |
| Outputs |
|---|
(* im im) |
(*.f64 im im) |
im |
(+ (* im im) (* re re)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
im |
(* re re) |
(*.f64 re re) |
re |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (fma.f64 im im (*.f64 re re)) |
| ✓ | accuracy | 100.0% | (*.f64 re re) |
| ✓ | accuracy | 100.0% | (*.f64 im im) |
| 43.0ms | 256× | 0 | valid |
Compiled 18 to 6 computations (66.7% saved)
ival-mult: 27.0ms (84.5% of total)compiled-spec: 3.0ms (9.4% of total)ival-add: 1.0ms (3.1% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| Inputs |
|---|
#<alt (* im im)> |
#<alt (+ (* im im) (* re re))> |
#<alt (* re re)> |
| Outputs |
|---|
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow im 2)> |
#<alt (pow re 2)> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (pow im 2)> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (pow im 2)> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))> |
#<alt (pow im 2)> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (+ (pow im 2) (pow re 2))> |
#<alt (pow re 2)> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (pow re 2)> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
#<alt (pow re 2)> |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | im | @ | inf | (+ (* im im) (* re re)) |
| 0.0ms | im | @ | 0 | (* im im) |
| 0.0ms | re | @ | inf | (+ (* im im) (* re re)) |
| 0.0ms | im | @ | 0 | (+ (* im im) (* re re)) |
| 0.0ms | re | @ | -inf | (+ (* im im) (* re re)) |
| 1× | batch-egg-rewrite |
| 12× | pow-to-exp |
| 12× | exp-prod |
| 12× | *-lowering-*.f32 |
| 12× | *-lowering-*.f64 |
| 10× | exp-lowering-exp.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 9 |
| 1 | 12 | 9 |
| 2 | 19 | 9 |
| 3 | 27 | 9 |
| 4 | 44 | 9 |
| 5 | 51 | 9 |
| 6 | 56 | 9 |
| 0 | 56 | 9 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* im im) |
(+ (* im im) (* re re)) |
(* re re) |
| Outputs |
|---|
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 im))) |
(pow.f64 im #s(literal 2 binary64)) |
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 im)) |
(*.f64 im im) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
(fma.f64 im im (*.f64 re re)) |
(fma.f64 re re (*.f64 im im)) |
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 re))) |
(pow.f64 re #s(literal 2 binary64)) |
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 re)) |
(*.f64 re re) |
| 1× | egg-herbie |
| 6730× | *-lowering-*.f32 |
| 6730× | *-lowering-*.f64 |
| 3558× | cube-prod |
| 2910× | /-lowering-/.f32 |
| 2910× | /-lowering-/.f64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 216 |
| 1 | 34 | 150 |
| 2 | 94 | 150 |
| 3 | 373 | 150 |
| 4 | 1028 | 150 |
| 5 | 2083 | 150 |
| 6 | 2400 | 150 |
| 7 | 2734 | 150 |
| 8 | 3448 | 150 |
| 9 | 4065 | 150 |
| 10 | 4984 | 150 |
| 11 | 6015 | 150 |
| 12 | 6590 | 150 |
| 13 | 6728 | 150 |
| 14 | 6728 | 150 |
| 15 | 6728 | 150 |
| 16 | 7424 | 150 |
| 0 | 8241 | 150 |
| 1× | iter limit |
| 1× | node limit |
| Inputs |
|---|
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow im 2) |
(pow re 2) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(pow im 2) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(pow im 2) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(pow im 2) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(+ (pow im 2) (pow re 2)) |
(pow re 2) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(pow re 2) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
(pow re 2) |
| Outputs |
|---|
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow im 2) |
(*.f64 im im) |
(pow re 2) |
(*.f64 re re) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow im 2) |
(*.f64 im im) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow im 2) |
(*.f64 im im) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow im 2) |
(*.f64 im im) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(+ (pow im 2) (pow re 2)) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2)))) |
(+.f64 (*.f64 im im) (*.f64 re re)) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
(pow re 2) |
(*.f64 re re) |
Compiled 324 to 23 computations (92.9% saved)
3 alts after pruning (0 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 60 | 0 | 60 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 1 | 1 |
| Total | 60 | 3 | 63 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (fma.f64 im im (*.f64 re re)) |
| ✓ | 100.0% | (+.f64 (*.f64 re re) (*.f64 im im)) |
| ✓ | 99.3% | (*.f64 im im) |
Compiled 40 to 18 computations (55% saved)
| Inputs |
|---|
(*.f64 im im) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
(fma.f64 im im (*.f64 re re)) |
| Outputs |
|---|
(fma.f64 im im (*.f64 re re)) |
5 calls:
| 2.0ms | im |
| 2.0ms | re |
| 2.0ms | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 2.0ms | (*.f64 im im) |
| 2.0ms | (*.f64 re re) |
| Accuracy | Segments | Branch |
|---|---|---|
| 100.0% | 1 | re |
| 100.0% | 1 | im |
| 100.0% | 1 | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 100.0% | 1 | (*.f64 re re) |
| 100.0% | 1 | (*.f64 im im) |
Compiled 25 to 15 computations (40% saved)
| Inputs |
|---|
(*.f64 im im) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
| Outputs |
|---|
(+.f64 (*.f64 re re) (*.f64 im im)) |
5 calls:
| 1.0ms | im |
| 1.0ms | re |
| 1.0ms | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 1.0ms | (*.f64 im im) |
| 1.0ms | (*.f64 re re) |
| Accuracy | Segments | Branch |
|---|---|---|
| 100.0% | 1 | re |
| 100.0% | 1 | im |
| 100.0% | 1 | (+.f64 (*.f64 re re) (*.f64 im im)) |
| 100.0% | 1 | (*.f64 re re) |
| 100.0% | 1 | (*.f64 im im) |
Compiled 25 to 15 computations (40% saved)
Total 0.0b remaining (0%)
Threshold costs 0b (0%)
| Inputs |
|---|
(*.f64 im im) |
| Outputs |
|---|
(*.f64 im im) |
3 calls:
| 12.0ms | (*.f64 im im) |
| 1.0ms | im |
| 1.0ms | re |
| Accuracy | Segments | Branch |
|---|---|---|
| 99.3% | 1 | re |
| 99.3% | 1 | im |
| 99.3% | 1 | (*.f64 im im) |
Compiled 11 to 7 computations (36.4% saved)
| 1× | egg-herbie |
| 2× | +-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 6 | 16 |
| 1 | 7 | 16 |
| 1× | saturated |
| Inputs |
|---|
(fma.f64 im im (*.f64 re re)) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
(*.f64 im im) |
| Outputs |
|---|
(fma.f64 im im (*.f64 re re)) |
(+.f64 (*.f64 re re) (*.f64 im im)) |
(*.f64 im im) |
| 6730× | *-lowering-*.f32 |
| 6730× | *-lowering-*.f64 |
| 3558× | cube-prod |
| 2910× | /-lowering-/.f32 |
| 2910× | /-lowering-/.f64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 216 |
| 1 | 34 | 150 |
| 2 | 94 | 150 |
| 3 | 373 | 150 |
| 4 | 1028 | 150 |
| 5 | 2078 | 150 |
| 6 | 2395 | 150 |
| 7 | 2729 | 150 |
| 8 | 3443 | 150 |
| 9 | 4060 | 150 |
| 10 | 4979 | 150 |
| 11 | 6010 | 150 |
| 12 | 6585 | 150 |
| 13 | 6723 | 150 |
| 14 | 6723 | 150 |
| 15 | 6723 | 150 |
| 16 | 7419 | 150 |
| 0 | 8236 | 150 |
| 0 | 5 | 9 |
| 1 | 12 | 9 |
| 2 | 19 | 9 |
| 3 | 27 | 9 |
| 4 | 44 | 9 |
| 5 | 51 | 9 |
| 6 | 56 | 9 |
| 0 | 56 | 9 |
| 1× | done |
| 1× | iter limit |
| 1× | saturated |
| 1× | iter limit |
| 1× | node limit |
Compiled 31 to 13 computations (58.1% saved)
(sort re im)
(abs im)
(abs re)
Compiled 150 to 70 computations (53.3% saved)
Loading profile data...