Details

Time bar (total: 13.2s)

analyze1.6s (11.9%)

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
31.2%68.6%0.1%7
37.4%62.4%0.1%8
45.2%54.6%0.1%9
45.2%54.6%0.1%10
50.3%49.5%0.1%11
56.4%43.5%0.1%12
56.4%41.4%2.2%13
59.3%37.9%2.8%14
Compiler

Compiled 27 to 22 computations (18.5% saved)

sample5.6s (42.5%)

Results
1.3s1591×body1024valid
1.1s5240×body128valid
1.1s1258×body1024invalid
469.0ms779×body512valid
386.0ms638×body512invalid
382.0ms87×body4096valid
313.0ms1411×body128invalid
216.0ms159×body2048valid
168.0ms400×body256valid
140.0ms326×body256invalid
Compiler

Compiled 54 to 44 computations (18.5% saved)

preprocess37.0ms (0.3%)

Algorithm
egg-herbie
Rules
592×associate-*l*_binary64
575×associate-*r*_binary64
233×distribute-rgt-in_binary64
230×distribute-lft-in_binary64
207×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038148
192148
2262148
3922148
43731148
033
Stop Event
saturated
node limit
Compiler

Compiled 26 to 21 computations (19.2% saved)

simplify21.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

prune6.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 153 to 116 computations (24.2% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.0b
(-.f64 (*.f64 a a) (*.f64 b b))
10.2b
(*.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)))))
24.7b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
25.5b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series127.0ms (1%)

Counts
4 → 84
Calls

21 calls:

42.0ms
(-.f64 (*.f64 a a) (*.f64 b b))
b
-inf
11.0ms
(*.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)))))
angle
0
10.0ms
(*.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)))))
b
0
8.0ms
(*.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)))))
angle
-inf
8.0ms
(*.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)))))
a
-inf

rewrite85.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
928×prod-diff_binary64
185×add-sqr-sqrt_binary64
175×log1p-expm1-u_binary64
175×expm1-log1p-u_binary64
174×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01767
137167
2481767
Stop Event
node limit
Counts
4 → 167

simplify63.0ms (0.5%)

Algorithm
egg-herbie
Rules
783×fma-def_binary64
497×cancel-sign-sub-inv_binary64
258×unswap-sqr_binary64
248×fma-neg_binary64
203×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01242520
13902296
215402038
Stop Event
node limit
Counts
251 → 208

prune397.0ms (3%)

Pruning

34 alts after pruning (34 fresh and 0 done)

PrunedKeptTotal
New17434208
Fresh101
Picked101
Done000
Total17634210
Error
30.5b
Counts
210 → 34
Alt Table
StatusErrorProgram
46.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
35.8b
(*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64)))))
42.1b
(*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
33.6b
(*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
40.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.8b
(*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (fma.f64 (+.f64 a b) (-.f64 a b) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
50.5b
(*.f64 (-.f64 (exp.f64 (log1p.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
35.8b
(*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
36.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (*.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))))
45.8b
(*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 3)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.2b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
33.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
33.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (neg.f64 (*.f64 (*.f64 (cbrt.f64 b) b) (pow.f64 (cbrt.f64 b) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 b) b)) (pow.f64 (cbrt.f64 b) 2) (*.f64 (*.f64 (cbrt.f64 b) b) (pow.f64 (cbrt.f64 b) 2))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))
44.1b
(exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
47.7b
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 1)))
48.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
37.1b
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
43.6b
(*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
34.0b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1))
51.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (pow.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 3) 1/3)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))))
42.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (pow.f64 a 2)) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
49.2b
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3)
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
43.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (*.f64 b (neg.f64 b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
39.5b
(+.f64 (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 b b) 1/90)) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 a a)) 1/4374000))) (-.f64 (*.f64 (*.f64 1/708588000000 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5))) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 1/90 (*.f64 a a))) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 b b)) 1/4374000)))))
35.8b
(*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle))
34.0b
(*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
46.6b
(sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2))
33.9b
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))) 3)
Compiler

Compiled 9302 to 5324 computations (42.8% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.9b
(-.f64 (*.f64 b b) (*.f64 a a))
10.2b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
24.8b
(sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))
25.7b
(cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))

series110.0ms (0.8%)

Counts
4 → 84
Calls

21 calls:

30.0ms
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
a
inf
11.0ms
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
angle
0
10.0ms
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
b
inf
8.0ms
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
b
0
8.0ms
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
b
-inf

rewrite86.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
991×prod-diff_binary64
180×add-sqr-sqrt_binary64
173×egg-rr
170×log1p-expm1-u_binary64
170×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01767
136267
2464467
Stop Event
node limit
Counts
4 → 173

