Details

Time bar (total: 11.9s)

analyze729.0ms (6.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
0%99.8%0.2%6
0%99.8%0.2%7
6.2%93.6%0.2%8
25%74.9%0.2%9
28.1%71.7%0.2%10
29.6%70.2%0.2%11
53%46.8%0.2%12
71.3%28.5%0.2%13
71.7%28.1%0.2%14
Compiler

Compiled 20 to 12 computations (40% saved)

sample1.3s (11.1%)

Results
1.1s8256×body128valid
63.0ms506×body128invalid
Compiler

Compiled 59 to 35 computations (40.7% saved)

simplify65.0ms (0.5%)

Algorithm
egg-herbie
Rules
1070×fma-neg_binary64
881×fma-def_binary64
768×times-frac_binary64
551×cancel-sign-sub-inv_binary64
514×unsub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01220
12520
24720
37820
414920
522820
632420
750020
869420
986720
1099920
11242220
12392020
13495020

prune3.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
27.4b
Counts
3 → 1
Alt Table
StatusErrorProgram
27.4b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
Compiler

Compiled 69 to 33 computations (52.2% saved)

localize8.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 y.re y.re (*.f64 y.im y.im))
0.9b
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))
27.0b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))

series97.0ms (0.8%)

Counts
3 → 120
Calls

3 calls:

83.0ms
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
8.0ms
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))
6.0ms
(fma.f64 y.re y.re (*.f64 y.im y.im))

rewrite87.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
449×fma-def_binary64
252×egg-rr
239×fma-neg_binary64
227×expm1-udef_binary64
227×log1p-udef_binary64
Counts
3 → 252
Calls

3 calls:

81.0ms
(fma.f64 y.re y.re (*.f64 y.im y.im))
81.0ms
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))
81.0ms
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01138
124436
2332336
3504236
000
100

simplify81.0ms (0.7%)

Algorithm
egg-herbie
Rules
995×fma-neg_binary64
650×fma-def_binary64
555×associate-*l/_binary64
469×cancel-sign-sub-inv_binary64
432×associate-/r/_binary64
Counts
372 → 286
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0511926
11321806
23761767
316121722
449581722
555051722

prune209.0ms (1.8%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New2779286
Fresh000
Picked101
Done000
Total2789287
Error
1.6b
Counts
287 → 9
Alt Table
StatusErrorProgram
37.0b
(/.f64 x.im y.re)
27.4b
(/.f64 (fma.f64 x.im y.re (fma.f64 x.re (neg.f64 y.im) (fma.f64 x.re (neg.f64 y.im) (*.f64 x.re y.im)))) (fma.f64 y.re y.re (*.f64 y.im y.im)))
28.9b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 y.re y.im) 2))))
18.5b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) 2) (hypot.f64 y.re y.im)) (/.f64 (cbrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)))
37.0b
(-.f64 (*.f64 (/.f64 y.re (*.f64 y.im y.im)) (+.f64 x.im (/.f64 (*.f64 x.re y.re) y.im))) (/.f64 x.re y.im))
15.5b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
37.0b
(neg.f64 (/.f64 x.re y.im))
41.6b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)) 2)
17.9b
(*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (hypot.f64 y.re y.im)))
Compiler

Compiled 6964 to 1811 computations (74% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 x.im (hypot.f64 y.re y.im))
0.0b
(/.f64 y.re (hypot.f64 y.re y.im))
0.6b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
17.9b
(/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))

series408.0ms (3.4%)

Counts
4 → 144
Calls

4 calls:

233.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
91.0ms
(/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))
67.0ms
(/.f64 x.im (hypot.f64 y.re y.im))
17.0ms
(/.f64 y.re (hypot.f64 y.re y.im))

rewrite323.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
598×prod-diff_binary64
594×egg-rr
254×log1p-udef_binary64
152×add-sqr-sqrt_binary64
142×log1p-expm1-u_binary64
Counts
4 → 594
Calls

4 calls:

