Details

Time bar (total: 23.5s)

analyze551.0ms (2.3%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
49.9%49.9%0.1%3
49.9%49.9%0.1%4
49.9%49.9%0.1%5
74.9%25%0.1%6
74.9%25%0.1%7
74.9%25%0.1%8
87.4%12.5%0.1%9
87.4%12.5%0.1%10
87.4%12.5%0.1%11
93.6%6.2%0.1%12
93.6%6.2%0.1%13
93.6%6.2%0.1%14
Compiler

Compiled 27 to 21 computations (22.2% saved)

sample6.3s (26.8%)

Results
1.9s5592×body128valid
1.8s882×body4096valid
1.5s902×body2048valid
613.0ms487×body1024valid
256.0ms254×body512valid
90.0ms139×body256valid
Compiler

Compiled 80 to 62 computations (22.5% saved)

simplify79.0ms (0.3%)

Algorithm
egg-herbie
Rules
652×div-sub_binary64
554×fma-neg_binary64
550×hypot-def_binary64
431×fma-def_binary64
378×cancel-sign-sub-inv_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02036
14425
29625
326425
470625
5222325
6417525
7482525
8498325

prune8.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
11.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
25.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 (/.f64 1 B) (-.f64 (-.f64 C A) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2)))))) (PI.f64)))
12.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
Compiler

Compiled 132 to 91 computations (31.1% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
0.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
0.0b
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))
0.9b
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A)))

series375.0ms (1.6%)

Counts
4 → 144
Calls

4 calls:

138.0ms
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
108.0ms
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A)))
74.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
55.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))

rewrite141.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
285×expm1-udef_binary64
285×log1p-udef_binary64
156×add-sqr-sqrt_binary64
150×log1p-expm1-u_binary64
150×expm1-log1p-u_binary64
Counts
4 → 136
Calls

4 calls:

134.0ms
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
134.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
134.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))
134.0ms
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01376
129976
2419576
3502276
000
100

simplify159.0ms (0.7%)

Algorithm
egg-herbie
Rules
464×fma-def_binary64
266×associate-+l+_binary64
252×associate--r+_binary64
231×associate-/l*_binary64
224×associate--l+_binary64
Counts
280 → 272
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04475489
115065060
252605060

prune442.0ms (1.9%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New2675272
Fresh101
Picked011
Done000
Total2686274
Error
0.4b
Counts
274 → 6
Alt Table
StatusErrorProgram
12.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
12.0b
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
41.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (PI.f64)))
52.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (/.f64 B A))) (PI.f64)))
53.4b
(*.f64 180 (/.f64 (atan.f64 (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 B 3) (pow.f64 C 3)) (*.f64 3/8 (/.f64 A (/.f64 (pow.f64 C 4) (pow.f64 B 3))))) (*.f64 1/2 (+.f64 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))) (+.f64 (/.f64 (*.f64 A (*.f64 A B)) (pow.f64 C 3)) (/.f64 (*.f64 B (pow.f64 A 3)) (pow.f64 C 4))))))) (PI.f64)))
16.4b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
Compiler

Compiled 9332 to 4610 computations (50.6% saved)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
0.0b
(*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180)
0.0b
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
0.9b
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A)))

series102.0ms (0.4%)

Counts
2 → 72
Calls

2 calls:

74.0ms
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
27.0ms
(*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180)

rewrite95.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
285×expm1-udef_binary64
285×log1p-udef_binary64
156×add-sqr-sqrt_binary64
150×log1p-expm1-u_binary64
150×expm1-log1p-u_binary64
Counts
2 → 56
Calls

2 calls:

92.0ms
(*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180)
92.0ms
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01346
129946
2424146
3506646
000
100

simplify196.0ms (0.8%)

Algorithm
egg-herbie
Rules
557×fma-neg_binary64
543×fma-def_binary64
140×cancel-sign-sub-inv_binary64
128×div-sub_binary64
109×unsub-neg_binary64
Counts
128 → 60
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0231656
1471656
21001656
31801656
43381656
55991656
68831656
79811656
811131656
911201656
1011251656
1110761656

prune457.0ms (1.9%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New2673270
Fresh134
Picked011
Done011
Total2688276
Error
0.3b
Counts
276 → 8
Alt Table
StatusErrorProgram
12.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
53.4b
(/.f64 (*.f64 (atan.f64 (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 B 3) (pow.f64 C 3)) (*.f64 3/8 (/.f64 A (/.f64 (pow.f64 C 4) (pow.f64 B 3))))) (*.f64 1/2 (+.f64 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))) (+.f64 (/.f64 (*.f64 A (*.f64 A B)) (pow.f64 C 3)) (/.f64 (*.f64 B (pow.f64 A 3)) (pow.f64 C 4))))))) 180) (PI.f64))
12.0b
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
41.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (PI.f64)))
52.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (/.f64 B A))) (PI.f64)))
41.0b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180) (PI.f64))
16.4b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
46.2b
(/.f64 (*.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 C (/.f64 (*.f64 A A) B)) (/.f64 B A)))) 180) (PI.f64))
Compiler

Compiled 9390 to 4736 computations (49.6% saved)

localize28.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (hypot.f64 B (-.f64 C A)))
0.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
0.9b
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A)))
61.7b
(fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))

series11.5s (49%)

Counts
3 → 66
Calls

3 calls:

11.2s
(fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))
135.0ms
(sqrt.f64 (hypot.f64 B (-.f64 C A)))
118.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))

rewrite99.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
715×prod-diff_binary64
202×add-sqr-sqrt_binary64
195×log1p-expm1-u_binary64
195×expm1-log1p-u_binary64
188×add-cbrt-cube_binary64
Counts
3 → 68
Calls

