Details

Time bar (total: 12.4s)

analyze1.8s (14.8%)

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
31.2%68.6%0.1%8
40.6%59.3%0.1%9
40.6%59.3%0.1%10
46%53.8%0.1%11
52.7%47.2%0.1%12
52.7%44.6%2.8%13
55.9%40.6%3.5%14
Compiler

Compiled 27 to 22 computations (18.5% saved)

sample5.9s (47.3%)

Results
1.4s1589×body1024valid
1.2s5279×body128valid
1.1s1358×body1024invalid
489.0ms775×body512valid
399.0ms658×body512invalid
315.0ms72×body4096valid
299.0ms1344×body128invalid
257.0ms176×body2048valid
164.0ms364×body256valid
136.0ms334×body256invalid
11.0msbody8192valid
Compiler

Compiled 80 to 65 computations (18.8% saved)

simplify41.0ms (0.3%)

Algorithm
egg-herbie
Rules
387×unsub-neg_binary64
380×neg-sub0_binary64
373×neg-mul-1_binary64
358×*-commutative_binary64
328×fma-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01737
13737
28437
322437
480337
5206137
6386137
7507637

prune3.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
33.4b
Counts
3 → 1
Alt Table
StatusErrorProgram
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 101 to 78 computations (22.8% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (PI.f64) (/.f64 angle 180))
10.9b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
24.1b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
24.5b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series67.0ms (0.5%)

Counts
4 → 72
Calls

4 calls:

57.0ms
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
3.0ms
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
3.0ms
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
3.0ms
(*.f64 (PI.f64) (/.f64 angle 180))

rewrite71.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
751×prod-diff_binary64
168×add-sqr-sqrt_binary64
161×log1p-expm1-u_binary64
161×expm1-log1p-u_binary64
157×add-log-exp_binary64
Counts
4 → 72
Calls

4 calls:

69.0ms
(*.f64 (PI.f64) (/.f64 angle 180))
69.0ms
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
69.0ms
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
69.0ms
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01653
134353
2396653
3525353
000
100

simplify92.0ms (0.7%)

Algorithm
egg-herbie
Rules
782×fma-def_binary64
482×cancel-sign-sub-inv_binary64
481×*-commutative_binary64
441×sub-neg_binary64
258×unswap-sqr_binary64
Counts
144 → 103
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01191902
13531582
213681540
341831540
448551540
549571540

prune229.0ms (1.8%)

Pruning

36 alts after pruning (36 fresh and 0 done)

PrunedKeptTotal
New8836124
Fresh000
Picked101
Done000
Total8936125
Error
30.2b
Counts
125 → 36
Alt Table
StatusErrorProgram
54.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
50.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (-.f64 (exp.f64 (log1p.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 1)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))
45.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
47.5b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
37.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (/.f64 angle 180) 3)))))
43.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3)))
33.6b
(*.f64 (-.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (*.f64 2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)))
48.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
49.4b
(*.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) 1) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
36.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
36.5b
(*.f64 (*.f64 angle (*.f64 1/90 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
37.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle)))))
34.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
47.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 (PI.f64) (/.f64 180 angle)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 1))
43.6b
(*.f64 (*.f64 -2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
37.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))
34.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3)))
43.5b
(*.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
53.2b
(*.f64 (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) 3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
38.7b
(*.f64 (-.f64 (+.f64 (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 a 2)))) (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 b 2))))) (+.f64 (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 a 2)))) (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 b 2)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
Compiler

