Details

Time bar (total: 12.9s)

analyze1.6s (12.2%)

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

Results
1.3s1549×body1024valid
1.2s1359×body1024invalid
1.1s5262×body128valid
505.0ms798×body512valid
410.0ms687×body512invalid
351.0ms79×body4096valid
306.0ms1365×body128invalid
281.0ms192×body2048valid
169.0ms376×body256valid
130.0ms314×body256invalid
Compiler

Compiled 80 to 65 computations (18.8% saved)

simplify22.0ms (0.2%)

Algorithm
egg-herbie
Rules
387×unsub-neg_binary64
324×distribute-rgt-in_binary64
306×distribute-lft-in_binary64
302×*-commutative_binary64
278×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01737
13737
29137
327537
4108137
5314537
Stop Event
node limit
Counts
1 → 2

prune4.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
31.5b
Counts
3 → 2
Alt Table
StatusErrorProgram
31.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
31.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 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 153 to 116 computations (24.2% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (PI.f64) (/.f64 angle 180))
7.1b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
26.4b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series56.0ms (0.4%)

Counts
4 → 72
Calls

4 calls:

44.0ms
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
6.0ms
(*.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)))

rewrite59.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
751×prod-diff_binary64
168×add-sqr-sqrt_binary64
161×log1p-expm1-u_binary64
161×expm1-log1p-u_binary64
158×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01653
134353
2426853
Stop Event
node limit
Counts
4 → 72
Calls

4 calls:

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

simplify40.0ms (0.3%)

Algorithm
egg-herbie
Rules
772×fma-def_binary64
482×cancel-sign-sub-inv_binary64
443×*-commutative_binary64
258×unswap-sqr_binary64
237×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01191902
13711582
214631540
Stop Event
node limit
Counts
144 → 106

prune230.0ms (1.8%)

Pruning

31 alts after pruning (31 fresh and 0 done)

