Details

Time bar (total: 9.2s)

analyze1.1s (11.6%)

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
0%99.9%0.1%5
25%74.9%0.1%6
25%74.9%0.1%7
25%74.9%0.1%8
25%74.9%0.1%9
25%64%11.1%10
31.2%54.6%14.2%11
39%44.1%16.9%12
39%41.5%19.5%13
42.9%37%20.1%14
Compiler

Compiled 23 to 16 computations (30.4% saved)

sample4.5s (49%)

Symmetry

(sort a1 a2)

Results
1.4s1869×body1024valid
1.1s1644×body1024invalid
832.0ms4976×body128valid
409.0ms926×body512valid
340.0ms779×body512invalid
149.0ms477×body256valid
128.0ms400×body256invalid
116.0ms692×body128invalid
11.0msbody2048valid
Compiler

Compiled 68 to 47 computations (30.9% saved)

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Rules
32×fma-def_binary64
23×*-commutative_binary64
20×associate-/l*_binary64
11×associate-/r/_binary64
associate-*r/_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01320
12718
25318
37618
410318
511718
613218
713418
813618
913618

prune6.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.3b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.5b
(*.f64 (cos.f64 th) (/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2)))
0.5b
(+.f64 (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a1 a1)) (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a2 a2)))
Compiler

Compiled 108 to 70 computations (35.2% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 th) (/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2)))
0.5b
(/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2))

series77.0ms (0.8%)

Counts
2 → 60
Calls

2 calls:

56.0ms
(*.f64 (cos.f64 th) (/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2)))
21.0ms
(/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2))

rewrite54.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
68×egg-rr
Counts
2 → 68
Calls

2 calls:

53.0ms
((/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2)) (*.f64 (cos.f64 th) (/.f64 (fma.f64 a1 a1 (*.f64 a2 a2)) (sqrt.f64 2))))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01131
122329
2259529
3500629
000
100

simplify73.0ms (0.8%)

Algorithm
egg-herbie
Rules
492×associate-/r/_binary64
338×unswap-sqr_binary64
331×fma-neg_binary64
276×sub-neg_binary64
206×associate-/l/_binary64
Counts
128 → 90
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0691313
11651259
25471215
322021173
448571173
550231173

prune88.0ms (1%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New86490
Fresh011
Picked101
Done000
Total87592
Error
0b
Counts
92 → 5
Alt Table
StatusErrorProgram
0.5b
(/.f64 (/.f64 (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (cos.f64 th)) (pow.f64 2 1/4)) (pow.f64 2 1/4))
0.5b
(*.f64 (cos.f64 th) (*.f64 (hypot.f64 a1 a2) (*.f64 (hypot.f64 a1 a2) (pow.f64 2 -1/2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
0.5b
(+.f64 (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a1 a1)) (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a2 a2)))
Compiler

Compiled 1785 to 1177 computations (34.1% saved)

localize9.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 a1 a2)
0.0b
(pow.f64 (hypot.f64 a1 a2) 2)
0.2b
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
0.4b
(*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2))

series231.0ms (2.5%)

Counts
4 → 108
Calls

4 calls:

102.0ms
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
67.0ms
(*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2))
49.0ms
(pow.f64 (hypot.f64 a1 a2) 2)
13.0ms
(hypot.f64 a1 a2)

rewrite57.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
105×egg-rr
Counts
4 → 105
Calls

2 calls:

55.0ms
((*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)) (*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2))) (pow.f64 (hypot.f64 a1 a2) 2) (hypot.f64 a1 a2))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01242
124840
2260540
3505440
000
100

simplify79.0ms (0.9%)

Algorithm
egg-herbie
Rules
704×fma-neg_binary64
658×fma-def_binary64
556×associate-*r*_binary64
537×associate-*l*_binary64
451×cancel-sign-sub-inv_binary64
Counts
213 → 163
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01121905
13271696
211561648
348111648
453151648