3 calls:

96.0ms
(sqrt.f64 (hypot.f64 B (-.f64 C A)))
96.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
96.0ms
(fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01794
139150
2439050
3583650
000
100

simplify164.0ms (0.7%)

Algorithm
egg-herbie
Rules
556×cancel-sign-sub-inv_binary64
469×fma-neg_binary64
253×fma-def_binary64
242×neg-sub0_binary64
240×neg-mul-1_binary64
Counts
134 → 112
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02484359
17193875
227923306
344893300
450893300

prune533.0ms (2.3%)

Pruning

8 alts after pruning (5 fresh and 3 done)

PrunedKeptTotal
New2800280
Fresh055
Picked011
Done022
Total2808288
Error
0.3b
Counts
288 → 8
Alt Table
StatusErrorProgram
12.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
53.4b
(/.f64 (*.f64 (atan.f64 (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 B 3) (pow.f64 C 3)) (*.f64 3/8 (/.f64 A (/.f64 (pow.f64 C 4) (pow.f64 B 3))))) (*.f64 1/2 (+.f64 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))) (+.f64 (/.f64 (*.f64 A (*.f64 A B)) (pow.f64 C 3)) (/.f64 (*.f64 B (pow.f64 A 3)) (pow.f64 C 4))))))) 180) (PI.f64))
12.0b
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
41.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (PI.f64)))
52.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (/.f64 B A))) (PI.f64)))
41.0b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180) (PI.f64))
16.4b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
46.2b
(/.f64 (*.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 C (/.f64 (*.f64 A A) B)) (/.f64 B A)))) 180) (PI.f64))
Compiler

Compiled 16200 to 6704 computations (58.6% saved)

localize23.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180)
3.2b
(+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B)))
6.5b
(/.f64 A (/.f64 (*.f64 C C) B))
7.4b
(/.f64 (*.f64 C C) B)

series242.0ms (1%)

Counts
4 → 132
Calls

4 calls:

90.0ms
(/.f64 A (/.f64 (*.f64 C C) B))
87.0ms
(+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B)))
46.0ms
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180)
19.0ms
(/.f64 (*.f64 C C) B)

rewrite118.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
289×log1p-udef_binary64
164×add-sqr-sqrt_binary64
161×egg-rr
156×log1p-expm1-u_binary64
156×expm1-log1p-u_binary64
Counts
4 → 161
Calls

4 calls:

110.0ms
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180)
110.0ms
(+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B)))
110.0ms
(/.f64 A (/.f64 (*.f64 C C) B))
110.0ms
(/.f64 (*.f64 C C) B)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01457
132053
2451553
3490053
000
100

simplify347.0ms (1.5%)

Algorithm
egg-herbie
Rules
556×fma-def_binary64
548×times-frac_binary64
387×distribute-rgt-in_binary64
386×distribute-lft-in_binary64
330×unswap-sqr_binary64
Counts
293 → 171
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
0211914
1401914
2751806
31731716
45101644
522481584
627191584
734681584
839171584
944901584
1044101584
1145621584
1247391584
1349431584
1449741584
1548451584

prune236.0ms (1%)

Pruning

11 alts after pruning (7 fresh and 4 done)

PrunedKeptTotal
New1683171
Fresh044
Picked011
Done033
Total16811179
Error
0.3b
Counts
179 → 11
Alt Table
StatusErrorProgram
44.9b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (cbrt.f64 (pow.f64 (fma.f64 A (/.f64 B (*.f64 C C)) (/.f64 B C)) 3)))) 180) (PI.f64))
12.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
53.4b
(/.f64 (*.f64 (atan.f64 (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 B 3) (pow.f64 C 3)) (*.f64 3/8 (/.f64 A (/.f64 (pow.f64 C 4) (pow.f64 B 3))))) (*.f64 1/2 (+.f64 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))) (+.f64 (/.f64 (*.f64 A (*.f64 A B)) (pow.f64 C 3)) (/.f64 (*.f64 B (pow.f64 A 3)) (pow.f64 C 4))))))) 180) (PI.f64))
12.0b
(/.f64 (*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) 180) (PI.f64))
41.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (PI.f64)))
52.4b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (-.f64 (exp.f64 (log1p.f64 (fma.f64 A (/.f64 B (*.f64 C C)) (/.f64 B C)))) 1))) 180) (PI.f64))
52.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (/.f64 B A))) (PI.f64)))
41.0b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) 180) (PI.f64))
51.6b
(/.f64 (*.f64 (atan.f64 (*.f64 -1/2 (pow.f64 (sqrt.f64 (fma.f64 A (/.f64 B (*.f64 C C)) (/.f64 B C))) 2))) 180) (PI.f64))
16.4b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (+.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) (fma.f64 (neg.f64 (sqrt.f64 (hypot.f64 B (-.f64 C A)))) (sqrt.f64 (hypot.f64 B (-.f64 C A))) (hypot.f64 B (-.f64 C A)))) B)) (PI.f64)))
46.2b
(/.f64 (*.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 C (/.f64 (*.f64 A A) B)) (/.f64 B A)))) 180) (PI.f64))
Compiler

Compiled 4404 to 2054 computations (53.4% saved)

regimes1.0s (4.4%)

Accuracy

Total 10.9b remaining (96.3%)

Threshold costs 0b (0%)

Counts
95 → 3
Compiler

Compiled 16667 to 12026 computations (27.8% saved)

bsearch4.0ms (0%)

Compiler

Compiled 21 to 15 computations (28.6% saved)

simplify5.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
039140
154140
267140
375140
479140
578140

end198.0ms (0.8%)

Compiler

Compiled 473 to 294 computations (37.8% saved)

Profiling

Loading profile data...