Details

Time bar (total: 3.8s)

analyze193.0ms (5.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
25%74.9%0.1%5
25%74.9%0.1%6
31.2%50%18.8%7
34.3%43.7%22%8
45.3%26.5%28.2%9
46.8%23.4%29.8%10
48.8%14%37.2%11
49.8%12.1%38.1%12
52.8%7.1%40.1%13
53.3%6.1%40.6%14
Compiler

Compiled 22 to 12 computations (45.5% saved)

sample1.1s (29.8%)

Results
957.0ms8256×body128valid
76.0ms600×body128invalid
Compiler

Compiled 65 to 35 computations (46.2% saved)

simplify131.0ms (3.4%)

Algorithm
egg-herbie
Rules
613×sub-neg_binary64
578×fma-neg_binary64
529×neg-mul-1_binary64
501×neg-sub0_binary64
455×unsub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01224
12623
26023
313016
433516
588116
6149616
7351116
8406116
9397716
10461416
11477116
12491816
13491416

prune4.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
8.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
8.9b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
8.9b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
Compiler

Compiled 100 to 54 computations (46% saved)

localize11.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))
0.1b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
0.2b
(*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re)
8.3b
(*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im)

series44.0ms (1.1%)

Counts
4 → 96
Calls

4 calls:

14.0ms
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
12.0ms
(*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im)
12.0ms
(*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re)
7.0ms
(-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))

rewrite97.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
835×fma-def_binary64
359×fma-neg_binary64
273×egg-rr
216×expm1-udef_binary64
216×log1p-udef_binary64
Counts
4 → 273
Calls

4 calls:

