Details

Time bar (total: 7.5s)

analyze304.0ms (4%)

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)

sample3.6s (47.8%)

Results
1.1s904×body4096valid
1.1s5611×body128valid
811.0ms858×body2048valid
357.0ms491×body1024valid
137.0ms249×body512valid
51.0ms143×body256valid
Compiler

Compiled 80 to 62 computations (22.5% saved)

simplify24.0ms (0.3%)

Algorithm
egg-herbie
Rules
554×fma-neg_binary64
423×fma-def_binary64
380×cancel-sign-sub-inv_binary64
305×div-sub_binary64
227×unsub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02036
14425
210925
329625
496025
5345725
Stop Event
node limit
Counts
1 → 2

prune71.0ms (0.9%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
15.3b
Counts
3 → 2
Alt Table
StatusErrorProgram
15.4b
(*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B)) (/.f64 180 (PI.f64)))
32.0b
(*.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)))
Compiler

Compiled 132 to 93 computations (29.5% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series136.0ms (1.8%)

Counts
4 → 144
Calls

4 calls:

53.0ms
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B)
43.0ms
(-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C)))
34.0ms
(*.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B)) (/.f64 180 (PI.f64)))
6.0ms
(atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))

rewrite78.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
312×log1p-udef_binary64
174×add-sqr-sqrt_binary64
166×log1p-expm1-u_binary64
166×expm1-log1p-u_binary64
165×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01472
132972
2491372
Stop Event
node limit
Counts
4 → 123
Calls

4 calls:

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

simplify70.0ms (0.9%)

Algorithm
egg-herbie
Rules
464×fma-def_binary64
265×associate-+l+_binary64
250×associate--r+_binary64
231×associate-/l*_binary64
220×associate--l+_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04475345
115654916
Stop Event
node limit
Counts
267 → 262

prune236.0ms (3.1%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New2539262
Fresh101
Picked101
Done000
Total2559264
Error
0.4b
Counts
264 → 9
Alt Table
StatusErrorProgram
45.6b
(*.f64 (atan.f64 (/.f64 (*.f64 -1/2 (/.f64 B (/.f64 C B))) B)) (/.f64 180 (PI.f64)))
40.8b
(*.f64 (atan.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B A) (/.f64 C A)) (/.f64 B A)))) (/.f64 180 (PI.f64)))
42.9b
(*.f64 (atan.f64 (/.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B (/.f64 A B)) (/.f64 C A)) (/.f64 B (/.f64 A B)))) B)) (/.f64 180 (PI.f64)))
50.8b
(*.f64 (atan.f64 (fma.f64 1/2 (*.f64 (/.f64 B A) (/.f64 C A)) (fma.f64 1/2 (+.f64 (/.f64 B A) (*.f64 (/.f64 (*.f64 C C) (pow.f64 A 3)) B)) (*.f64 (/.f64 (pow.f64 B 3) (pow.f64 A 3)) -1/8)))) (/.f64 180 (PI.f64)))
56.1b
(*.f64 (atan.f64 (/.f64 (fma.f64 (sqrt.f64 (-.f64 C A)) (sqrt.f64 (-.f64 C A)) (neg.f64 (hypot.f64 B (-.f64 A C)))) B)) (/.f64 180 (PI.f64)))
15.4b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))) (PI.f64))
45.1b
(*.f64 (atan.f64 (/.f64 (*.f64 -1/2 (/.f64 (pow.f64 B 2) C)) B)) (/.f64 180 (PI.f64)))
20.5b
(*.f64 (atan.f64 (/.f64 (+.f64 C (neg.f64 (+.f64 A (hypot.f64 B (-.f64 A C))))) B)) (/.f64 180 (PI.f64)))
40.6b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
Compiler

Compiled 9090 to 4677 computations (48.5% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series48.0ms (0.6%)

Counts
2 → 72
Calls

2 calls:

34.0ms
(/.f64 (*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))) (PI.f64))
13.0ms
(*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B)))

rewrite38.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
174×add-sqr-sqrt_binary64
166×log1p-expm1-u_binary64
166×expm1-log1p-u_binary64
165×add-cbrt-cube_binary64
162×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01446
132846
Stop Event
node limit
Counts
2 → 56
Calls

2 calls:

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

simplify98.0ms (1.3%)

Algorithm
egg-herbie
Rules
564×fma-neg_binary64
554×fma-def_binary64
139×cancel-sign-sub-inv_binary64
119×div-sub_binary64
114×unsub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0231656
1471656
2971656
31981656
44371656
510101656
617841656
726121656
827511656
928141656
1028191656
Stop Event
saturated
Counts
128 → 59