221.0ms
(/.f64 x.im (hypot.f64 y.re y.im))
221.0ms
(/.f64 y.re (hypot.f64 y.re y.im))
221.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
221.0ms
(/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01458
130355
2369255
3529755
000
100

simplify119.0ms (1%)

Algorithm
egg-herbie
Rules
869×times-frac_binary64
612×associate-/l*_binary64
418×fma-def_binary64
392×cancel-sign-sub-inv_binary64
206×fma-neg_binary64
Counts
738 → 699
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01583852
14703682
215393554
349663554

prune744.0ms (6.2%)

Pruning

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New6963699
Fresh538
Picked101
Done000
Total7026708
Error
0.0b
Counts
708 → 6
Alt Table
StatusErrorProgram
27.4b
(/.f64 (fma.f64 x.im y.re (fma.f64 x.re (neg.f64 y.im) (fma.f64 x.re (neg.f64 y.im) (*.f64 x.re y.im)))) (fma.f64 y.re y.re (*.f64 y.im y.im)))
1.2b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))))
18.5b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) 2) (hypot.f64 y.re y.im)) (/.f64 (cbrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)))
17.9b
(*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (hypot.f64 y.re y.im)))
13.9b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (pow.f64 (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) 2)) (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) (neg.f64 (*.f64 (*.f64 y.im (pow.f64 (hypot.f64 y.re y.im) -2)) x.re))) (fma.f64 (neg.f64 (*.f64 y.im (pow.f64 (hypot.f64 y.re y.im) -2))) x.re (*.f64 (*.f64 y.im (pow.f64 (hypot.f64 y.re y.im) -2)) x.re)))
14.1b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (pow.f64 (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) 2)) (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) (neg.f64 (*.f64 (/.f64 1 (/.f64 (pow.f64 (hypot.f64 y.re y.im) 2) y.im)) x.re))) (fma.f64 (neg.f64 (/.f64 1 (/.f64 (pow.f64 (hypot.f64 y.re y.im) 2) y.im))) x.re (*.f64 (/.f64 1 (/.f64 (pow.f64 (hypot.f64 y.re y.im) 2) y.im)) x.re)))
Compiler

Compiled 35658 to 13080 computations (63.3% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 y.im (hypot.f64 y.re y.im))
0.0b
(/.f64 y.re (hypot.f64 y.re y.im))
0.6b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))))
0.7b
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))

series320.0ms (2.7%)

Counts
3 → 108
Calls

3 calls:

214.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))))
84.0ms
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))
22.0ms
(/.f64 y.im (hypot.f64 y.re y.im))

rewrite257.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
691×prod-diff_binary64
651×egg-rr
148×add-sqr-sqrt_binary64
137×log1p-expm1-u_binary64
137×expm1-log1p-u_binary64
Counts
3 → 651
Calls

3 calls:

220.0ms
(/.f64 y.im (hypot.f64 y.re y.im))
220.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))))
220.0ms
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01357
128948
2384248
3523848
000
100

simplify130.0ms (1.1%)

Algorithm
egg-herbie
Rules
813×fma-neg_binary64
639×times-frac_binary64
404×associate-/l*_binary64
311×associate-/r*_binary64
286×fma-def_binary64
Counts
759 → 724
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01172912
13372778
210652666
346872666
453242666

prune877.0ms (7.4%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New7824786
Fresh415
Picked101
Done000
Total7875792
Error
0.0b
Counts
792 → 5
Alt Table
StatusErrorProgram
27.4b
(/.f64 (fma.f64 x.im y.re (fma.f64 x.re (neg.f64 y.im) (fma.f64 x.re (neg.f64 y.im) (*.f64 x.re y.im)))) (fma.f64 y.re y.re (*.f64 y.im y.im)))
2.3b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (pow.f64 (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) 2)) (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) (neg.f64 (*.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im)) (/.f64 x.re 1)))) (fma.f64 (neg.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im))) (/.f64 x.re 1) (*.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im)) (/.f64 x.re 1))))
0.3b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) y.re) (/.f64 1 (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))))) (fma.f64 (neg.f64 (/.f64 1 (hypot.f64 y.re y.im))) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))) (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))))))
1.3b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 (hypot.f64 y.re y.im) y.im))))
3.9b
(+.f64 (fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im)))))) (fma.f64 (neg.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im)))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im))) (*.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im))))))
Compiler