prune130.0ms (1.4%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1630163
Fresh044
Picked011
Done000
Total1635168
Error
0b
Counts
168 → 5
Alt Table
StatusErrorProgram
0.5b
(/.f64 (/.f64 (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (cos.f64 th)) (pow.f64 2 1/4)) (pow.f64 2 1/4))
0.5b
(*.f64 (cos.f64 th) (*.f64 (hypot.f64 a1 a2) (*.f64 (hypot.f64 a1 a2) (pow.f64 2 -1/2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
0.5b
(+.f64 (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a1 a1)) (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a2 a2)))
Compiler

Compiled 3212 to 2036 computations (36.6% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 a1 a2)
0.2b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
0.2b
(*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2)))
0.5b
(/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))

series241.0ms (2.6%)

Counts
3 → 84
Calls

3 calls:

153.0ms
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
66.0ms
(*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2)))
21.0ms
(/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))

rewrite64.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
107×egg-rr
Counts
3 → 107
Calls

2 calls:

62.0ms
((/.f64 (hypot.f64 a1 a2) (sqrt.f64 2)) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))) (*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2)))))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01344
125038
2287638
3512338
000
100

simplify85.0ms (0.9%)

Algorithm
egg-herbie
Rules
579×fma-neg_binary64
478×times-frac_binary64
376×associate-/l*_binary64
349×associate-*r*_binary64
297×associate-*l*_binary64
Counts
191 → 158
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01172107
13332029
211331969
347981969
452671969

prune205.0ms (2.2%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New2651266
Fresh123
Picked011
Done011
Total2665271
Error
0b
Counts
271 → 5
Alt Table
StatusErrorProgram
0.3b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
0.5b
(+.f64 (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a1 a1)) (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a2 a2)))
0.5b
(/.f64 (/.f64 (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (cos.f64 th)) (pow.f64 2 1/4)) (pow.f64 2 1/4))
Compiler

Compiled 6062 to 3672 computations (39.4% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 (hypot.f64 a1 a2) 2)
0.2b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))))
0.2b
(*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2)))
5.5b
(sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))

series181.0ms (2%)

Counts
3 → 84
Calls

3 calls:

103.0ms
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))))
58.0ms
(*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2)))
20.0ms
(sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))

rewrite67.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
87×egg-rr
Counts
3 → 87
Calls

2 calls:

65.0ms
((sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2)) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))) (*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2)))))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01453
127438
2297038
3521538
000
100

simplify82.0ms (0.9%)

Algorithm
egg-herbie
Rules
819×fma-neg_binary64
676×fma-def_binary64
608×associate-*l*_binary64
419×cancel-sign-sub-inv_binary64
302×times-frac_binary64
Counts
171 → 140
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01181983
13551812
213011780
349681780
455771780

prune138.0ms (1.5%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1860186
Fresh022
Picked011
Done022
Total1865191
Error
0b
Counts
191 → 5
Alt Table
StatusErrorProgram
0.3b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (sqrt.f64 (/.f64 (pow.f64 (hypot.f64 a1 a2) 2) 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (/.f64 (hypot.f64 a1 a2) 1) (/.f64 (hypot.f64 a1 a2) (sqrt.f64 2))))
0.4b
(*.f64 (cos.f64 th) (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (pow.f64 2 -1/2)))
0.5b
(+.f64 (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a1 a1)) (*.f64 (/.f64 (cos.f64 th) (sqrt.f64 2)) (*.f64 a2 a2)))
0.5b
(/.f64 (/.f64 (*.f64 (pow.f64 (hypot.f64 a1 a2) 2) (cos.f64 th)) (pow.f64 2 1/4)) (pow.f64 2 1/4))
Compiler

Compiled 4107 to 2489 computations (39.4% saved)

regimes1.6s (17.5%)

Accuracy

Total 0.3b remaining (81.9%)

Threshold costs 0.3b (81.9%)

Counts
182 → 1
Compiler

Compiled 25492 to 19461 computations (23.7% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
/-rgt-identity_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01423
11823
21723

end103.0ms (1.1%)

Remove

(sort a1 a2)

Compiler

Compiled 166 to 117 computations (29.5% saved)

Profiling

Loading profile data...