prune151.0ms (2%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New1913194
Fresh358
Picked011
Done000
Total1949203
Error
0.4b
Counts
203 → 9
Alt Table
StatusErrorProgram
20.5b
(*.f64 (/.f64 180 (PI.f64)) (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B)))
15.4b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))) (PI.f64))
42.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (+.f64 (/.f64 B (/.f64 C B)) (*.f64 (/.f64 B (/.f64 C B)) (/.f64 A C)))) B))) (PI.f64))
40.8b
(*.f64 (atan.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B A) (/.f64 C A)) (/.f64 B A)))) (/.f64 180 (PI.f64)))
42.9b
(*.f64 (atan.f64 (/.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B (/.f64 A B)) (/.f64 C A)) (/.f64 B (/.f64 A B)))) B)) (/.f64 180 (PI.f64)))
50.8b
(*.f64 (atan.f64 (fma.f64 1/2 (*.f64 (/.f64 B A) (/.f64 C A)) (fma.f64 1/2 (+.f64 (/.f64 B A) (*.f64 (/.f64 (*.f64 C C) (pow.f64 A 3)) B)) (*.f64 (/.f64 (pow.f64 B 3) (pow.f64 A 3)) -1/8)))) (/.f64 180 (PI.f64)))
45.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (/.f64 (pow.f64 B 2) C)) B))) (PI.f64))
56.1b
(*.f64 (atan.f64 (/.f64 (fma.f64 (sqrt.f64 (-.f64 C A)) (sqrt.f64 (-.f64 C A)) (neg.f64 (hypot.f64 B (-.f64 A C)))) B)) (/.f64 180 (PI.f64)))
40.6b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
Compiler

Compiled 6185 to 2966 computations (52% saved)

localize12.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

series117.0ms (1.5%)

Counts
4 → 112
Calls

4 calls:

42.0ms
(-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C))))
37.0ms
(*.f64 (/.f64 180 (PI.f64)) (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B)))
31.0ms
(+.f64 A (hypot.f64 B (-.f64 A C)))
6.0ms
(atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B))

rewrite75.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
314×log1p-udef_binary64
173×add-sqr-sqrt_binary64
165×log1p-expm1-u_binary64
165×expm1-log1p-u_binary64
164×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01466
132866
2492566
Stop Event
node limit
Counts
4 → 121
Calls

4 calls:

72.0ms
(atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B))
72.0ms
(*.f64 (/.f64 180 (PI.f64)) (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B)))
72.0ms
(-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C))))
72.0ms
(+.f64 A (hypot.f64 B (-.f64 A C)))

simplify82.0ms (1.1%)

Algorithm
egg-herbie
Rules
553×sub-neg_binary64
454×fma-neg_binary64
308×fma-def_binary64
242×+-commutative_binary64
206×associate--l+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02994355
110523930
241953929
Stop Event
node limit
Counts
233 → 255

prune227.0ms (3%)

Pruning

9 alts after pruning (7 fresh and 2 done)

PrunedKeptTotal
New2550255
Fresh077
Picked011
Done011
Total2559264
Error
0.4b
Counts
264 → 9
Alt Table
StatusErrorProgram
20.5b
(*.f64 (/.f64 180 (PI.f64)) (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B)))
15.4b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))) (PI.f64))
42.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (+.f64 (/.f64 B (/.f64 C B)) (*.f64 (/.f64 B (/.f64 C B)) (/.f64 A C)))) B))) (PI.f64))
40.8b
(*.f64 (atan.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B A) (/.f64 C A)) (/.f64 B A)))) (/.f64 180 (PI.f64)))
42.9b
(*.f64 (atan.f64 (/.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B (/.f64 A B)) (/.f64 C A)) (/.f64 B (/.f64 A B)))) B)) (/.f64 180 (PI.f64)))
50.8b
(*.f64 (atan.f64 (fma.f64 1/2 (*.f64 (/.f64 B A) (/.f64 C A)) (fma.f64 1/2 (+.f64 (/.f64 B A) (*.f64 (/.f64 (*.f64 C C) (pow.f64 A 3)) B)) (*.f64 (/.f64 (pow.f64 B 3) (pow.f64 A 3)) -1/8)))) (/.f64 180 (PI.f64)))
45.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (/.f64 (pow.f64 B 2) C)) B))) (PI.f64))
56.1b
(*.f64 (atan.f64 (/.f64 (fma.f64 (sqrt.f64 (-.f64 C A)) (sqrt.f64 (-.f64 C A)) (neg.f64 (hypot.f64 B (-.f64 A C)))) B)) (/.f64 180 (PI.f64)))
40.6b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
Compiler

