Details

Time bar (total: 19.4s)

analyze2.1s (10.6%)

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
25%62.4%12.6%8
31.2%56.2%12.6%9
34.3%53%12.6%10
42.9%44.5%12.6%11
46.8%40.6%12.6%12
47.8%39.6%12.6%13
52.6%34.8%12.6%14
Compiler

Compiled 25 to 20 computations (20% saved)

sample7.9s (40.4%)

Results
2.3s1683×body1024valid
2.0s1423×body1024invalid
1.2s5158×body128valid
711.0ms796×body512valid
704.0ms761×body512invalid
384.0ms184×body2048valid
227.0ms435×body256valid
182.0ms327×body256invalid
156.0ms666×body128invalid
Compiler

Compiled 74 to 59 computations (20.3% saved)

simplify39.0ms (0.2%)

Algorithm
egg-herbie
Rules
648×rules-4_binary64
514×rules-33_binary64
297×rules-1_binary64
286×rules-23-rev_binary64
244×fma-def_binary64
Counts
1 → 1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01634
12634
25334
314134
463434
5427234
6502034

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
21.1b
Counts
2 → 1
Alt Table
StatusErrorProgram
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
Compiler

Compiled 72 to 57 computations (20.8% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)
0.3b
(*.f64 (PI.f64) (/.f64 angle 180))
25.8b
(cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series33.0ms (0.2%)

Counts
4 → 60
Calls

4 calls:

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

rewrite86.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
615×prod-diff_binary64
210×expm1-udef_binary64
210×log1p-udef_binary64
188×egg-rr
119×add-sqr-sqrt_binary64
Counts
4 → 188
Calls

4 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01244
128144
2329344
3505944
000
100

simplify63.0ms (0.3%)

Algorithm
egg-herbie
Rules
490×rules-11_binary64
474×fma-neg_binary64
352×rules-6_binary64
331×rules-20_binary64
287×fma-def_binary64
Counts
248 → 214
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0831058
12451058
210431046
349261040
449511040

prune847.0ms (4.4%)

Pruning

32 alts after pruning (32 fresh and 0 done)

PrunedKeptTotal
New25432286
Fresh000
Picked101
Done000
Total25532287
Error
19.3b
Counts
287 → 32
Alt Table
StatusErrorProgram
40.6b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (*.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (/.f64 angle 180)) (*.f64 (PI.f64) (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
36.5b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (-.f64 (+.f64 (*.f64 1/765275040000000 (*.f64 (pow.f64 angle 6) (*.f64 (pow.f64 (PI.f64) 6) (pow.f64 b 2)))) (*.f64 1/32400 (*.f64 (pow.f64 angle 2) (*.f64 (pow.f64 (PI.f64) 2) (pow.f64 b 2))))) (+.f64 (*.f64 1/3149280000 (*.f64 (pow.f64 angle 4) (*.f64 (pow.f64 (PI.f64) 4) (pow.f64 b 2)))) (*.f64 1/347128758144000000000 (*.f64 (pow.f64 angle 8) (*.f64 (pow.f64 (PI.f64) 8) (pow.f64 b 2)))))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
25.9b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (*.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) (*.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) 2))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2))
21.4b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
28.0b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))
21.4b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
22.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (*.f64 b (*.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))))
21.5b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
24.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) b)))
44.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 2))
36.7b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) 2))
26.9b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 2))) 1))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
44.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 angle) (/.f64 (sqrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
34.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
28.6b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) 2) (cbrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 4))))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (/.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3) (+.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (+.f64 0 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (sqrt.f64 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
Compiler

Compiled 11670 to 8679 computations (25.6% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
0.3b
(pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2)
0.3b
(*.f64 (PI.f64) (/.f64 angle 180))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series13.0ms (0.1%)

Counts
1 → 24
Calls

1 calls:

13.0ms
(*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))

rewrite57.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
871×expm1-log1p-u_binary64
570×prod-diff_binary64
92×add-sqr-sqrt_binary64
85×log1p-expm1-u_binary64
84×add-cbrt-cube_binary64
Counts
1 → 63
Calls

1 calls:

55.0ms
(*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0913
120813
2259213
3523013
000
100

simplify44.0ms (0.2%)

Algorithm
egg-herbie
Rules
721×rules-13_binary64
489×rules-4_binary64
376×rules-15-rev_binary64
216×rules-11_binary64
196×rules-6_binary64
Counts
87 → 72
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
038412
1116412
2444406
33265406
46008406

prune824.0ms (4.2%)

Pruning

32 alts after pruning (32 fresh and 0 done)

PrunedKeptTotal
New23116247
Fresh151631
Picked101
Done000
Total24732279
Error
19.3b
Counts
279 → 32
Alt Table
StatusErrorProgram
40.6b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2))
26.7b
(+.f64 (pow.f64 (*.f64 a 1) 2) (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 2))) 1))
21.2b
(+.f64 (pow.f64 (*.f64 a (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
26.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (cbrt.f64 (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 2))
22.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 b (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (/.f64 angle 180)) (*.f64 (PI.f64) (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
25.6b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) 2))
21.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) 2) (*.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a (/.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3) (+.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (+.f64 0 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
36.4b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 1))) 2))
36.5b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (-.f64 (+.f64 (*.f64 1/765275040000000 (*.f64 (pow.f64 angle 6) (*.f64 (pow.f64 (PI.f64) 6) (pow.f64 b 2)))) (*.f64 1/32400 (*.f64 (pow.f64 angle 2) (*.f64 (pow.f64 (PI.f64) 2) (pow.f64 b 2))))) (+.f64 (*.f64 1/3149280000 (*.f64 (pow.f64 angle 4) (*.f64 (pow.f64 (PI.f64) 4) (pow.f64 b 2)))) (*.f64 1/347128758144000000000 (*.f64 (pow.f64 angle 8) (*.f64 (pow.f64 (PI.f64) 8) (pow.f64 b 2)))))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
28.4b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 4)) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)) 2)))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
20.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3) 2))
27.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))
21.2b
(+.f64 (pow.f64 (*.f64 a (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
44.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 angle) (/.f64 (sqrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
43.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 2))
34.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
24.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 b (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (sqrt.f64 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
Compiler

Compiled 9380 to 7140 computations (23.9% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))
0.3b
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)
0.3b
(*.f64 (PI.f64) (/.f64 angle 180))
25.9b
(sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))

series51.0ms (0.3%)

Counts
2 → 48
Calls

2 calls:

37.0ms
(/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))
14.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)

