Details

Time bar (total: 7.9s)

analyze462.0ms (5.8%)

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.8s (47.7%)

Results
1.1s892×body4096valid
1.1s5595×body128valid
854.0ms891×body2048valid
337.0ms461×body1024valid
165.0ms289×body512valid
51.0ms128×body256valid
Compiler

Compiled 80 to 62 computations (22.5% saved)

simplify62.0ms (0.8%)

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

prune5.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
11.7b
Counts
3 → 2
Alt Table
StatusErrorProgram
11.8b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
31.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 91 computations (31.1% saved)

localize12.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))
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)))

series123.0ms (1.6%)

Counts
3 → 108
Calls

3 calls:

59.0ms
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
37.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
26.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))

rewrite30.0ms (0.4%)

Algorithm
rewrite-expression-head
Rules
50×*-un-lft-identity_binary64
43×add-sqr-sqrt_binary64
37×times-frac_binary64
30×add-cube-cbrt_binary64
13×associate-*r*_binary64
Counts
3 → 107
Calls

3 calls:

9.0ms
(/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)
8.0ms
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))
4.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64))

simplify143.0ms (1.8%)

Algorithm
egg-herbie
Rules
391×sub-neg_binary64
267×fma-neg_binary64
245×fma-def_binary64
193×+-commutative_binary64
185×associate-/l*_binary64
Counts
215 → 239
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
04307029
112186479
241586476
350856476

prune186.0ms (2.4%)

Pruning

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New2336239
Fresh101
Picked101
Done000
Total2356241
Error
0.1b
Counts
241 → 6
Alt Table
StatusErrorProgram
34.3b
(*.f64 180 (/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (PI.f64)))
44.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (/.f64 B C))) (PI.f64)))
46.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (PI.f64)))
11.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
11.8b
(*.f64 180 (log1p.f64 (expm1.f64 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (PI.f64)))))
43.7b
(*.f64 180 (/.f64 (atan.f64 (neg.f64 (+.f64 (*.f64 1/2 (/.f64 B C)) (*.f64 1/2 (/.f64 (*.f64 A B) (pow.f64 C 2)))))) (PI.f64)))
Compiler

Compiled 8144 to 2880 computations (64.6% saved)

localize12.0ms (0.2%)

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 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
0.7b
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64)))
1.0b
(sqrt.f64 (PI.f64))

series76.0ms (1%)

Counts
3 → 72
Calls

3 calls:

38.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64)))
38.0ms
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
0.0ms
(sqrt.f64 (PI.f64))

rewrite32.0ms (0.4%)

Algorithm
rewrite-expression-head
Rules
40×add-exp-log_binary64
36×times-frac_binary64
33×add-sqr-sqrt_binary64
32×*-un-lft-identity_binary64
32×add-cube-cbrt_binary64
Counts
3 → 112
Calls

3 calls:

13.0ms
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
5.0ms
(/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64)))
1.0ms
(sqrt.f64 (PI.f64))

simplify217.0ms (2.7%)

Algorithm
egg-herbie
Rules
573×fma-neg_binary64
448×associate-/l*_binary64
376×div-sub_binary64
355×fma-def_binary64
334×*-commutative_binary64
Counts
184 → 161
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01636017
13595230
212095230
325395116
429845116
538615116
645855116
751975116

prune217.0ms (2.7%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New2984302
Fresh235
Picked011
Done000
Total3008308
Error
0.1b
Counts
308 → 8
Alt Table
StatusErrorProgram
11.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
34.3b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64))))
14.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
46.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (PI.f64)))
42.7b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (sqrt.f64 (PI.f64))))
46.5b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (sqrt.f64 (PI.f64))))
43.7b
(*.f64 180 (/.f64 (atan.f64 (neg.f64 (+.f64 (*.f64 1/2 (/.f64 B C)) (*.f64 1/2 (/.f64 (*.f64 A B) (pow.f64 C 2)))))) (PI.f64)))
44.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (/.f64 B C))) (PI.f64)))
Compiler

Compiled 11699 to 4106 computations (64.9% saved)

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
0.2b
(+.f64 A (hypot.f64 B (-.f64 C A)))
0.8b
(*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64))))
1.0b
(sqrt.f64 (PI.f64))

series108.0ms (1.4%)

Counts
3 → 80
Calls

3 calls:

39.0ms
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
35.0ms
(*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64))))
34.0ms
(+.f64 A (hypot.f64 B (-.f64 C A)))

rewrite33.0ms (0.4%)

Algorithm
rewrite-expression-head
Rules
40×add-exp-log_binary64
26×add-cbrt-cube_binary64
24×prod-exp_binary64
22×add-sqr-sqrt_binary64
17×associate-*r*_binary64
Counts
3 → 91
Calls

3 calls:

12.0ms
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
7.0ms
(*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64))))
4.0ms
(+.f64 A (hypot.f64 B (-.f64 C A)))

simplify147.0ms (1.9%)

Algorithm
egg-herbie
Rules
950×times-frac_binary64
297×fma-neg_binary64
262×associate-*l*_binary64
250×associate-*r*_binary64
188×fma-def_binary64
Counts
171 → 185
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
03445955
19615203
233455203
349385203
450755203

prune145.0ms (1.8%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New2010201
Fresh066
Picked011
Done011
Total2018209
Error
0.1b
Counts
209 → 8
Alt Table
StatusErrorProgram
11.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
34.3b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64))))
14.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
46.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (PI.f64)))
42.7b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (sqrt.f64 (PI.f64))))
46.5b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (sqrt.f64 (PI.f64))))
43.7b
(*.f64 180 (/.f64 (atan.f64 (neg.f64 (+.f64 (*.f64 1/2 (/.f64 B C)) (*.f64 1/2 (/.f64 (*.f64 A B) (pow.f64 C 2)))))) (PI.f64)))
44.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (/.f64 B C))) (PI.f64)))
Compiler

Compiled 8047 to 4096 computations (49.1% saved)

localize24.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.8b
(/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64)))
1.0b
(sqrt.f64 (PI.f64))
29.6b
(sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))
29.6b
(sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))

series100.0ms (1.3%)

Counts
3 → 84
Calls

3 calls:

81.0ms
(/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64)))
12.0ms
(sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))
7.0ms
(sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))

rewrite20.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
31×add-sqr-sqrt_binary64
29×times-frac_binary64
28×sqrt-prod_binary64
27×*-un-lft-identity_binary64
26×add-cube-cbrt_binary64
Counts
3 → 86
Calls

3 calls:

8.0ms
(/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64)))
2.0ms
(sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))
1.0ms
(sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))

simplify198.0ms (2.5%)

Algorithm
egg-herbie
Rules
587×associate-/l*_binary64
351×cancel-sign-sub-inv_binary64
351×fma-neg_binary64
244×associate-/l/_binary64
242×div-sub_binary64
Counts
170 → 167
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02008054
13877669
28836813
322816807
447846807
551456807

prune241.0ms (3.1%)

Pruning

9 alts after pruning (6 fresh and 3 done)

PrunedKeptTotal
New1981199
Fresh055
Picked011
Done022
Total1989207
Error
0.1b
Counts
207 → 9
Alt Table
StatusErrorProgram
11.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 C A) (hypot.f64 B (-.f64 C A))) B)) (sqrt.f64 (PI.f64))))
34.3b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (sqrt.f64 (PI.f64))))
14.8b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (*.f64 (atan.f64 (/.f64 (-.f64 C (+.f64 A (hypot.f64 B (-.f64 C A)))) B)) (sqrt.f64 (/.f64 1 (PI.f64)))))
34.6b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (-.f64 (/.f64 (-.f64 C (+.f64 A (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2))))))) B) (*.f64 1/2 (*.f64 B (sqrt.f64 (/.f64 1 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 A 2)))))))))) (*.f64 (sqrt.f64 (sqrt.f64 (PI.f64))) (sqrt.f64 (sqrt.f64 (PI.f64))))))
46.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (PI.f64)))
42.7b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 -1/2 (+.f64 (/.f64 B C) (/.f64 A (/.f64 (*.f64 C C) B))))) (sqrt.f64 (PI.f64))))
46.5b
(*.f64 (*.f64 180 (/.f64 1 (sqrt.f64 (PI.f64)))) (/.f64 (atan.f64 (*.f64 1/2 (+.f64 (/.f64 B A) (/.f64 C (/.f64 (*.f64 A A) B))))) (sqrt.f64 (PI.f64))))
43.7b
(*.f64 180 (/.f64 (atan.f64 (neg.f64 (+.f64 (*.f64 1/2 (/.f64 B C)) (*.f64 1/2 (/.f64 (*.f64 A B) (pow.f64 C 2)))))) (PI.f64)))
44.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 -1/2 (/.f64 B C))) (PI.f64)))
Compiler

Compiled 11905 to 7129 computations (40.1% saved)

regimes1.3s (15.8%)

Accuracy

Total 11.4b remaining (96.6%)

Threshold costs 0b (0%)

Counts
132 → 2
Compiler

Compiled 27474 to 18694 computations (32% saved)

bsearch92.0ms (1.2%)

Steps
ItersRangePoint
9
7.197869796278369e+105
1.2201834653371847e+111
1.9116610246095172e+110
Compiler

Compiled 4 to 3 computations (25% saved)

simplify4.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
02769
13769
24469
34869
45069
54969

end175.0ms (2.2%)

Compiler

Compiled 357 to 245 computations (31.4% saved)

Profiling

Loading profile data...