simplify53.0ms (0.4%)

Algorithm
egg-herbie
Rules
800×fma-def_binary64
496×cancel-sign-sub-inv_binary64
258×unswap-sqr_binary64
247×fma-neg_binary64
203×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01242088
13902080
215382038
Stop Event
node limit
Counts
257 → 213

prune478.0ms (3.6%)

Pruning

39 alts after pruning (39 fresh and 0 done)

PrunedKeptTotal
New19419213
Fresh132033
Picked101
Done000
Total20839247
Error
30.4b
Counts
247 → 39
Alt Table
StatusErrorProgram
35.8b
(*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (-.f64 (*.f64 b b) (*.f64 a a))))
46.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
35.8b
(*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64)))))
53.1b
(log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))
42.1b
(*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
33.8b
(*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a))))
46.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
40.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
35.8b
(*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
43.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2)))
42.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
33.5b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3)
36.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
42.2b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 a (neg.f64 a))))
33.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2))))
33.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
44.1b
(exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
47.7b
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a))))
48.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
37.1b
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
43.6b
(*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
34.0b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1))
53.0b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (log.f64 (pow.f64 (exp.f64 (+.f64 b a)) (-.f64 b a)))))
46.6b
(sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2))
47.6b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
34.0b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a))))
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
36.6b
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))))
49.2b
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3)
33.8b
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
39.5b
(+.f64 (fma.f64 angle (*.f64 (PI.f64) (*.f64 (*.f64 b b) 1/90)) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 a a)) 1/4374000))) (-.f64 (*.f64 (*.f64 1/708588000000 (*.f64 (pow.f64 angle 5) (pow.f64 (PI.f64) 5))) (-.f64 (*.f64 b b) (*.f64 a a))) (fma.f64 angle (*.f64 (PI.f64) (*.f64 1/90 (*.f64 a a))) (*.f64 (pow.f64 angle 3) (*.f64 (*.f64 (pow.f64 (PI.f64) 3) (*.f64 b b)) 1/4374000)))))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (log.f64 (exp.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) (-.f64 (*.f64 b b) (*.f64 a a))))
33.4b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2))))))
45.6b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))))
46.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2))))
Compiler

Compiled 9806 to 5567 computations (43.2% saved)

localize16.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.0b
(-.f64 (*.f64 a a) (*.f64 b b))
10.2b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
24.7b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
25.7b
(cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))

series91.0ms (0.7%)

Counts
1 → 36
Calls

9 calls:

27.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
angle
0
9.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
b
0
9.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
a
inf
9.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
a
-inf
8.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
a
0

rewrite28.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
214×add-sqr-sqrt_binary64
202×log1p-expm1-u_binary64
202×expm1-log1p-u_binary64
201×add-cbrt-cube_binary64
200×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02037
143337
Stop Event
node limit
Counts
1 → 15

simplify58.0ms (0.4%)

Algorithm
egg-herbie
Rules
618×fma-def_binary64
463×unswap-sqr_binary64
390×*-commutative_binary64
365×sub-neg_binary64
346×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0851934
12711714
211091460
342091460
Stop Event
node limit
Counts
51 → 31

prune461.0ms (3.5%)

Pruning

40 alts after pruning (40 fresh and 0 done)

PrunedKeptTotal
New2008208
Fresh63238
Picked101
Done000
Total20740247
Error
30.4b
Counts
247 → 40
Alt Table
StatusErrorProgram
35.8b
(*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (-.f64 (*.f64 b b) (*.f64 a a))))
35.8b
(*.f64 angle (*.f64 (*.f64 1/90 (PI.f64)) (-.f64 (*.f64 b b) (*.f64 a a))))
35.8b
(*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64)))))
53.1b
(log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))
42.1b
(*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
33.8b
(*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a))))
46.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
40.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
35.8b
(*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
43.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2)))
42.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
33.5b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3)
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))))
36.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
42.2b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 a (neg.f64 a))))
33.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2))))
48.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
44.1b
(exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
47.7b
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a))))
53.0b
(log.f64 (pow.f64 (exp.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)))) (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
37.1b
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
43.6b
(*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
34.0b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1))
46.6b
(sqrt.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2))
45.6b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
49.2b
(pow.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3)
46.2b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
46.6b
(sqrt.f64 (pow.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2))
47.6b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
34.0b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a))))
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
36.6b
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))))
33.8b
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3))))
33.4b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2))))))
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))))
46.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2))))
Compiler

Compiled 9552 to 5508 computations (42.3% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.0b
(-.f64 (*.f64 a a) (*.f64 b b))
10.2b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
24.7b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
25.5b
(cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))

series94.0ms (0.7%)

Counts
2 → 48
Calls

12 calls:

20.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
a
inf
14.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
angle
0
11.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
b
inf
9.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
a
-inf
8.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
a
0

rewrite30.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
212×add-sqr-sqrt_binary64
204×log1p-expm1-u_binary64
204×expm1-log1p-u_binary64
202×add-cbrt-cube_binary64
200×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02347
149547
Stop Event
node limit
Counts
2 → 37

simplify61.0ms (0.5%)

Algorithm
egg-herbie
Rules
690×fma-def_binary64
446×*-commutative_binary64
414×cancel-sign-sub-inv_binary64
226×unswap-sqr_binary64
209×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01082108
13391888
213391630
349101630
Stop Event
node limit
Counts
85 → 62

prune508.0ms (3.8%)

Pruning

45 alts after pruning (44 fresh and 1 done)

PrunedKeptTotal
New20210212
Fresh53439
Picked011
Done000
Total20745252
Error
30.4b
Counts
252 → 45
Alt Table
StatusErrorProgram
35.8b
(*.f64 angle (*.f64 (*.f64 1/90 (PI.f64)) (-.f64 (*.f64 b b) (*.f64 a a))))
40.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (expm1.f64 (log1p.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) 3/2)) 3)))
35.8b
(*.f64 angle (-.f64 (*.f64 1/90 (*.f64 (PI.f64) (pow.f64 b 2))) (*.f64 1/90 (*.f64 (pow.f64 a 2) (PI.f64)))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 3)))
53.1b
(log.f64 (pow.f64 (exp.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a)))))
42.1b
(*.f64 -2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 a 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
46.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (exp.f64 (log.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
33.6b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 1) (-.f64 (*.f64 b b) (*.f64 a a))))
35.8b
(*.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
43.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (pow.f64 b 2)))
42.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (expm1.f64 (log1p.f64 (-.f64 (*.f64 b b) (*.f64 a a))))))
36.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 1/6) (*.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 1/6) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)))) 3)))
33.5b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))) 3)
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))))
33.4b
(*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
36.7b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (+.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
42.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (*.f64 a a)) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
33.9b
(*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
33.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (*.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 (cbrt.f64 (-.f64 (*.f64 b b) (*.f64 a a))) 2))))
48.5b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3))))
47.7b
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
44.1b
(exp.f64 (log.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
47.7b
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2)) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))
33.9b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (-.f64 (*.f64 b b) (*.f64 a a))))
53.0b
(log.f64 (pow.f64 (exp.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)))) (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))
37.1b
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (fma.f64 a a (*.f64 b (neg.f64 b)))) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))))))
43.6b
(*.f64 2 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (pow.f64 b 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
34.0b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) 1))
46.6b
(sqrt.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 2))
45.6b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 3)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
33.6b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 3)))
33.9b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) 2))))
49.2b
(pow.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (*.f64 (+.f64 a b) (*.f64 (-.f64 a b) -2)) (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))))) 3) 1/3)
46.2b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (exp.f64 (log.f64 (fma.f64 a a (*.f64 b (neg.f64 b)))))) (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))
47.6b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
34.0b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 1 (-.f64 (*.f64 b b) (*.f64 a a))))
46.5b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (sqrt.f64 (pow.f64 (-.f64 (*.f64 b b) (*.f64 a a)) 2))))
48.2b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (sqrt.f64 (pow.f64 (fma.f64 a a (*.f64 b (neg.f64 b))) 2))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
33.4b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 -2 (-.f64 (*.f64 a a) (*.f64 b b))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (*.f64 angle 1/180)))) 3)))
36.6b
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (*.f64 2 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (-.f64 (*.f64 b b) (*.f64 a a))))))
33.8b
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 3) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (-.f64 (*.f64 b b) (*.f64 a a))))
35.8b
(*.f64 1/90 (*.f64 (*.f64 (PI.f64) (-.f64 (*.f64 b b) (*.f64 a a))) angle))
33.4b
(*.f64 (*.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2) (*.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) (+.f64 (fma.f64 b b (neg.f64 (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 a) a)) (pow.f64 (cbrt.f64 a) 2) (*.f64 (*.f64 (cbrt.f64 a) a) (pow.f64 (cbrt.f64 a) 2))))))
Compiler

Compiled 9330 to 5490 computations (41.2% saved)

regimes2.5s (18.6%)

Accuracy

Total 2.9b remaining (9%)

Threshold costs 0b (0%)

Counts
188 → 1
Compiler

Compiled 67268 to 46620 computations (30.7% 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
01837
12537
23037
33237
43337
Stop Event
saturated

end713.0ms (5.4%)

Stop Event
fuel
Compiler

Compiled 1357 to 1017 computations (25.1% saved)

Profiling

Loading profile data...