rewrite77.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
850×fma-neg_binary64
591×prod-diff_binary64
190×expm1-udef_binary64
190×log1p-udef_binary64
140×egg-rr
Counts
2 → 140
Calls

2 calls:

73.0ms
(/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))
73.0ms
(*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01129
124929
2301629
3539929
000
100

simplify38.0ms (0.2%)

Algorithm
egg-herbie
Rules
664×rules-4_binary64
444×fma-def_binary64
288×rules-6_binary64
280×rules-13_binary64
273×rules-20_binary64
Counts
188 → 156
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
060860
1197860
2842854
35271854

prune1.9s (9.5%)

Pruning

35 alts after pruning (35 fresh and 0 done)

PrunedKeptTotal
New47910489
Fresh62531
Picked101
Done000
Total48635521
Error
18.7b
Counts
521 → 35
Alt Table
StatusErrorProgram
21.4b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (sqrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
26.7b
(+.f64 (pow.f64 (*.f64 a 1) 2) (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 2))) 1))
40.6b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
34.5b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (log.f64 (exp.f64 (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))))
26.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (cbrt.f64 (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 3)) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (/.f64 angle 180)) (*.f64 (PI.f64) (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0)) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
25.6b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (/.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3) (+.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (+.f64 0 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
26.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
25.5b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 1/180 (*.f64 angle (*.f64 (PI.f64) b))) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
44.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 angle) (/.f64 (sqrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
43.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 2))
22.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (fma.f64 1/1080 (/.f64 (*.f64 angle (PI.f64)) b) (fma.f64 7/2099520000 (/.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) b) (/.f64 180 (*.f64 angle (*.f64 (PI.f64) b)))))))
34.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
22.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
24.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) (*.f64 b (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
22.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (sqrt.f64 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
Compiler

Compiled 20329 to 15006 computations (26.2% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(/.f64 (*.f64 (PI.f64) angle) 180)
0.3b
(*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
0.3b
(pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2)
25.9b
(sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))

series43.0ms (0.2%)

Counts
4 → 72
Calls

4 calls:

22.0ms
(pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2)
16.0ms
(*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
3.0ms
(sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))
3.0ms
(/.f64 (*.f64 (PI.f64) angle) 180)

rewrite94.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
830×fma-neg_binary64
377×prod-diff_binary64
262×egg-rr
190×expm1-udef_binary64
190×log1p-udef_binary64
Counts
4 → 262
Calls

4 calls:

88.0ms
(/.f64 (*.f64 (PI.f64) angle) 180)
88.0ms
(*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)))
88.0ms
(pow.f64 (*.f64 b (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))) 2)
88.0ms
(sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01147
125747
2297147
3492647
000
100

simplify49.0ms (0.3%)

Algorithm
egg-herbie
Rules
586×rules-11_binary64
531×fma-neg_binary64
481×rules-6_binary64
395×rules-20_binary64
368×fma-def_binary64
Counts
334 → 287
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0851296
12691296
211681275
353601275

prune1.0s (5.2%)

Pruning

37 alts after pruning (37 fresh and 0 done)

PrunedKeptTotal
New2816287
Fresh33134
Picked101
Done000
Total28537322
Error
18.7b
Counts
322 → 37
Alt Table
StatusErrorProgram
21.4b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (sqrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
26.7b
(+.f64 (pow.f64 (*.f64 a 1) 2) (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) 2))) 1))
40.6b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
26.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)) b) 3)) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (/.f64 angle 180)) (*.f64 (PI.f64) (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0)) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
26.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (expm1.f64 (log1p.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
25.6b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (expm1.f64 (log1p.f64 (*.f64 (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)) b))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))))) 3) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (*.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) (pow.f64 (cbrt.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
25.5b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 1/180 (*.f64 angle (*.f64 (PI.f64) b))) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.3b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (fma.f64 (cbrt.f64 b) (*.f64 (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)) (pow.f64 (cbrt.f64 b) 2)) 0) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2))
44.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 angle) (/.f64 (sqrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 angle) 2) (/.f64 (cbrt.f64 angle) (/.f64 180 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b) (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 (PI.f64) angle)) 2) (/.f64 (cbrt.f64 (*.f64 (PI.f64) angle)) 180)))) 2))
21.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (sqrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (sqrt.f64 (PI.f64))) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
25.6b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (expm1.f64 (log1p.f64 (/.f64 (*.f64 (PI.f64) angle) 180))))) 2))
43.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (pow.f64 (*.f64 b (sin.f64 (pow.f64 (sqrt.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2))) 2))
22.1b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (fma.f64 1/1080 (/.f64 (*.f64 angle (PI.f64)) b) (fma.f64 7/2099520000 (/.f64 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3)) b) (/.f64 180 (*.f64 angle (*.f64 (PI.f64) b)))))))
34.1b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (pow.f64 (pow.f64 (*.f64 (PI.f64) (/.f64 angle 180)) 3) 1/3))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
22.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (/.f64 angle 180)) 2) (*.f64 (cbrt.f64 (/.f64 angle 180)) (PI.f64)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
24.2b
(+.f64 (pow.f64 (*.f64 a 1) 2) (*.f64 (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)) (*.f64 (*.f64 (sin.f64 (/.f64 (*.f64 (PI.f64) angle) 180)) b) b)))
34.5b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (log.f64 (exp.f64 (/.f64 1 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b))))))
21.2b
(+.f64 (pow.f64 (*.f64 a (/.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 3) (+.f64 (pow.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 2) (+.f64 0 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle 180))) 0))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.2b
(+.f64 (pow.f64 (*.f64 a (cos.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64)))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180)))) 2))
21.9b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (cbrt.f64 (PI.f64)) (*.f64 (/.f64 angle 180) (pow.f64 (cbrt.f64 (PI.f64)) 2)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
22.0b
(+.f64 (pow.f64 (*.f64 a 1) 2) (/.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle 180))) b) (/.f64 1 (*.f64 (sin.f64 (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (PI.f64)) 2) (*.f64 (cbrt.f64 (PI.f64)) (/.f64 angle 180)) (neg.f64 (*.f64 0 (PI.f64)))) (fma.f64 0 (PI.f64) (*.f64 0 (PI.f64))))) b))))
Compiler

Compiled 9564 to 6676 computations (30.2% saved)

regimes3.5s (18.1%)

Accuracy

Total 1.7b remaining (8.3%)

Threshold costs 0b (0%)

Counts
377 → 1
Compiler

Compiled 81564 to 65161 computations (20.1% saved)

simplify1.0ms (0%)

Algorithm
egg-herbie
Rules
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01726
11826
21726

end733.0ms (3.8%)

Compiler

Compiled 1300 to 1023 computations (21.3% saved)

Profiling

Loading profile data...