90.0ms
(-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))
90.0ms
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
90.0ms
(*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re)
90.0ms
(*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01258
125850
2328850
3504050
000
100

simplify103.0ms (2.7%)

Algorithm
egg-herbie
Rules
682×unswap-sqr_binary64
511×fma-def_binary64
459×cancel-sign-sub-inv_binary64
395×fma-neg_binary64
345×*-commutative_binary64
Counts
369 → 291
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0171059
1471059
21151059
33071059
410061059
523721059
648521059
749341059
849811059

prune203.0ms (5.3%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New2874291
Fresh011
Picked011
Done000
Total2876293
Error
0.1b
Counts
293 → 6
Alt Table
StatusErrorProgram
17.6b
(+.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 x.re) 2) (cbrt.f64 (pow.f64 x.re 4)) (neg.f64 (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
27.9b
(+.f64 (*.f64 (/.f64 (-.f64 (pow.f64 x.re 4) (pow.f64 x.im 4)) (fma.f64 x.re x.re (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
0.2b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
9.4b
(+.f64 (fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
Compiler

Compiled 8253 to 2023 computations (75.5% saved)

localize16.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
0.2b
(*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re)
0.2b
(fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
36.6b
(fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im))

series42.0ms (1.1%)

Counts
3 → 60
Calls

3 calls:

21.0ms
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
17.0ms
(fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
4.0ms
(fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im))

rewrite121.0ms (3.2%)

Algorithm
batch-egg-rewrite
Rules
724×fma-def_binary64
468×fma-neg_binary64
217×expm1-udef_binary64
217×log1p-udef_binary64
176×egg-rr
Counts
3 → 176
Calls

3 calls:

115.0ms
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
115.0ms
(fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
115.0ms
(fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01662
133651
2336747
3492547
4469147
000
100

simplify121.0ms (3.2%)

Algorithm
egg-herbie
Rules
628×fma-neg_binary64
580×fma-def_binary64
452×unswap-sqr_binary64
441×distribute-rgt-neg-in_binary64
374×associate-*l*_binary64
Counts
236 → 152
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
014621
136621
289621
3190621
4456621
51307621
62816621
74657621
84954621
94990621
104894621

prune118.0ms (3.1%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New1741175
Fresh044
Picked011
Done011
Total1747181
Error
0.1b
Counts
181 → 7
Alt Table
StatusErrorProgram
17.6b
(+.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 x.re) 2) (cbrt.f64 (pow.f64 x.re 4)) (neg.f64 (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
27.9b
(+.f64 (*.f64 (/.f64 (-.f64 (pow.f64 x.re 4) (pow.f64 x.im 4)) (fma.f64 x.re x.re (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
0.2b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
9.4b
(+.f64 (fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
41.1b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (/.f64 (*.f64 x.re (*.f64 2 (pow.f64 (*.f64 x.re x.im) 3))) (+.f64 (pow.f64 (*.f64 x.re x.im) 2) 0)))
Compiler

Compiled 5567 to 1680 computations (69.8% saved)

localize6.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im)))
8.3b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))

series23.0ms (0.6%)

Counts
2 → 48
Calls

2 calls:

13.0ms
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
10.0ms
(fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im)))

rewrite86.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
711×log1p-expm1-u_binary64
711×expm1-log1p-u_binary64
273×egg-rr
259×prod-diff_binary64
145×log1p-udef_binary64
Counts
2 → 273
Calls

2 calls:

78.0ms
(fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im)))
78.0ms
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0929
118625
2189925
3500925
000
100

simplify92.0ms (2.4%)

Algorithm
egg-herbie
Rules
790×fma-def_binary64
672×unswap-sqr_binary64
485×distribute-rgt-neg-in_binary64
422×distribute-lft-neg-in_binary64
371×unsub-neg_binary64
Counts
321 → 285
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016609
142609
297609
3235609
4708609
51541609
63928609
74693609
84997609

prune240.0ms (6.3%)

Pruning

9 alts after pruning (6 fresh and 3 done)

PrunedKeptTotal
New2832285
Fresh044
Picked011
Done022
Total2839292
Error
0.1b
Counts
292 → 9
Alt Table
StatusErrorProgram
17.6b
(+.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 x.re) 2) (cbrt.f64 (pow.f64 x.re 4)) (neg.f64 (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
27.9b
(+.f64 (*.f64 (/.f64 (-.f64 (pow.f64 x.re 4) (pow.f64 x.im 4)) (fma.f64 x.re x.re (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
41.6b
(pow.f64 (sqrt.f64 (*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (*.f64 x.im x.im)))) 2)
31.6b
(pow.f64 (cbrt.f64 (*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (*.f64 x.im x.im)))) 3)
0.2b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
9.4b
(+.f64 (fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
41.1b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (/.f64 (*.f64 x.re (*.f64 2 (pow.f64 (*.f64 x.re x.im) 3))) (+.f64 (pow.f64 (*.f64 x.re x.im) 2) 0)))
Compiler

Compiled 9087 to 4284 computations (52.9% saved)

localize18.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.7b
(cbrt.f64 x.im)
3.0b
(*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))
5.6b
(fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
36.6b
(fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im))

series321.0ms (8.4%)

Counts
3 → 60
Calls

3 calls:

196.0ms
(fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
91.0ms
(*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))
33.0ms
(cbrt.f64 x.im)

rewrite75.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
601×log-prod_binary64
475×fma-def_binary64
220×expm1-udef_binary64
220×log1p-udef_binary64
212×fma-neg_binary64
Counts
3 → 114
Calls

3 calls:

73.0ms
(cbrt.f64 x.im)
73.0ms
(*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))
73.0ms
(fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01454
130137
2304535
3572435
000
100

simplify80.0ms (2.1%)

Algorithm
egg-herbie
Rules
619×fma-def_binary64
488×fma-neg_binary64
483×distribute-rgt-neg-in_binary64
454×associate-*l*_binary64
449×distribute-lft-neg-in_binary64
Counts
174 → 133
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
030743
189728
2219728
3532728
41670728
54110728
64719728
75087728

prune144.0ms (3.8%)

Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New1870187
Fresh055
Picked011
Done033
Total1879196
Error
0.1b
Counts
196 → 9
Alt Table
StatusErrorProgram
17.6b
(+.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 x.re) 2) (cbrt.f64 (pow.f64 x.re 4)) (neg.f64 (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (neg.f64 (*.f64 x.im x.im))))
27.9b
(+.f64 (*.f64 (/.f64 (-.f64 (pow.f64 x.re 4) (pow.f64 x.im 4)) (fma.f64 x.re x.re (*.f64 x.im x.im))) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
8.9b
(+.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.im) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
41.6b
(pow.f64 (sqrt.f64 (*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (*.f64 x.im x.im)))) 2)
31.6b
(pow.f64 (cbrt.f64 (*.f64 x.im (fma.f64 x.re (*.f64 x.re 3) (*.f64 x.im x.im)))) 3)
0.2b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
9.4b
(+.f64 (fma.f64 (pow.f64 (cbrt.f64 x.im) 2) (*.f64 (cbrt.f64 x.im) (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im))) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.re))
41.1b
(+.f64 (fma.f64 (+.f64 x.re x.im) (*.f64 (-.f64 x.re x.im) x.im) (*.f64 (fma.f64 x.im (neg.f64 x.im) (*.f64 x.im x.im)) x.im)) (/.f64 (*.f64 x.re (*.f64 2 (pow.f64 (*.f64 x.re x.im) 3))) (+.f64 (pow.f64 (*.f64 x.re x.im) 2) 0)))
Compiler

Compiled 7184 to 1789 computations (75.1% saved)

regimes250.0ms (6.5%)

Accuracy

Total 0.1b remaining (68.2%)

Threshold costs 0.1b (68.2%)

Counts
79 → 1
Compiler

Compiled 5253 to 2952 computations (43.8% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
*-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01641
12641
22941
33041
43041

end138.0ms (3.6%)

Compiler

Compiled 283 to 155 computations (45.2% saved)

Profiling

Loading profile data...