Compiled 5773 to 4343 computations (24.8% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.7b
(+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
10.9b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
24.1b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
24.5b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series8.0ms (0.1%)

Counts
1 → 12
Calls

1 calls:

8.0ms
(+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))

rewrite51.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
443×log-prod_binary64
425×prod-diff_binary64
180×fma-def_binary64
177×expm1-udef_binary64
177×log1p-udef_binary64
Counts
1 → 45
Calls

1 calls:

50.0ms
(+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01015
120812
2241312
3490112
000
100

simplify62.0ms (0.5%)

Algorithm
egg-herbie
Rules
799×distribute-rgt-neg-in_binary64
705×fma-def_binary64
665×distribute-lft-neg-in_binary64
561×cancel-sign-sub-inv_binary64
427×fma-neg_binary64
Counts
57 → 54
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
036222
198218
2290212
31323202
43489202
54863196
65086196

prune354.0ms (2.8%)

Pruning

37 alts after pruning (37 fresh and 0 done)

PrunedKeptTotal
New1279136
Fresh72835
Picked101
Done000
Total13537172
Error
30.1b
Counts
172 → 37
Alt Table
StatusErrorProgram
54.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
50.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (log.f64 (+.f64 1 (expm1.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))
48.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
47.5b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (fma.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) (pow.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 2) 1)))
37.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (/.f64 angle 180) 3)))))
43.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3)))
33.6b
(*.f64 (-.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (*.f64 2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
48.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
49.4b
(*.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) 1) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
36.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3)))
37.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle)))))
34.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
33.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) 3) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
47.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
43.6b
(*.f64 (*.f64 -2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
37.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))
34.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3)))
43.5b
(*.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
53.2b
(*.f64 (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)))))
54.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
38.7b
(*.f64 (-.f64 (+.f64 (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 a 2)))) (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 b 2))))) (+.f64 (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 a 2)))) (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 b 2)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
45.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 (PI.f64) (/.f64 180 angle)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 7031 to 5450 computations (22.5% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.9b
(pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)
10.9b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
24.1b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
24.5b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series18.0ms (0.1%)

Counts
1 → 12
Calls

1 calls:

18.0ms
(pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)

rewrite45.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
875×log1p-expm1-u_binary64
875×expm1-log1p-u_binary64
298×prod-diff_binary64
101×add-sqr-sqrt_binary64
95×add-log-exp_binary64
Counts
1 → 21
Calls

1 calls:

44.0ms
(pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01015
120915
2231515
3579615
000
100

simplify54.0ms (0.4%)

Algorithm
egg-herbie
Rules
648×fma-neg_binary64
550×distribute-rgt-neg-in_binary64
534×distribute-lft-neg-in_binary64
490×associate-*r*_binary64
483×associate-*l*_binary64
Counts
33 → 30
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
044312
1126272
2408248
32143244
44980244
54994244

prune330.0ms (2.7%)

Pruning

41 alts after pruning (41 fresh and 0 done)

PrunedKeptTotal
New1048112
Fresh33336
Picked101
Done000
Total10841149
Error
30.1b
Counts
149 → 41
Alt Table
StatusErrorProgram
54.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
50.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (log.f64 (+.f64 1 (expm1.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))
48.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
47.5b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (fma.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) (pow.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 2) 1)))
37.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (/.f64 angle 180) 3)))))
43.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3)))
33.6b
(*.f64 (-.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (*.f64 2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (*.f64 (pow.f64 (sqrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3) (pow.f64 (sqrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3)))))
48.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
49.4b
(*.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) 1) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
33.8b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 2) 3) (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))))
36.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3)))
37.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle)))))
34.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 3))))
33.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) 3) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
47.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 (PI.f64) (/.f64 180 angle)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 3))))
43.6b
(*.f64 (*.f64 -2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (expm1.f64 (log1p.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
37.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))
34.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3)))
43.5b
(*.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
53.2b
(*.f64 (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
45.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))) 1))))
38.7b
(*.f64 (-.f64 (+.f64 (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 a 2)))) (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 b 2))))) (+.f64 (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 a 2)))) (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 b 2)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 6680 to 5228 computations (21.7% saved)

localize25.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.9b
(pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)
10.9b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
24.1b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
24.5b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

prune328.0ms (2.6%)

Pruning

43 alts after pruning (43 fresh and 0 done)

PrunedKeptTotal
New1066112
Fresh33740
Picked101
Done000
Total11043153
Error
30.1b
Counts
153 → 43
Alt Table
StatusErrorProgram
54.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))) 1))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3))) 1))))
50.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (log.f64 (+.f64 1 (expm1.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
47.5b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 3))) 1))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (fma.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) (pow.f64 (cbrt.f64 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 2) 1)))
37.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (/.f64 angle 180) 3)))))
43.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3)))
33.6b
(*.f64 (-.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (*.f64 2 (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (*.f64 (pow.f64 (sqrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3) (pow.f64 (sqrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3)))))
48.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
49.4b
(*.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) 1) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
33.8b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 2) 3) (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))))
36.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (cbrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3))))
45.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))) 1))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3)))
37.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle)))))
34.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
33.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) 3) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
47.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 (PI.f64) (/.f64 180 angle)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 3))))
43.6b
(*.f64 (*.f64 -2 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 a a))) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))) 1))))
33.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
33.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.2b
(*.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
33.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (expm1.f64 (log1p.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))))
37.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))
34.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3)))
43.5b
(*.f64 (*.f64 2 (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) 3) (log.f64 (cbrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3))) 1))))
53.2b
(*.f64 (log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.4b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
33.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
45.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))))
48.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cos.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2)))
38.7b
(*.f64 (-.f64 (+.f64 (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 a 2)))) (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 b 2))))) (+.f64 (*.f64 1/90 (*.f64 angle (*.f64 (PI.f64) (pow.f64 a 2)))) (*.f64 1/17496000 (*.f64 (pow.f64 angle 3) (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 b 2)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 5948 to 4711 computations (20.8% saved)

regimes2.0s (16.2%)

Accuracy

Total 3.2b remaining (10.2%)

Threshold costs 0b (0%)

Counts
127 → 1
Compiler

Compiled 47321 to 38678 computations (18.3% saved)

simplify3.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
01937
12537
23037
33237
43337
53337

end877.0ms (7.1%)

Compiler

Compiled 1432 to 1177 computations (17.8% saved)

Profiling

Loading profile data...