Details

Time bar (total: 16.4s)

analyze1.5s (8.9%)

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)

sample2.1s (13.1%)

Results
1.9s8256×body128valid
105.0ms467×body128invalid
Compiler

Compiled 59 to 35 computations (40.7% saved)

simplify102.0ms (0.6%)

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

prune5.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
25.3b
Counts
3 → 1
Alt Table
StatusErrorProgram
25.3b
(/.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)

localize16.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))
24.9b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))

series180.0ms (1.1%)

Counts
2 → 96
Calls

2 calls:

163.0ms
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
17.0ms
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))

rewrite128.0ms (0.8%)

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

2 calls:

111.0ms
(-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))
111.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
01130
124429
2332329
3504229
000
100

simplify151.0ms (0.9%)

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
320 → 251
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0511722
11321638
23761599
316121554
449581554
555051554

prune311.0ms (1.9%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New2438251
Fresh000
Picked011
Done000
Total2439252
Error
0.8b
Counts
252 → 9
Alt Table
StatusErrorProgram
17.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)))
25.3b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
41.0b
(-.f64 (/.f64 x.im y.re) (*.f64 (/.f64 y.im (*.f64 y.re y.re)) (+.f64 x.re (/.f64 (*.f64 y.im x.im) y.re))))
41.6b
(/.f64 x.im y.re)
32.7b
(-.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.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 y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
34.2b
(neg.f64 (/.f64 x.re y.im))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)) 2)
17.0b
(*.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 6356 to 1621 computations (74.5% saved)

localize21.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 y.re (hypot.f64 y.re y.im))
0.0b
(pow.f64 (hypot.f64 y.re y.im) 2)
0.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 y.im) (pow.f64 (hypot.f64 y.re y.im) 2))))
16.8b
(/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))

series737.0ms (4.5%)

Counts
4 → 132
Calls

4 calls:

452.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))))
162.0ms
(/.f64 (*.f64 x.re y.im) (pow.f64 (hypot.f64 y.re y.im) 2))
89.0ms
(pow.f64 (hypot.f64 y.re y.im) 2)
33.0ms
(/.f64 y.re (hypot.f64 y.re y.im))

rewrite402.0ms (2.5%)

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

4 calls:

348.0ms
(/.f64 y.re (hypot.f64 y.re y.im))
348.0ms
(pow.f64 (hypot.f64 y.re y.im) 2)
348.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))))
348.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

simplify242.0ms (1.5%)

Algorithm
egg-herbie
Rules
769×fma-neg_binary64
640×times-frac_binary64
401×associate-/l*_binary64
315×associate-/r*_binary64
297×fma-def_binary64
Counts
713 → 661
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01173116
13372946
210642834
346922834
452932834

prune1.6s (9.8%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New6574661
Fresh527
Picked101
Done011
Total6637670
Error
0.0b
Counts
670 → 7
Alt Table
StatusErrorProgram
12.5b
(+.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 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)))
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)))))
13.1b
(+.f64 (fma.f64 x.im (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (/.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)))
25.3b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
15.4b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 y.im (*.f64 x.re (pow.f64 (hypot.f64 y.re y.im) -2)))))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)) 2)
17.0b
(*.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 34242 to 12395 computations (63.8% saved)

localize22.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.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 y.im (hypot.f64 y.re y.im)))))
0.4b
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))

series814.0ms (5%)

Counts
3 → 120
Calls

3 calls:

461.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)))))
202.0ms
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))
151.0ms
(/.f64 x.im (hypot.f64 y.re y.im))

rewrite522.0ms (3.2%)

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

3 calls:

411.0ms
(/.f64 x.im (hypot.f64 y.re y.im))
411.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)))))
411.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

simplify246.0ms (1.5%)

Algorithm
egg-herbie
Rules
776×fma-neg_binary64
568×times-frac_binary64
483×associate-/l*_binary64
332×associate-/r*_binary64
297×fma-def_binary64
Counts
770 → 727
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01283278
13623118
211643006
348473006
454423006

prune1.8s (11.1%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New7862788
Fresh145
Picked101
Done011
Total7887795
Error
0b
Counts
795 → 7
Alt Table
StatusErrorProgram
13.1b
(+.f64 (fma.f64 x.im (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (/.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)))
25.3b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
12.5b
(+.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 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)))
15.4b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 y.im (*.f64 x.re (pow.f64 (hypot.f64 y.re y.im) -2)))))
9.7b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 y.im (*.f64 (/.f64 (hypot.f64 y.re y.im) x.re) (hypot.f64 y.re y.im)))))
0.7b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (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)))))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)) 2)
Compiler

Compiled 43591 to 11583 computations (73.4% saved)

localize32.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im))))
0.3b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (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.4b
(/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im)))
0.4b
(*.f64 (/.f64 x.re (hypot.f64 y.re y.im)) (/.f64 y.im (hypot.f64 y.re y.im)))

series638.0ms (3.9%)

Counts
3 → 80
Calls

3 calls:

553.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (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)))))
49.0ms
(/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im)))
36.0ms
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im))))

rewrite542.0ms (3.3%)

Algorithm
batch-egg-rewrite
Rules
794×prod-diff_binary64
698×egg-rr
181×add-sqr-sqrt_binary64
168×log1p-expm1-u_binary64
168×expm1-log1p-u_binary64
Counts
3 → 698
Calls

3 calls:

463.0ms
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im))))
463.0ms
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (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)))))
463.0ms
(/.f64 y.re (sqrt.f64 (hypot.f64 y.re y.im)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01750
136944
2476544
3640444
000
100

simplify258.0ms (1.6%)

Algorithm
egg-herbie
Rules
782×fma-neg_binary64
488×times-frac_binary64
371×fma-def_binary64
331×associate-*r*_binary64
312×cancel-sign-sub-inv_binary64
Counts
778 → 767
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01442288
14002174
212312113
347112113
452822113

prune1.7s (10.2%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New8490849
Fresh055
Picked011
Done011
Total8497856
Error
0b
Counts
856 → 7
Alt Table
StatusErrorProgram
13.1b
(+.f64 (fma.f64 x.im (*.f64 (/.f64 1 (hypot.f64 y.re y.im)) (/.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)))
25.3b
(/.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im)) (fma.f64 y.re y.re (*.f64 y.im y.im)))
12.5b
(+.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 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)))
15.4b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (*.f64 y.im (*.f64 x.re (pow.f64 (hypot.f64 y.re y.im) -2)))))
9.7b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (/.f64 y.re (hypot.f64 y.re y.im)) (neg.f64 (/.f64 y.im (*.f64 (/.f64 (hypot.f64 y.re y.im) x.re) (hypot.f64 y.re y.im)))))
0.7b
(fma.f64 (/.f64 x.im (hypot.f64 y.re y.im)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 y.re y.im))) (/.f64 y.re (sqrt.f64 (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)))))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 x.im y.re) (*.f64 x.re y.im))) (hypot.f64 y.re y.im)) 2)
Compiler

Compiled 49068 to 12916 computations (73.7% saved)

regimes2.0s (12.4%)

Accuracy

Total 1.4b remaining (91.7%)

Threshold costs 0b (0%)

Counts
169 → 1
Compiler

Compiled 25358 to 13309 computations (47.5% saved)

simplify6.0ms (0%)

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
01334
12234
23434
34334
44934
55134
65134

end283.0ms (1.7%)

Compiler

Compiled 271 to 137 computations (49.4% saved)

Profiling

Loading profile data...