PrunedKeptTotal
New9631127
Fresh101
Picked101
Done000
Total9831129
Error
28.1b
Counts
129 → 31
Alt Table
StatusErrorProgram
34.7b
(*.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 1/180)) 3))))
31.6b
(*.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 1/180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)))
47.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
45.4b
(*.f64 (exp.f64 (log.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.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 (sqrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
50.7b
(*.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3) (pow.f64 (*.f64 2 (fma.f64 b b (*.f64 a (neg.f64 a)))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.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 angle (*.f64 (PI.f64) 1/180))))
31.8b
(*.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 1/180))) 3)))
46.7b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
51.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.9b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
36.3b
(*.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))))
32.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
31.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3)))
34.4b
(*.f64 (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
42.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
50.8b
(*.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 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.5b
(*.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 1/180))) 2)))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
41.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 -2 (*.f64 a a))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
35.0b
(*.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 1/180))))))
31.9b
(*.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)))))
45.5b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.7b
(*.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))))
46.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.0b
(*.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 1/180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
32.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
43.6b
(*.f64 (*.f64 2 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 5531 to 4155 computations (24.9% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (PI.f64) (*.f64 angle 1/180))
7.1b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
26.4b
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

series5.0ms (0%)

Counts
2 → 24
Calls

2 calls:

3.0ms
(*.f64 (PI.f64) (*.f64 angle 1/180))
3.0ms
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

rewrite33.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
600×log1p-expm1-u_binary64
600×expm1-log1p-u_binary64
361×prod-diff_binary64
126×expm1-udef_binary64
126×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0718
114018
2163618
Stop Event
node limit
Counts
2 → 34
Calls

2 calls:

32.0ms
(*.f64 (PI.f64) (*.f64 angle 1/180))
32.0ms
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

simplify31.0ms (0.2%)

Algorithm
egg-herbie
Rules
848×distribute-rgt-neg-in_binary64
487×fma-def_binary64
475×cancel-sign-sub-inv_binary64
305×*-commutative_binary64
274×fma-neg_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
031270
184270
2250266
31171264
44105258
Stop Event
node limit
Counts
58 → 45

prune280.0ms (2.2%)

Pruning

43 alts after pruning (43 fresh and 0 done)

PrunedKeptTotal
New8518103
Fresh52530
Picked101
Done000
Total9143134
Error
28.0b
Counts
134 → 43
Alt Table
StatusErrorProgram
31.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.7b
(*.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 (pow.f64 (cbrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)) 2)))
34.7b
(*.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 1/180)) 3))))
40.2b
(*.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 (pow.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3) 1/3)) 2)))
47.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (sqrt.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 2)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
45.4b
(*.f64 (exp.f64 (log.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.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 (sqrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
50.7b
(*.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3) (pow.f64 (*.f64 2 (fma.f64 b b (*.f64 a (neg.f64 a)))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.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 angle (*.f64 (PI.f64) 1/180))))
39.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.8b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
51.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.9b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
45.8b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.6b
(*.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)) 2)))
48.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
36.3b
(*.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))))
32.2b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1)
31.6b
(*.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 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) 3) 2)))
43.6b
(*.f64 (*.f64 2 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
42.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
31.5b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
50.8b
(*.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 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.3b
(*.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 (expm1.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 2)))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
41.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 -2 (*.f64 a a))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.6b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.0b
(*.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 1/180))))))
31.9b
(*.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.8b
(*.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 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (*.f64 angle 1/180) 3)))) 2)))
31.6b
(*.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 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 1) 2)))
31.7b
(*.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))))
37.8b
(*.f64 (expm1.f64 (log1p.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
46.4b
(*.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 (pow.f64 (sqrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 2)) 2)))
35.2b
(*.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 (+.f64 (*.f64 (cos.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (cos.f64 1)) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (sin.f64 1))) 2)))
54.0b
(*.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 1/180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.8b
(*.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 1/180))) 3)))
44.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
34.4b
(*.f64 (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Compiler

Compiled 6070 to 4675 computations (23% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (PI.f64) (*.f64 angle 1/180))
7.1b
(*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
25.8b
(sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))
26.4b
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

series51.0ms (0.4%)

Counts
2 → 48
Calls

2 calls:

48.0ms
(*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
3.0ms
(sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

rewrite46.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
445×prod-diff_binary64
249×expm1-udef_binary64
249×log1p-udef_binary64
152×add-sqr-sqrt_binary64
140×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01535
130532
2366532
Stop Event
node limit
Counts
2 → 35
Calls

2 calls:

45.0ms
(*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
45.0ms
(sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

simplify48.0ms (0.4%)

Algorithm
egg-herbie
Rules
710×fma-def_binary64
414×cancel-sign-sub-inv_binary64
400×sub-neg_binary64
376×*-commutative_binary64
216×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0951632
13041312
212351272
346241272
Stop Event
node limit
Counts
83 → 60

prune419.0ms (3.3%)

Pruning

43 alts after pruning (43 fresh and 0 done)

PrunedKeptTotal
New11111122
Fresh103242
Picked101
Done000
Total12243165
Error
26.6b
Counts
165 → 43
Alt Table
StatusErrorProgram
31.7b
(*.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 (pow.f64 (cbrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)) 2)))
45.8b
(*.f64 (pow.f64 (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
34.7b
(*.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 1/180)) 3))))
40.2b
(*.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 (pow.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3) 1/3)) 2)))
49.2b
(*.f64 (pow.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
45.4b
(*.f64 (exp.f64 (log.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.2b
(*.f64 (pow.f64 (log.f64 (pow.f64 (pow.f64 (exp.f64 2) (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) (pow.f64 (hypot.f64 b a) 2))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
46.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 (sqrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
50.7b
(*.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3) (pow.f64 (*.f64 2 (fma.f64 b b (*.f64 a (neg.f64 a)))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
39.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
51.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (hypot.f64 b a) (sqrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 2))) 2) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
43.5b
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2))) 3) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.8b
(*.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 1/180))) 3)))
45.8b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.6b
(*.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)) 2)))
48.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
51.6b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (pow.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3) 1/3)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
34.4b
(*.f64 (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.6b
(*.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 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) 3) 2)))
31.7b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (pow.f64 (cbrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.1b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (*.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
43.6b
(*.f64 (*.f64 2 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.1b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (cbrt.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3))))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
37.3b
(*.f64 (pow.f64 (+.f64 (+.f64 (*.f64 (PI.f64) (*.f64 (*.f64 b b) (*.f64 angle 1/90))) (*.f64 (*.f64 a a) (+.f64 (*.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) 1/17496000) (*.f64 (*.f64 (pow.f64 angle 7) (pow.f64 (PI.f64) 7)) 1/15427944806400000000)))) (-.f64 (*.f64 (*.f64 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5)) 1/11337408000000) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 a a) 1/90)) (*.f64 (*.f64 b b) (+.f64 (*.f64 (pow.f64 (PI.f64) 7) (*.f64 (pow.f64 angle 7) 1/15427944806400000000)) (*.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) 1/17496000)))))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
31.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.3b
(*.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 (expm1.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 2)))
32.2b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1) (sqrt.f64 (pow.f64 1 2)))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
41.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 -2 (*.f64 a a))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.6b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.0b
(*.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 1/180))))))
31.9b
(*.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.8b
(*.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 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (*.f64 angle 1/180) 3)))) 2)))
31.6b
(*.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 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 1) 2)))
31.7b
(*.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))))
37.8b
(*.f64 (expm1.f64 (log1p.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
46.4b
(*.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 (pow.f64 (sqrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 2)) 2)))
35.2b
(*.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 (+.f64 (*.f64 (cos.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (cos.f64 1)) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (sin.f64 1))) 2)))
54.0b
(*.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 1/180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
51.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
Compiler

Compiled 7006 to 4982 computations (28.9% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
7.1b
(*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
26.4b
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

series3.0ms (0%)

Counts
1 → 12
Calls

1 calls:

3.0ms
(log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))

rewrite33.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
662×log1p-expm1-u_binary64
662×expm1-log1p-u_binary64
361×prod-diff_binary64
140×log1p-udef_binary64
78×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0910
116110
2182110
Stop Event
node limit
Counts
1 → 20
Calls

1 calls:

33.0ms
(log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))

simplify28.0ms (0.2%)

Algorithm
egg-herbie
Rules
848×distribute-rgt-neg-in_binary64
487×fma-def_binary64
475×cancel-sign-sub-inv_binary64
305×*-commutative_binary64
274×fma-neg_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
031174
184174
2250170
31171168
44105162
Stop Event
node limit
Counts
32 → 29

prune335.0ms (2.6%)

Pruning

45 alts after pruning (45 fresh and 0 done)

PrunedKeptTotal
New1087115
Fresh43842
Picked101
Done000
Total11345158
Error
26.6b
Counts
158 → 45
Alt Table
StatusErrorProgram
31.7b
(*.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 (pow.f64 (cbrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)) 2)))
45.8b
(*.f64 (pow.f64 (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
34.7b
(*.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 1/180)) 3))))
31.6b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)))
40.2b
(*.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 (pow.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3) 1/3)) 2)))
49.2b
(*.f64 (pow.f64 (exp.f64 (log.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
45.4b
(*.f64 (exp.f64 (log.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
54.2b
(*.f64 (pow.f64 (log.f64 (pow.f64 (pow.f64 (exp.f64 2) (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) (pow.f64 (hypot.f64 b a) 2))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
46.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 (sqrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
50.7b
(*.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3) (pow.f64 (*.f64 2 (fma.f64 b b (*.f64 a (neg.f64 a)))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
39.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))))))
51.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (hypot.f64 b a) (sqrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 2))) 2) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
43.5b
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) (*.f64 (pow.f64 (hypot.f64 b a) 2) 2))) 3) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
31.8b
(*.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 1/180))) 3)))
51.6b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (pow.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3) 1/3)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
34.4b
(*.f64 (*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
31.6b
(*.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 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) 3) 2)))
31.7b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (pow.f64 (cbrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 3)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
32.1b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (*.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)))) 2)))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
43.6b
(*.f64 (*.f64 2 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
46.1b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (cbrt.f64 (pow.f64 (*.f64 1/180 (*.f64 (PI.f64) angle)) 3))))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
37.3b
(*.f64 (pow.f64 (+.f64 (+.f64 (*.f64 (PI.f64) (*.f64 (*.f64 b b) (*.f64 angle 1/90))) (*.f64 (*.f64 a a) (+.f64 (*.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) 1/17496000) (*.f64 (*.f64 (pow.f64 angle 7) (pow.f64 (PI.f64) 7)) 1/15427944806400000000)))) (-.f64 (*.f64 (*.f64 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5)) 1/11337408000000) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 a a) 1/90)) (*.f64 (*.f64 b b) (+.f64 (*.f64 (pow.f64 (PI.f64) 7) (*.f64 (pow.f64 angle 7) 1/15427944806400000000)) (*.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) 1/17496000)))))) 1) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.1b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (log.f64 (exp.f64 (+.f64 (*.f64 (cos.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (cos.f64 1)) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (sin.f64 1))))))
31.7b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
35.3b
(*.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 (expm1.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) 2)))
32.2b
(*.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1) (sqrt.f64 (pow.f64 1 2)))
31.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (/.f64 1 (/.f64 180 (*.f64 (PI.f64) angle))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
41.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 -2 (*.f64 a a))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
35.0b
(*.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 1/180))))))
31.9b
(*.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)))))
46.0b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (sqrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 2)) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
34.8b
(*.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 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 (*.f64 angle 1/180) 3)))) 2)))
31.7b
(*.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))))
46.8b
(*.f64 (sqrt.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2)) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
37.8b
(*.f64 (expm1.f64 (log1p.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
46.4b
(*.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 (pow.f64 (sqrt.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))) 2)) 2)))
35.2b
(*.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 (+.f64 (*.f64 (cos.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (cos.f64 1)) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (*.f64 1/180 (*.f64 (PI.f64) angle))))) (sin.f64 1))) 2)))
54.0b
(*.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 1/180)))) 1))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
45.5b
(*.f64 (exp.f64 (log.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
50.7b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (log.f64 (exp.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) (log.f64 (exp.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))))
51.3b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)) 3) 1/3))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
48.9b
(*.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 b b (*.f64 a (neg.f64 a))) (*.f64 2 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
44.9b
(*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)))
Compiler

Compiled 5176 to 3869 computations (25.3% saved)

regimes2.7s (21.1%)

Accuracy

Total 3.3b remaining (11.2%)

Threshold costs 0b (0%)

Counts
165 → 2
Compiler

Compiled 62597 to 50701 computations (19% saved)

bsearch8.0ms (0.1%)

Compiler

Compiled 26 to 21 computations (19.2% saved)

simplify5.0ms (0%)

Algorithm
egg-herbie
Rules
16×*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
043120
163120
267120
369120
470120
Stop Event
saturated

end938.0ms (7.3%)

Compiler

Compiled 1637 to 1315 computations (19.7% saved)

Profiling

Loading profile data...