Compiled 8753 to 4591 computations (47.5% saved)

localize12.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
1.7b
(+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C)))
2.2b
(*.f64 (/.f64 B C) (/.f64 A C))

series142.0ms (1.9%)

Counts
3 → 108
Calls

3 calls:

53.0ms
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
46.0ms
(*.f64 (/.f64 B C) (/.f64 A C))
42.0ms
(+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C)))

rewrite72.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
307×log1p-udef_binary64
173×add-sqr-sqrt_binary64
163×log1p-expm1-u_binary64
163×expm1-log1p-u_binary64
162×add-cbrt-cube_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01554
133948
2498448
Stop Event
node limit
Counts
3 → 123
Calls

3 calls:

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

simplify95.0ms (1.3%)

Algorithm
egg-herbie
Rules
556×fma-def_binary64
548×times-frac_binary64
330×unswap-sqr_binary64
291×associate-/l*_binary64
264×associate-/r*_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
0221890
1441890
2891782
32091692
46351620
532261560
638531560
748691560
Stop Event
node limit
Counts
231 → 131

prune135.0ms (1.8%)

Pruning

12 alts after pruning (9 fresh and 3 done)

PrunedKeptTotal
New1283131
Fresh066
Picked011
Done022
Total12812140
Error
0.4b
Counts
140 → 12
Alt Table
StatusErrorProgram
20.5b
(*.f64 (/.f64 180 (PI.f64)) (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 A C)))) B)))
15.4b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 A C))) B))) (PI.f64))
42.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 (*.f64 A B) (pow.f64 C 2))))) (PI.f64)))
40.6b
(*.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (*.f64 (/.f64 B C) (/.f64 A C))))) (/.f64 180 (PI.f64)))
40.1b
(/.f64 1 (/.f64 (PI.f64) (*.f64 (atan.f64 (*.f64 (*.f64 (/.f64 B C) (+.f64 1 (/.f64 A C))) -1/2)) 180)))
42.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (+.f64 (/.f64 B (/.f64 C B)) (*.f64 (/.f64 B (/.f64 C B)) (/.f64 A C)))) B))) (PI.f64))
40.8b
(*.f64 (atan.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B A) (/.f64 C A)) (/.f64 B A)))) (/.f64 180 (PI.f64)))
42.9b
(*.f64 (atan.f64 (/.f64 (*.f64 1/2 (+.f64 (*.f64 (/.f64 B (/.f64 A B)) (/.f64 C A)) (/.f64 B (/.f64 A B)))) B)) (/.f64 180 (PI.f64)))
50.8b
(*.f64 (atan.f64 (fma.f64 1/2 (*.f64 (/.f64 B A) (/.f64 C A)) (fma.f64 1/2 (+.f64 (/.f64 B A) (*.f64 (/.f64 (*.f64 C C) (pow.f64 A 3)) B)) (*.f64 (/.f64 (pow.f64 B 3) (pow.f64 A 3)) -1/8)))) (/.f64 180 (PI.f64)))
45.1b
(/.f64 (*.f64 180 (atan.f64 (/.f64 (*.f64 -1/2 (/.f64 (pow.f64 B 2) C)) B))) (PI.f64))
56.1b
(*.f64 (atan.f64 (/.f64 (fma.f64 (sqrt.f64 (-.f64 C A)) (sqrt.f64 (-.f64 C A)) (neg.f64 (hypot.f64 B (-.f64 A C)))) B)) (/.f64 180 (PI.f64)))
40.1b
(*.f64 (atan.f64 (*.f64 -1/2 (*.f64 (+.f64 (/.f64 A (pow.f64 C 2)) (/.f64 1 C)) B))) (/.f64 180 (PI.f64)))
Compiler

Compiled 3146 to 1633 computations (48.1% saved)

regimes1.3s (16.6%)

Accuracy

Total 12.7b remaining (98%)

Threshold costs 0b (0%)

Counts
125 → 4
Compiler

Compiled 17939 to 13459 computations (25% saved)

bsearch215.0ms (2.8%)

Steps
ItersRangePoint
9
8.23485509169439e+108
3.8043620583727583e+115
1.7991825338144448e+115
9
0.22886988406357422
2258430.5316953994
0.23170752377600393
3
7.382077625243408e-100
9.103198315940128e-100
8.995628272771583e-100
Compiler

Compiled 4 to 3 computations (25% saved)

simplify5.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
037118
151118
261118
367118
470118
Stop Event
saturated

end214.0ms (2.8%)

Compiler

Compiled 438 to 283 computations (35.4% saved)

Profiling

Loading profile data...