
Time bar (total: 2.6s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 0 |
| 100% | 99.8% | 0% | 0.2% | 0% | 0% | 0% | 1 |
Compiled 12 to 8 computations (33.3% saved)
ival-sub: 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)| 774.0ms | 8256× | 0 | valid |
ival-mult: 165.0ms (76.1% of total)ival-sub: 41.0ms (18.9% of total)const: 8.0ms (3.7% of total)backward-pass: 3.0ms (1.4% of total)| 2× | egg-herbie |
| 778× | fnmadd-define |
| 650× | fmsub-define |
| 640× | fnmsub-define |
| 576× | sum4-define |
| 560× | fma-define |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 37 | 98 |
| 1 | 131 | 90 |
| 2 | 243 | 90 |
| 3 | 522 | 90 |
| 4 | 1392 | 90 |
| 5 | 2590 | 90 |
| 6 | 2906 | 90 |
| 7 | 2930 | 90 |
| 0 | 7 | 6 |
| 1 | 16 | 6 |
| 2 | 32 | 6 |
| 3 | 51 | 6 |
| 4 | 81 | 6 |
| 5 | 156 | 6 |
| 6 | 296 | 6 |
| 7 | 518 | 6 |
| 8 | 835 | 6 |
| 9 | 1198 | 6 |
| 10 | 1372 | 6 |
| 11 | 1394 | 6 |
| 0 | 1394 | 6 |
| 1× | iter limit |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
| Outputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| Inputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(- (* (neg x.re) y.re) (* x.im y.im)) |
(- (* x.re y.re) (* (neg x.im) y.im)) |
(- (* x.re (neg y.re)) (* x.im y.im)) |
(- (* x.re y.re) (* x.im (neg y.im))) |
(neg (- (* (neg x.re) y.re) (* x.im y.im))) |
(neg (- (* x.re y.re) (* (neg x.im) y.im))) |
(neg (- (* x.re (neg y.re)) (* x.im y.im))) |
(neg (- (* x.re y.re) (* x.im (neg y.im)))) |
(- (* x.im y.re) (* x.re y.im)) |
(- (* y.re x.re) (* x.im y.im)) |
(- (* y.im y.re) (* x.im x.re)) |
(- (* x.re x.im) (* y.re y.im)) |
(- (* x.re y.re) (* y.im x.im)) |
(- (* x.re y.im) (* x.im y.re)) |
| Outputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(fmsub x.re y.re (* x.im y.im)) |
(- (* (neg x.re) y.re) (* x.im y.im)) |
(fnmsub x.re y.re (* x.im y.im)) |
(- (* x.re y.re) (* (neg x.im) y.im)) |
(fma x.re y.re (* x.im y.im)) |
(- (* x.re (neg y.re)) (* x.im y.im)) |
(fnmsub x.re y.re (* x.im y.im)) |
(- (* x.re y.re) (* x.im (neg y.im))) |
(fma x.re y.re (* x.im y.im)) |
(neg (- (* (neg x.re) y.re) (* x.im y.im))) |
(fma x.re y.re (* x.im y.im)) |
(neg (- (* x.re y.re) (* (neg x.im) y.im))) |
(fnmsub x.re y.re (* x.im y.im)) |
(neg (- (* x.re (neg y.re)) (* x.im y.im))) |
(fma x.re y.re (* x.im y.im)) |
(neg (- (* x.re y.re) (* x.im (neg y.im)))) |
(fnmsub x.re y.re (* x.im y.im)) |
(- (* x.im y.re) (* x.re y.im)) |
(fmsub y.re x.im (* x.re y.im)) |
(- (* y.re x.re) (* x.im y.im)) |
(fmsub x.re y.re (* x.im y.im)) |
(- (* y.im y.re) (* x.im x.re)) |
(fmsub y.re y.im (* x.re x.im)) |
(- (* x.re x.im) (* y.re y.im)) |
(fmsub x.re x.im (* y.re y.im)) |
(- (* x.re y.re) (* y.im x.im)) |
(fmsub x.re y.re (* x.im y.im)) |
(- (* x.re y.im) (* x.im y.re)) |
(fmsub x.re y.im (* y.re x.im)) |
(sort x.re y.re)
(sort x.im y.im)
| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 2 | 0 | - | 0 | - | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| 0 | 0 | - | 0 | - | x.im |
| 0 | 0 | - | 0 | - | (*.f64 x.re y.re) |
| 0 | 0 | - | 0 | - | (*.f64 x.im y.im) |
| 0 | 0 | - | 0 | - | y.im |
| 0 | 0 | - | 0 | - | y.re |
| 0 | 0 | - | 0 | - | x.re |
| 62.0ms | 512× | 0 | valid |
Compiled 55 to 23 computations (58.2% saved)
ival-sub: 9.0ms (51.4% of total)ival-mult: 8.0ms (45.7% of total)const: 1.0ms (5.7% of total)backward-pass: 0.0ms (0% of total)Compiled 11 to 7 computations (36.4% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 99.2% | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
Compiled 11 to 7 computations (36.4% saved)
| 1× | egg-herbie |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | 0 | (*.f64 x.im y.im) |
| ✓ | cost-diff | 0 | (*.f64 x.re y.re) |
| ✓ | cost-diff | 0 | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| 420× | fnmadd-define |
| 342× | fma-define |
| 294× | sum3-define |
| 240× | sum4-define |
| 232× | fma-lowering-fma.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 16 |
| 1 | 16 | 16 |
| 2 | 32 | 16 |
| 3 | 51 | 16 |
| 4 | 81 | 16 |
| 5 | 156 | 16 |
| 6 | 296 | 16 |
| 7 | 518 | 16 |
| 8 | 835 | 16 |
| 9 | 1198 | 16 |
| 10 | 1372 | 16 |
| 11 | 1394 | 16 |
| 0 | 1394 | 16 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(* x.re y.re) |
x.re |
y.re |
(* x.im y.im) |
x.im |
y.im |
| Outputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
x.re |
y.re |
(* x.im y.im) |
(*.f64 x.im y.im) |
x.im |
y.im |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (*.f64 x.re y.re) |
| ✓ | accuracy | 100.0% | (*.f64 x.im y.im) |
| ✓ | accuracy | 99.3% | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| 31.0ms | 256× | 0 | valid |
Compiled 22 to 8 computations (63.6% saved)
ival-mult: 9.0ms (79.8% of total)ival-sub: 1.0ms (8.9% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| Inputs |
|---|
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (* x.re y.re)> |
#<alt (* x.im y.im)> |
| Outputs |
|---|
#<alt (* -1 (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (* x.re y.re)> |
#<alt (* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re))))> |
#<alt (* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re))))> |
#<alt (* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re))))> |
#<alt (* x.re y.re)> |
#<alt (* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re))))> |
#<alt (* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re))))> |
#<alt (* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re))))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (- (* x.re y.re) (* x.im y.im))> |
#<alt (* x.re y.re)> |
#<alt (* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re))))> |
#<alt (* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re))))> |
#<alt (* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re))))> |
#<alt (* x.re y.re)> |
#<alt (* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re))))> |
#<alt (* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re))))> |
#<alt (* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re))))> |
#<alt (* x.re y.re)> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* x.im (- (/ (* x.re y.re) x.im) y.im))> |
#<alt (* x.im (- (/ (* x.re y.re) x.im) y.im))> |
#<alt (* x.im (- (/ (* x.re y.re) x.im) y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im))))> |
#<alt (* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im))))> |
#<alt (* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im))))> |
#<alt (* x.re y.re)> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (+ (* -1 (* x.im y.im)) (* x.re y.re))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* y.im (- (/ (* x.re y.re) y.im) x.im))> |
#<alt (* y.im (- (/ (* x.re y.re) y.im) x.im))> |
#<alt (* y.im (- (/ (* x.re y.re) y.im) x.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im))))> |
#<alt (* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im))))> |
#<alt (* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im))))> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
24 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | y.re | @ | -inf | (* x.re y.re) |
| 0.0ms | x.im | @ | 0 | (- (* x.re y.re) (* x.im y.im)) |
| 0.0ms | x.re | @ | 0 | (- (* x.re y.re) (* x.im y.im)) |
| 0.0ms | x.re | @ | -inf | (- (* x.re y.re) (* x.im y.im)) |
| 0.0ms | y.im | @ | inf | (- (* x.re y.re) (* x.im y.im)) |
| 1× | batch-egg-rewrite |
| 2398× | sum4-define |
| 1706× | +-lowering-+.f64 |
| 1706× | +-lowering-+.f32 |
| 1194× | fma-define |
| 1048× | fnmadd-define |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 12 |
| 1 | 22 | 12 |
| 2 | 55 | 12 |
| 3 | 262 | 12 |
| 4 | 1312 | 12 |
| 5 | 4095 | 12 |
| 6 | 7821 | 12 |
| 0 | 8148 | 12 |
| 1× | iter limit |
| 1× | node limit |
| Inputs |
|---|
(- (* x.re y.re) (* x.im y.im)) |
(* x.re y.re) |
(* x.im y.im) |
| Outputs |
|---|
(+.f64 (*.f64 x.re y.re) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(+.f64 (*.f64 x.re y.re) (neg.f64 (+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im)))) |
(+.f64 (*.f64 x.re y.re) (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (*.f64 x.re y.re) (neg.f64 (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))))) |
(+.f64 x.im (+.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))) (*.f64 x.re y.re))) |
(+.f64 y.im (+.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))) (*.f64 x.re y.re))) |
(+.f64 (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) #s(literal 0 binary64)) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) #s(literal -1 binary64))) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (+.f64 (-.f64 y.im (*.f64 x.im y.im)) (*.f64 x.re y.re))) |
(+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 x.re y.re)) |
(+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) #s(literal -1 binary64))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (+.f64 (-.f64 x.im (*.f64 x.im y.im)) (*.f64 x.re y.re))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (*.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) #s(literal -1 binary64))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (*.f64 x.im y.im)) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (neg.f64 (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))))) |
(+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (neg.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(+.f64 (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))))) |
(+.f64 (*.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) #s(literal -1 binary64)) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(+.f64 (*.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) #s(literal -1 binary64)) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 (*.f64 x.im y.im) #s(literal -4 binary64))) |
(+.f64 (-.f64 (*.f64 x.re y.re) x.im) (-.f64 x.im (*.f64 x.im y.im))) |
(+.f64 (-.f64 (*.f64 x.re y.re) y.im) (-.f64 y.im (*.f64 x.im y.im))) |
(+.f64 (+.f64 (*.f64 x.re y.re) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(+.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.re y.re)) (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(+.f64 (-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) x.im) (neg.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))))) |
(+.f64 (-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) y.im) (neg.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) y.im) (neg.f64 (-.f64 y.im (*.f64 x.im y.im)))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) x.im) (neg.f64 (-.f64 x.im (*.f64 x.im y.im)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im))) |
(-.f64 (*.f64 x.re y.re) (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(-.f64 (*.f64 x.im y.im) (-.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 x.re y.re))) |
(-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) #s(literal 0 binary64)) |
(-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(-.f64 #s(literal 0 binary64) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(-.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(-.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.re y.re)) (*.f64 x.re y.re)) |
(-.f64 (-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(-.f64 (-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(-.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) y.im) (-.f64 y.im (*.f64 x.im y.im))) |
(-.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) x.im) (-.f64 x.im (*.f64 x.im y.im))) |
(fma.f64 x.re y.re (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 y.re x.re (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 x.im y.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 x.im (-.f64 #s(literal 0 binary64) y.im) (*.f64 x.re y.re)) |
(fma.f64 x.im #s(literal 0 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 x.im (*.f64 y.im #s(literal -2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 y.im x.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 y.im #s(literal 0 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 y.im (-.f64 #s(literal 0 binary64) x.im) (*.f64 x.re y.re)) |
(fma.f64 y.im (*.f64 x.im #s(literal -2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im y.im) #s(literal -1 binary64) (*.f64 x.re y.re)) |
(fma.f64 (*.f64 x.im y.im) #s(literal 1 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 x.im y.im) #s(literal -2 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) x.im (*.f64 x.re y.re)) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) (-.f64 #s(literal 0 binary64) x.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) (*.f64 x.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 0 binary64) (*.f64 x.im y.im) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal -1 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal 2 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) y.im (*.f64 x.re y.re)) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) (-.f64 #s(literal 0 binary64) y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) (*.f64 y.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im y.im) (*.f64 x.re y.re)) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 #s(literal -1 binary64) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re)) #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 x.re y.re)) |
(fma.f64 #s(literal 2 binary64) #s(literal 0 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 2 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) #s(literal -1 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal -2 binary64) (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 y.im #s(literal -2 binary64)) x.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im #s(literal -2 binary64)) y.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 y.im #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(neg.f64 (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(*.f64 #s(literal -1 binary64) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(*.f64 (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re)) #s(literal -1 binary64)) |
(+.f64 (*.f64 x.re y.re) #s(literal 0 binary64)) |
(+.f64 (*.f64 x.re y.re) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(+.f64 x.im (+.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(+.f64 y.im (+.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(+.f64 (*.f64 x.im y.im) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im y.im)) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (neg.f64 (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))))) |
(+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (neg.f64 (-.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im)))) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (+.f64 (-.f64 y.im (*.f64 x.im y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(+.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) |
(+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (+.f64 (-.f64 x.im (*.f64 x.im y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (neg.f64 (-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (neg.f64 (+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (neg.f64 (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(+.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)))) |
(+.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64))) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (-.f64 #s(literal 0 binary64) y.im)) (-.f64 y.im (*.f64 x.im y.im))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (-.f64 #s(literal 0 binary64) x.im)) (-.f64 x.im (*.f64 x.im y.im))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 (*.f64 x.im y.im) #s(literal -4 binary64))) |
(+.f64 (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(+.f64 (+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 x.im y.im)) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) |
(+.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.re y.re)) (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(+.f64 (-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) x.im) (neg.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))))) |
(+.f64 (-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) y.im) (neg.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))))) |
(+.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) y.im) (neg.f64 (-.f64 y.im (*.f64 x.im y.im)))) |
(+.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) x.im) (neg.f64 (-.f64 x.im (*.f64 x.im y.im)))) |
(-.f64 (*.f64 x.re y.re) #s(literal 0 binary64)) |
(-.f64 (*.f64 x.re y.re) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(-.f64 (*.f64 x.im y.im) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (-.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im))) |
(-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(-.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (-.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 x.re y.re))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (*.f64 x.im y.im)) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 x.im y.im))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re)))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(-.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (+.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re)) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)))) |
(-.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64))) |
(-.f64 (+.f64 (*.f64 x.im y.im) (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re))) |
(-.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.re y.re)) (*.f64 x.re y.re)) |
(-.f64 (-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(-.f64 (-.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(-.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) y.im) (-.f64 y.im (*.f64 x.im y.im))) |
(-.f64 (+.f64 (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) x.im) (-.f64 x.im (*.f64 x.im y.im))) |
(fma.f64 x.re y.re #s(literal 0 binary64)) |
(fma.f64 x.re y.re (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(fma.f64 y.re x.re #s(literal 0 binary64)) |
(fma.f64 y.re x.re (*.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(fma.f64 x.im y.im (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 x.im (-.f64 #s(literal 0 binary64) y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 x.im #s(literal 0 binary64) (*.f64 x.re y.re)) |
(fma.f64 x.im (*.f64 y.im #s(literal -2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 x.im (*.f64 y.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 y.im x.im (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 y.im #s(literal 0 binary64) (*.f64 x.re y.re)) |
(fma.f64 y.im (-.f64 #s(literal 0 binary64) x.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 y.im (*.f64 x.im #s(literal -2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 y.im (*.f64 x.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 x.im y.im) #s(literal -1 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im y.im) #s(literal 1 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im y.im) #s(literal 2 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 x.im y.im) #s(literal -2 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) x.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) (-.f64 #s(literal 0 binary64) x.im) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) (*.f64 x.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 #s(literal 0 binary64) (*.f64 x.im y.im) (*.f64 x.re y.re)) |
(fma.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal -1 binary64) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal 2 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) y.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) (-.f64 #s(literal 0 binary64) y.im) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) (*.f64 y.im #s(literal 2 binary64)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal -1 binary64) (-.f64 (*.f64 x.im y.im) (*.f64 x.re y.re)) (*.f64 x.im y.im)) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im y.im) (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 2 binary64) (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 #s(literal 2 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) #s(literal -1 binary64) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 #s(literal -2 binary64) (*.f64 x.im y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (*.f64 y.im #s(literal -2 binary64)) x.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (*.f64 x.im #s(literal -2 binary64)) y.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (*.f64 y.im #s(literal 2 binary64)) x.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 y.im #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(fma.f64 (*.f64 x.im #s(literal 2 binary64)) y.im (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))))) |
(fma.f64 (*.f64 x.im #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) y.im) (+.f64 (*.f64 x.re y.re) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(neg.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(*.f64 x.re y.re) |
(*.f64 x.re (neg.f64 (-.f64 #s(literal 0 binary64) y.re))) |
(*.f64 y.re x.re) |
(*.f64 y.re (neg.f64 (-.f64 #s(literal 0 binary64) x.re))) |
(*.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x.re y.re))) |
(*.f64 #s(literal 1 binary64) (*.f64 x.re y.re)) |
(*.f64 (-.f64 #s(literal 0 binary64) y.re) (-.f64 #s(literal 0 binary64) x.re)) |
(*.f64 (-.f64 #s(literal 0 binary64) x.re) (-.f64 #s(literal 0 binary64) y.re)) |
(*.f64 (neg.f64 (-.f64 #s(literal 0 binary64) y.re)) x.re) |
(*.f64 (neg.f64 (-.f64 #s(literal 0 binary64) x.re)) y.re) |
(+.f64 x.im (neg.f64 (-.f64 x.im (*.f64 x.im y.im)))) |
(+.f64 x.im (*.f64 #s(literal -1 binary64) (-.f64 x.im (*.f64 x.im y.im)))) |
(+.f64 x.im (*.f64 (-.f64 x.im (*.f64 x.im y.im)) #s(literal -1 binary64))) |
(+.f64 x.im (+.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 y.im (neg.f64 (-.f64 y.im (*.f64 x.im y.im)))) |
(+.f64 y.im (*.f64 #s(literal -1 binary64) (-.f64 y.im (*.f64 x.im y.im)))) |
(+.f64 y.im (*.f64 (-.f64 y.im (*.f64 x.im y.im)) #s(literal -1 binary64))) |
(+.f64 y.im (+.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (neg.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))))) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (*.f64 #s(literal -1 binary64) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))))) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (*.f64 (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im))) #s(literal -1 binary64))) |
(+.f64 (-.f64 #s(literal 0 binary64) y.im) (+.f64 (-.f64 y.im (*.f64 x.im y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (neg.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (*.f64 #s(literal -1 binary64) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (*.f64 (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im))) #s(literal -1 binary64))) |
(+.f64 (-.f64 #s(literal 0 binary64) x.im) (+.f64 (-.f64 x.im (*.f64 x.im y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (neg.f64 (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)))) |
(+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(+.f64 (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)) (neg.f64 (*.f64 (*.f64 x.im y.im) #s(literal -4 binary64)))) |
(+.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (*.f64 #s(literal 1 binary64) (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64))) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (*.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) #s(literal 1 binary64)) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(+.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(+.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(+.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (-.f64 #s(literal 0 binary64) y.im)) (-.f64 y.im (*.f64 x.im y.im))) |
(+.f64 (+.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (-.f64 #s(literal 0 binary64) x.im)) (-.f64 x.im (*.f64 x.im y.im))) |
(+.f64 (+.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (*.f64 x.im y.im)) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) |
(+.f64 (+.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) (*.f64 (*.f64 x.im y.im) #s(literal -4 binary64))) |
(-.f64 x.im (-.f64 x.im (*.f64 x.im y.im))) |
(-.f64 y.im (-.f64 y.im (*.f64 x.im y.im))) |
(-.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(-.f64 (-.f64 #s(literal 0 binary64) y.im) (*.f64 y.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) x.im)))) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 x.im (*.f64 y.im #s(literal -2 binary64)))) |
(-.f64 (-.f64 #s(literal 0 binary64) x.im) (*.f64 x.im (+.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) y.im)))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal -2 binary64))) (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64))) |
(-.f64 (*.f64 x.im (*.f64 y.im #s(literal 2 binary64))) (*.f64 x.im y.im)) |
(-.f64 (*.f64 (*.f64 x.im y.im) #s(literal -3 binary64)) (*.f64 (*.f64 x.im y.im) #s(literal -4 binary64))) |
(-.f64 (*.f64 (*.f64 x.im y.im) #s(literal 3 binary64)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 x.im y.im #s(literal 0 binary64)) |
(fma.f64 x.im (-.f64 #s(literal 0 binary64) y.im) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 x.im (*.f64 y.im #s(literal 2 binary64)) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 y.im x.im #s(literal 0 binary64)) |
(fma.f64 y.im (-.f64 #s(literal 0 binary64) x.im) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 y.im (*.f64 x.im #s(literal 2 binary64)) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 (*.f64 x.im y.im) #s(literal -1 binary64) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 (*.f64 x.im y.im) #s(literal 1 binary64) #s(literal 0 binary64)) |
(fma.f64 (*.f64 x.im y.im) #s(literal 2 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) x.im (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) (-.f64 #s(literal 0 binary64) x.im) #s(literal 0 binary64)) |
(fma.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) y.im (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) (-.f64 #s(literal 0 binary64) y.im) #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im y.im) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal 0 binary64)) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im y.im) #s(literal 0 binary64)) |
(fma.f64 #s(literal 1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) (*.f64 x.im (*.f64 y.im #s(literal 2 binary64)))) |
(fma.f64 #s(literal 2 binary64) (*.f64 x.im y.im) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 (*.f64 y.im #s(literal 2 binary64)) x.im (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 (*.f64 x.im #s(literal 2 binary64)) y.im (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(neg.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(*.f64 x.im y.im) |
(*.f64 y.im x.im) |
(*.f64 (*.f64 x.im y.im) #s(literal 1 binary64)) |
(*.f64 (-.f64 #s(literal 0 binary64) y.im) (-.f64 #s(literal 0 binary64) x.im)) |
(*.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal -1 binary64)) |
(*.f64 (-.f64 #s(literal 0 binary64) x.im) (-.f64 #s(literal 0 binary64) y.im)) |
(*.f64 #s(literal -1 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(*.f64 #s(literal 1 binary64) (*.f64 x.im y.im)) |
| 1× | egg-herbie |
| 2018× | *-lowering-*.f32 |
| 2018× | *-lowering-*.f64 |
| 2008× | fma-lowering-fma.f32 |
| 2008× | fma-lowering-fma.f64 |
| 1940× | fmm-def |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 42 | 438 |
| 1 | 150 | 426 |
| 2 | 450 | 426 |
| 3 | 1565 | 426 |
| 4 | 6440 | 426 |
| 0 | 8131 | 426 |
| 1× | iter limit |
| 1× | node limit |
| Inputs |
|---|
(* -1 (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(* x.re y.re) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(* x.re y.re) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(* -1 (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(* x.re y.re) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(* x.re y.re) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(* x.re y.re) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(* -1 (* x.im y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(* x.re y.re) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(* -1 (* x.im y.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
| Outputs |
|---|
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re (+ y.re (* -1 (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* x.re (+ (* -1 y.re) (/ (* x.im y.im) x.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(- (* x.re y.re) (* x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* y.re (+ x.re (* -1 (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* y.re (+ (* -1 x.re) (/ (* x.im y.im) y.re)))) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* x.im (- (/ (* x.re y.re) x.im) y.im)) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* -1 (* x.im (- (* -1 (/ (* x.re y.re) x.im)) (* -1 y.im)))) |
(*.f64 x.im (-.f64 (/.f64 (*.f64 x.re y.re) x.im) y.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(+ (* -1 (* x.im y.im)) (* x.re y.re)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* y.im (- (/ (* x.re y.re) y.im) x.im)) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* -1 (* y.im (- (* -1 (/ (* x.re y.re) y.im)) (* -1 x.im)))) |
(*.f64 y.im (-.f64 (/.f64 (*.f64 x.re y.re) y.im) x.im)) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
Compiled 5174 to 615 computations (88.1% saved)
3 alts after pruning (2 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 390 | 2 | 392 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 390 | 3 | 393 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 99.2% | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| ▶ | 54.1% | (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
| ▶ | 51.2% | (*.f64 x.re y.re) |
Compiled 27 to 19 computations (29.6% saved)
| 1× | egg-herbie |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | 0 | (*.f64 x.im y.im) |
| ✓ | cost-diff | 0 | (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
| ✓ | cost-diff | 0 | (*.f64 x.re y.re) |
| 78× | fma-define |
| 72× | sum3-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 28× | *-lowering-*.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 15 |
| 1 | 15 | 15 |
| 2 | 26 | 15 |
| 3 | 44 | 15 |
| 4 | 61 | 15 |
| 5 | 84 | 15 |
| 6 | 108 | 15 |
| 7 | 118 | 15 |
| 8 | 155 | 15 |
| 9 | 184 | 15 |
| 0 | 184 | 15 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* x.re y.re) |
x.re |
y.re |
(- 0 (* x.im y.im)) |
0 |
(* x.im y.im) |
x.im |
y.im |
| Outputs |
|---|
(* x.re y.re) |
(*.f64 x.re y.re) |
x.re |
y.re |
(- 0 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
0 |
#s(literal 0 binary64) |
(* x.im y.im) |
(*.f64 x.im y.im) |
x.im |
y.im |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
| ✓ | accuracy | 100.0% | (*.f64 x.im y.im) |
| ✓ | accuracy | 100.0% | (*.f64 x.re y.re) |
| 27.0ms | 256× | 0 | valid |
Compiled 21 to 9 computations (57.1% saved)
ival-mult: 5.0ms (70.9% of total)ival-sub: 1.0ms (14.2% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| Inputs |
|---|
#<alt (* x.re y.re)> |
#<alt (- 0 (* x.im y.im))> |
#<alt (* x.im y.im)> |
| Outputs |
|---|
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* x.re y.re)> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
18 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | x.im | @ | 0 | (- 0 (* x.im y.im)) |
| 0.0ms | x.im | @ | -inf | (- 0 (* x.im y.im)) |
| 0.0ms | x.im | @ | inf | (- 0 (* x.im y.im)) |
| 0.0ms | y.im | @ | -inf | (- 0 (* x.im y.im)) |
| 0.0ms | y.im | @ | inf | (- 0 (* x.im y.im)) |
| 1× | batch-egg-rewrite |
| 78× | fma-define |
| 72× | sum3-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 28× | *-lowering-*.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 10 |
| 1 | 15 | 10 |
| 2 | 26 | 10 |
| 3 | 44 | 10 |
| 4 | 61 | 10 |
| 5 | 84 | 10 |
| 6 | 108 | 10 |
| 7 | 118 | 10 |
| 8 | 155 | 10 |
| 9 | 184 | 10 |
| 0 | 184 | 10 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* x.re y.re) |
(- 0 (* x.im y.im)) |
(* x.im y.im) |
| Outputs |
|---|
(*.f64 x.re y.re) |
(*.f64 y.re x.re) |
(+.f64 #s(literal 0 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(+.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal 0 binary64)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(-.f64 (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) #s(literal 0 binary64)) |
(fma.f64 #s(literal 0 binary64) x.im (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 #s(literal 0 binary64) y.im (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 x.im #s(literal 0 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 x.im (-.f64 #s(literal 0 binary64) y.im) #s(literal 0 binary64)) |
(fma.f64 y.im #s(literal 0 binary64) (*.f64 x.im (-.f64 #s(literal 0 binary64) y.im))) |
(fma.f64 y.im (-.f64 #s(literal 0 binary64) x.im) #s(literal 0 binary64)) |
(fma.f64 (*.f64 x.im y.im) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) y.im #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im y.im) #s(literal 0 binary64)) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) x.im #s(literal 0 binary64)) |
(neg.f64 (*.f64 x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(*.f64 y.im (-.f64 #s(literal 0 binary64) x.im)) |
(*.f64 (*.f64 x.im y.im) #s(literal -1 binary64)) |
(*.f64 (-.f64 #s(literal 0 binary64) x.im) y.im) |
(*.f64 #s(literal -1 binary64) (*.f64 x.im y.im)) |
(*.f64 (-.f64 #s(literal 0 binary64) y.im) x.im) |
(+.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(+.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(-.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(fma.f64 x.im y.im #s(literal 0 binary64)) |
(fma.f64 y.im x.im #s(literal 0 binary64)) |
(*.f64 x.im y.im) |
(*.f64 y.im x.im) |
| 1× | egg-herbie |
| 88× | sum3-define |
| 76× | fma-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 28× | *-lowering-*.f32 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 240 |
| 1 | 14 | 240 |
| 2 | 27 | 240 |
| 3 | 31 | 240 |
| 4 | 35 | 240 |
| 5 | 57 | 240 |
| 6 | 89 | 240 |
| 7 | 101 | 240 |
| 8 | 124 | 240 |
| 9 | 191 | 240 |
| 0 | 191 | 240 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* x.re y.re) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
| Outputs |
|---|
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* x.re y.re) |
(*.f64 x.re y.re) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* -1 (* x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
Compiled 493 to 44 computations (91.1% saved)
3 alts after pruning (1 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 101 | 1 | 102 |
| Fresh | 0 | 0 | 0 |
| Picked | 1 | 1 | 2 |
| Done | 0 | 1 | 1 |
| Total | 102 | 3 | 105 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 99.2% | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| ✓ | 51.2% | (*.f64 x.re y.re) |
| ▶ | 54.1% | (neg.f64 (*.f64 x.im y.im)) |
Compiled 26 to 18 computations (30.8% saved)
| 1× | egg-herbie |
Found 2 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | -64 | (neg.f64 (*.f64 x.im y.im)) |
| ✓ | cost-diff | 0 | (*.f64 x.im y.im) |
| 88× | sum3-define |
| 76× | fma-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 24× | fmsub-define |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 4 | 9 |
| 1 | 13 | 9 |
| 2 | 22 | 9 |
| 3 | 32 | 9 |
| 4 | 54 | 9 |
| 5 | 86 | 9 |
| 6 | 98 | 9 |
| 7 | 121 | 9 |
| 8 | 188 | 9 |
| 0 | 188 | 9 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(neg (* x.im y.im)) |
(* x.im y.im) |
x.im |
y.im |
| Outputs |
|---|
(neg (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* x.im y.im) |
(*.f64 x.im y.im) |
x.im |
y.im |
Found 2 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (*.f64 x.im y.im) |
| ✓ | accuracy | 100.0% | (neg.f64 (*.f64 x.im y.im)) |
| 21.0ms | 256× | 0 | valid |
Compiled 14 to 7 computations (50% saved)
ival-mult: 2.0ms (51.7% of total)ival-neg: 1.0ms (25.9% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| Inputs |
|---|
#<alt (* x.im y.im)> |
#<alt (neg (* x.im y.im))> |
| Outputs |
|---|
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* x.im y.im)> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
#<alt (* -1 (* x.im y.im))> |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | x.im | @ | inf | (neg (* x.im y.im)) |
| 0.0ms | x.im | @ | 0 | (* x.im y.im) |
| 0.0ms | x.im | @ | -inf | (neg (* x.im y.im)) |
| 0.0ms | y.im | @ | -inf | (neg (* x.im y.im)) |
| 0.0ms | y.im | @ | inf | (neg (* x.im y.im)) |
| 1× | batch-egg-rewrite |
| 88× | sum3-define |
| 76× | fma-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 24× | +-lowering-+.f64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 4 | 7 |
| 1 | 13 | 7 |
| 2 | 22 | 7 |
| 3 | 32 | 7 |
| 4 | 54 | 7 |
| 5 | 86 | 7 |
| 6 | 98 | 7 |
| 7 | 121 | 7 |
| 8 | 188 | 7 |
| 0 | 188 | 7 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* x.im y.im) |
(neg (* x.im y.im)) |
| Outputs |
|---|
(+.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(+.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(-.f64 (*.f64 x.im y.im) #s(literal 0 binary64)) |
(fma.f64 x.im y.im #s(literal 0 binary64)) |
(fma.f64 y.im x.im #s(literal 0 binary64)) |
(*.f64 x.im y.im) |
(*.f64 y.im x.im) |
(+.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) #s(literal 0 binary64)) |
(+.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im))) |
(-.f64 (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) #s(literal 0 binary64)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(fma.f64 x.im #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im))) |
(fma.f64 x.im (-.f64 #s(literal 0 binary64) y.im) #s(literal 0 binary64)) |
(fma.f64 y.im #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im))) |
(fma.f64 y.im (-.f64 #s(literal 0 binary64) x.im) #s(literal 0 binary64)) |
(fma.f64 (*.f64 x.im y.im) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 #s(literal 0 binary64) x.im (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im))) |
(fma.f64 #s(literal 0 binary64) y.im (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im))) |
(fma.f64 #s(literal -1 binary64) (*.f64 x.im y.im) #s(literal 0 binary64)) |
(fma.f64 (-.f64 #s(literal 0 binary64) x.im) y.im #s(literal 0 binary64)) |
(fma.f64 (-.f64 #s(literal 0 binary64) y.im) x.im #s(literal 0 binary64)) |
(neg.f64 (*.f64 x.im y.im)) |
(*.f64 x.im (-.f64 #s(literal 0 binary64) y.im)) |
(*.f64 y.im (-.f64 #s(literal 0 binary64) x.im)) |
(*.f64 (*.f64 x.im y.im) #s(literal -1 binary64)) |
(*.f64 #s(literal -1 binary64) (*.f64 x.im y.im)) |
(*.f64 (-.f64 #s(literal 0 binary64) x.im) y.im) |
(*.f64 (-.f64 #s(literal 0 binary64) y.im) x.im) |
| 1× | egg-herbie |
| 88× | sum3-define |
| 76× | fma-define |
| 32× | fma-lowering-fma.f32 |
| 32× | fma-lowering-fma.f64 |
| 24× | fmsub-define |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 168 |
| 1 | 10 | 168 |
| 2 | 23 | 168 |
| 3 | 27 | 168 |
| 4 | 31 | 168 |
| 5 | 53 | 168 |
| 6 | 85 | 168 |
| 7 | 97 | 168 |
| 8 | 120 | 168 |
| 9 | 187 | 168 |
| 0 | 187 | 168 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* x.im y.im) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
(* -1 (* x.im y.im)) |
| Outputs |
|---|
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* x.im y.im) |
(*.f64 x.im y.im) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(* -1 (* x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
Compiled 384 to 42 computations (89.1% saved)
3 alts after pruning (0 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 76 | 0 | 76 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 2 | 2 |
| Total | 76 | 3 | 79 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 99.2% | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| ✓ | 51.2% | (*.f64 x.re y.re) |
| ✓ | 54.1% | (neg.f64 (*.f64 x.im y.im)) |
Compiled 49 to 28 computations (42.9% saved)
| Inputs |
|---|
(*.f64 x.re y.re) |
(neg.f64 (*.f64 x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| Outputs |
|---|
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
7 calls:
| 3.0ms | x.im |
| 2.0ms | x.re |
| 2.0ms | y.re |
| 2.0ms | y.im |
| 2.0ms | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| Accuracy | Segments | Branch |
|---|---|---|
| 99.2% | 1 | x.re |
| 99.2% | 1 | x.im |
| 99.2% | 1 | y.re |
| 99.2% | 1 | y.im |
| 99.2% | 1 | (-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
| 99.2% | 1 | (*.f64 x.re y.re) |
| 99.2% | 1 | (*.f64 x.im y.im) |
Compiled 45 to 33 computations (26.7% saved)
| Inputs |
|---|
(*.f64 x.re y.re) |
(neg.f64 (*.f64 x.im y.im)) |
(-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) |
| Outputs |
|---|
(*.f64 x.re y.re) |
(neg.f64 (*.f64 x.im y.im)) |
(*.f64 x.re y.re) |
6 calls:
| 3.0ms | x.re |
| 2.0ms | y.re |
| 2.0ms | x.im |
| 2.0ms | y.im |
| 2.0ms | (*.f64 x.re y.re) |
| Accuracy | Segments | Branch |
|---|---|---|
| 75.7% | 3 | x.re |
| 73.8% | 3 | x.im |
| 77.7% | 3 | y.re |
| 74.0% | 3 | y.im |
| 81.5% | 3 | (*.f64 x.re y.re) |
| 80.2% | 3 | (*.f64 x.im y.im) |
Compiled 34 to 26 computations (23.5% saved)
Total -0.0b remaining (-0%)
Threshold costs -0b (-0%)
| Inputs |
|---|
(*.f64 x.re y.re) |
| Outputs |
|---|
(*.f64 x.re y.re) |
5 calls:
| 1.0ms | y.re |
| 1.0ms | x.re |
| 1.0ms | y.im |
| 1.0ms | x.im |
| 1.0ms | (*.f64 x.re y.re) |
| Accuracy | Segments | Branch |
|---|---|---|
| 51.2% | 1 | x.im |
| 51.2% | 1 | y.im |
| 51.2% | 1 | x.re |
| 51.2% | 1 | y.re |
| 51.2% | 1 | (*.f64 x.re y.re) |
Compiled 27 to 21 computations (22.2% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 11.0ms | 4.2438349158991646e-30 | 1.46705082371955e-26 |
| 39.0ms | -3.715828573757422e-17 | -1.2493548187596497e-20 |
| 14.0ms | 256× | 0 | valid |
Compiled 258 to 205 computations (20.5% saved)
ival-mult: 2.0ms (48.2% of total)ival-sub: 1.0ms (24.1% of total)const: 0.0ms (0% of total)backward-pass: 0.0ms (0% of total)| 1× | egg-herbie |
| 10× | *-commutative_binary64 |
| 8× | +-commutative_binary64 |
| 8× | sub-neg_binary64 |
| 6× | neg-sub0_binary64 |
| 6× | cancel-sign-sub-inv_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 14 | 30 |
| 1 | 29 | 30 |
| 2 | 40 | 30 |
| 3 | 45 | 30 |
| 4 | 47 | 30 |
| 1× | saturated |
| Inputs |
|---|
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(if (<=.f64 (*.f64 x.re y.re) #s(literal -8099983099314331/41538374868278621028243970633760768 binary64)) (*.f64 x.re y.re) (if (<=.f64 (*.f64 x.re y.re) #s(literal 1080192345553827/696898287454081973172991196020261297061888 binary64)) (neg.f64 (*.f64 x.im y.im)) (*.f64 x.re y.re))) |
(*.f64 x.re y.re) |
| Outputs |
|---|
(-.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) |
(if (<=.f64 (*.f64 x.re y.re) #s(literal -8099983099314331/41538374868278621028243970633760768 binary64)) (*.f64 x.re y.re) (if (<=.f64 (*.f64 x.re y.re) #s(literal 1080192345553827/696898287454081973172991196020261297061888 binary64)) (neg.f64 (*.f64 x.im y.im)) (*.f64 x.re y.re))) |
(if (<=.f64 (*.f64 x.re y.re) #s(literal -8099983099314331/41538374868278621028243970633760768 binary64)) (*.f64 x.re y.re) (if (<=.f64 (*.f64 x.re y.re) #s(literal 1080192345553827/696898287454081973172991196020261297061888 binary64)) (-.f64 #s(literal 0 binary64) (*.f64 x.im y.im)) (*.f64 x.re y.re))) |
(*.f64 x.re y.re) |
| 2018× | *-lowering-*.f32 |
| 2018× | *-lowering-*.f64 |
| 2008× | fma-lowering-fma.f32 |
| 2008× | fma-lowering-fma.f64 |
| 1940× | fmm-def |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 42 | 438 |
| 1 | 150 | 426 |
| 2 | 450 | 426 |
| 3 | 1565 | 426 |
| 4 | 6440 | 426 |
| 0 | 8131 | 426 |
| 0 | 8 | 10 |
| 1 | 15 | 10 |
| 2 | 26 | 10 |
| 3 | 44 | 10 |
| 4 | 61 | 10 |
| 5 | 84 | 10 |
| 6 | 108 | 10 |
| 7 | 118 | 10 |
| 8 | 155 | 10 |
| 9 | 184 | 10 |
| 0 | 184 | 10 |
| 1× | done |
| 1× | iter limit |
| 1× | saturated |
| 1× | iter limit |
| 1× | node limit |
Compiled 68 to 38 computations (44.1% saved)
(sort x.im y.im)
(sort x.re y.re)
Compiled 184 to 100 computations (45.7% saved)
Loading profile data...