Compiled 43467 to 11601 computations (73.3% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))))
1.1b
(*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))
8.7b
(*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) y.re)
38.2b
(fma.f64 (neg.f64 (/.f64 1 (hypot.f64 y.re y.im))) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))) (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))))

series942.0ms (7.9%)

Counts
4 → 144
Calls

4 calls:

702.0ms
(fma.f64 (neg.f64 (/.f64 1 (hypot.f64 y.re y.im))) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))) (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))))
87.0ms
(*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))))
80.0ms
(*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))
73.0ms
(*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) y.re)

rewrite81.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
259×expm1-udef_binary64
259×log1p-udef_binary64
240×log-pow_binary64
155×add-sqr-sqrt_binary64
147×associate-*r*_binary64
Counts
4 → 123
Calls

4 calls:

78.0ms
(*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))))
78.0ms
(*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))
78.0ms
(*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) y.re)
78.0ms
(fma.f64 (neg.f64 (/.f64 1 (hypot.f64 y.re y.im))) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))) (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01571
131461
2377061
3506261
000
100

simplify97.0ms (0.8%)

Algorithm
egg-herbie
Rules
658×associate-/l*_binary64
542×fma-neg_binary64
537×associate-/r*_binary64
366×fma-def_binary64
301×cancel-sign-sub-inv_binary64
Counts
267 → 212
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01503260
14583128
215663031
347143031
450613031

prune538.0ms (4.5%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New3860386
Fresh044
Picked011
Done000
Total3865391
Error
0.0b
Counts
391 → 5
Alt Table
StatusErrorProgram
27.4b
(/.f64 (fma.f64 x.im y.re (fma.f64 x.re (neg.f64 y.im) (fma.f64 x.re (neg.f64 y.im) (*.f64 x.re y.im)))) (fma.f64 y.re y.re (*.f64 y.im y.im)))
2.3b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (pow.f64 (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) 2)) (cbrt.f64 (/.f64 y.re (hypot.f64 y.re y.im))) (neg.f64 (*.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im)) (/.f64 x.re 1)))) (fma.f64 (neg.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im))) (/.f64 x.re 1) (*.f64 (/.f64 (/.f64 y.im (hypot.f64 y.re y.im)) (hypot.f64 y.re y.im)) (/.f64 x.re 1))))
0.3b
(+.f64 (fma.f64 (*.f64 (/.f64 x.im (hypot.f64 y.re y.im)) y.re) (/.f64 1 (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im)))))) (fma.f64 (neg.f64 (/.f64 1 (hypot.f64 y.re y.im))) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))) (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (*.f64 x.re (/.f64 y.im (hypot.f64 y.re y.im))))))
1.3b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 (hypot.f64 y.re y.im) y.im))))
3.9b
(+.f64 (fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im)))))) (fma.f64 (neg.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im)))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im))) (*.f64 (/.f64 y.im (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (sqrt.f64 (hypot.f64 y.re y.im))))))
Compiler

Compiled 23789 to 8248 computations (65.3% saved)

regimes4.3s (36.3%)

Accuracy

Total 0.7b remaining (81.4%)

Threshold costs 0.7b (81.4%)

Counts
494 → 1
Compiler

Compiled 98898 to 48324 computations (51.1% saved)

simplify6.0ms (0%)

Algorithm
egg-herbie
Rules
31×distribute-rgt-neg-in_binary64
23×cancel-sign-sub-inv_binary64
20×distribute-lft-neg-in_binary64
16×neg-sub0_binary64
15×distribute-lft-neg-out_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02282
13980
25277
36477
49477
511177
613577
715477
816077
915677

end110.0ms (0.9%)

Compiler

Compiled 359 to 133 computations (63% saved)

Profiling

Loading profile data...