Details

Time bar (total: 23.3s)

analyze295.0ms (1.3%)

Algorithm
search
Search
TrueOtherFalseIter
0%12.3%87.7%0
0%12.3%87.7%1
6.2%6.2%87.7%2
6.2%6.2%87.7%3
9.2%3.1%87.7%4
9.2%3.1%87.7%5
10.8%1.5%87.7%6
10.8%1.5%87.7%7
11.5%0.8%87.7%8
11.5%0.8%87.7%9
11.9%0.4%87.7%10
11.9%0.4%87.7%11
12.1%0.2%87.7%12
12.1%0.2%87.7%13
12.1%0.1%87.8%14
Compiler

Compiled 36 to 28 computations (22.2% saved)

sample106.0ms (0.5%)

Algorithm
intervals
Results
66.0ms256×body128valid
10.0ms256×pre128true
Compiler

Compiled 65 to 51 computations (21.5% saved)

simplify66.0ms (0.3%)

Algorithm
egg-herbie
Rules
940×fma-neg_binary32
929×fma-def_binary32
740×times-frac_binary32
329×div-sub_binary32
317×associate-*l*_binary32
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01940
14535
210735
326433
460533
5250033
6375433
7504933

prune10.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.4b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.7b
(/.f32 1 (+.f32 (+.f32 1 c) (*.f32 (*.f32 (/.f32 1 (sqrt.f32 PI.f32)) (/.f32 (sqrt.f32 (-.f32 (-.f32 1 cosTheta) cosTheta)) cosTheta)) (exp.f32 (*.f32 (neg.f32 cosTheta) cosTheta)))))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
Compiler

Compiled 148 to 113 computations (23.6% saved)

localize142.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f32 (fma.f32 cosTheta -2 1))
0.3b
(/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))
0.3b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))

rewrite155.0ms (0.7%)

Algorithm
rewrite-expression-head
Rules
36×add-cube-cbrt_binary32
22×add-exp-log_binary32
22×add-sqr-sqrt_binary32
22×add-cbrt-cube_binary32
17×pow1_binary32
Counts
4 → 168
Calls

4 calls:

34.0ms
(/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))
32.0ms
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
31.0ms
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
19.0ms
(sqrt.f32 (fma.f32 cosTheta -2 1))

series277.0ms (1.2%)

Counts
4 → 38
Calls

4 calls:

162.0ms
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
59.0ms
(/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))
42.0ms
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
12.0ms
(sqrt.f32 (fma.f32 cosTheta -2 1))

simplify352.0ms (1.5%)

Algorithm
egg-herbie
Rules
391×associate-*r*_binary32
337×associate-*l*_binary32
256×fma-def_binary32
202×*-commutative_binary32
193×associate-/r*_binary32
Counts
206 → 300
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03675757
110095133
242785100
349735100
449575100

prune691.0ms (3%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New29010300
Fresh101
Picked101
Done000
Total29210302
Error
0.0b
Counts
302 → 10
Alt Table
StatusErrorProgram
0.4b
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
0.9b
(*.f32 (*.f32 (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))) (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))))) (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))))
1.0b
(-.f32 (+.f32 (*.f32 6 (*.f32 (*.f32 c (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 7/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 4))) (+.f32 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 3)) (+.f32 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3))) (+.f32 (*.f32 5/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 3))) (+.f32 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 (*.f32 c (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 (sqrt.f32 PI.f32) cosTheta) (*.f32 3 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3))))))))))))) (+.f32 (*.f32 6 (*.f32 PI.f32 (pow.f32 cosTheta 4))) (+.f32 (*.f32 PI.f32 (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 PI.f32 (pow.f32 cosTheta 3))) (+.f32 (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)) (+.f32 (*.f32 3 (*.f32 c (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 (pow.f32 c 3) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (pow.f32 c 2) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 2))) (+.f32 (*.f32 2 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 3)))) (*.f32 6 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 4))))))))))))))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (*.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (/.f32 (sqrt.f32 PI.f32) (/.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))))
0.8b
(/.f32 1 (+.f32 (+.f32 1 c) (pow.f32 (sqrt.f32 (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) 2)))
0.9b
(/.f32 1 (+.f32 (+.f32 1 c) (pow.f32 (cbrt.f32 (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) 3)))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (*.f32 (*.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
0.9b
(pow.f32 (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))) 3)
13.9b
(/.f32 1 (+.f32 (+.f32 1 c) (sqrt.f32 (/.f32 (fma.f32 cosTheta -2 1) (*.f32 PI.f32 (pow.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) 2))))))
0.7b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (pow.f32 (sqrt.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2))))
Compiler

Compiled 8509 to 4828 computations (43.3% saved)

localize263.0ms (1.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1))))
0.1b
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))

rewrite117.0ms (0.5%)

Algorithm
rewrite-expression-head
Rules
20×add-cube-cbrt_binary32
16×add-exp-log_binary32
12×add-sqr-sqrt_binary32
12×add-cbrt-cube_binary32
10×associate-*l/_binary32
Counts
2 → 96
Calls

2 calls:

69.0ms
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
27.0ms
(/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1))))

series3.1s (13.2%)

Counts
2 → 36
Calls

2 calls:

2.5s
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
586.0ms
(/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1))))

simplify265.0ms (1.1%)

Algorithm
egg-herbie
Rules
835×associate-/l*_binary32
374×*-commutative_binary32
328×+-commutative_binary32
287×associate-+r+_binary32
247×fma-def_binary32
Counts
132 → 230
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0104518073
1358316449
2584316449

prune922.0ms (4%)

Pruning

8 alts after pruning (8 fresh and 0 done)

PrunedKeptTotal
New4364440
Fresh549
Picked101
Done000
Total4428450
Error
0b
Counts
450 → 8
Alt Table
StatusErrorProgram
0.6b
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (pow.f32 (sqrt.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (*.f32 (*.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
1.0b
(-.f32 (+.f32 (*.f32 6 (*.f32 (*.f32 c (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 7/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 4))) (+.f32 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 3)) (+.f32 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3))) (+.f32 (*.f32 5/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 3))) (+.f32 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 (*.f32 c (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 (sqrt.f32 PI.f32) cosTheta) (*.f32 3 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3))))))))))))) (+.f32 (*.f32 6 (*.f32 PI.f32 (pow.f32 cosTheta 4))) (+.f32 (*.f32 PI.f32 (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 PI.f32 (pow.f32 cosTheta 3))) (+.f32 (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)) (+.f32 (*.f32 3 (*.f32 c (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 (pow.f32 c 3) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (pow.f32 c 2) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 2))) (+.f32 (*.f32 2 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 3)))) (*.f32 6 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 4))))))))))))))
0.4b
(/.f32 (/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1))))) (+.f32 (*.f32 (*.f32 1 1) (*.f32 1 1)) (-.f32 (*.f32 (-.f32 (*.f32 c c) (*.f32 1 c)) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))))))
0.4b
(-.f32 (fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2)))))) (*.f32 (sqrt.f32 PI.f32) (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))))
0.9b
(pow.f32 (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))) 3)
13.9b
(/.f32 1 (+.f32 (+.f32 1 c) (sqrt.f32 (/.f32 (fma.f32 cosTheta -2 1) (*.f32 PI.f32 (pow.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) 2))))))
0.6b
(*.f32 (log.f32 (exp.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
Compiler

Compiled 30547 to 17776 computations (41.8% saved)

localize114.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
0.3b
(fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2))))))

rewrite14.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt_binary32
fma-udef_binary32
pow1_binary32
add-sqr-sqrt_binary32
add-cbrt-cube_binary32
Counts
1 → 33
Calls

1 calls:

9.0ms
(fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2))))))

series705.0ms (3%)

Counts
1 → 18
Calls

1 calls:

704.0ms
(fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2))))))

simplify133.0ms (0.6%)

Algorithm
egg-herbie
Rules
426×associate-*l/_binary32
244×cancel-sign-sub-inv_binary32
214×fma-def_binary32
162×associate-*r*_binary32
155×associate-/l*_binary32
Counts
51 → 84
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01674957
15184533
219474412
349864412

prune616.0ms (2.6%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New204402044
Fresh077
Picked011
Done000
Total204482052
Error
0b
Counts
2052 → 8
Alt Table
StatusErrorProgram
0.6b
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (pow.f32 (sqrt.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (*.f32 (*.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
1.0b
(-.f32 (+.f32 (*.f32 6 (*.f32 (*.f32 c (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 7/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 4))) (+.f32 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 3)) (+.f32 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3))) (+.f32 (*.f32 5/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 3))) (+.f32 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 (*.f32 c (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 (sqrt.f32 PI.f32) cosTheta) (*.f32 3 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3))))))))))))) (+.f32 (*.f32 6 (*.f32 PI.f32 (pow.f32 cosTheta 4))) (+.f32 (*.f32 PI.f32 (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 PI.f32 (pow.f32 cosTheta 3))) (+.f32 (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)) (+.f32 (*.f32 3 (*.f32 c (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 (pow.f32 c 3) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (pow.f32 c 2) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 2))) (+.f32 (*.f32 2 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 3)))) (*.f32 6 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 4))))))))))))))
0.4b
(/.f32 (/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1))))) (+.f32 (*.f32 (*.f32 1 1) (*.f32 1 1)) (-.f32 (*.f32 (-.f32 (*.f32 c c) (*.f32 1 c)) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))))))
0.4b
(-.f32 (fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2)))))) (*.f32 (sqrt.f32 PI.f32) (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))))
0.9b
(pow.f32 (cbrt.f32 (/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))) 3)
13.9b
(/.f32 1 (+.f32 (+.f32 1 c) (sqrt.f32 (/.f32 (fma.f32 cosTheta -2 1) (*.f32 PI.f32 (pow.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) 2))))))
0.6b
(*.f32 (log.f32 (exp.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
Compiler

Compiled 19930 to 7919 computations (60.3% saved)

localize193.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(pow.f32 (-.f32 (*.f32 c c) c) 3)
0.1b
(/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1)))))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))
0.3b
(*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))

rewrite49.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
17×add-cube-cbrt_binary32
13×add-exp-log_binary32
11×add-cbrt-cube_binary32
add-sqr-sqrt_binary32
pow-to-exp_binary32
Counts
2 → 94
Calls

2 calls:

22.0ms
(/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1)))))
18.0ms
(pow.f32 (-.f32 (*.f32 c c) c) 3)

series4.1s (17.8%)

Counts
2 → 30
Calls

2 calls:

4.1s
(/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1)))))
3.0ms
(pow.f32 (-.f32 (*.f32 c c) c) 3)

simplify301.0ms (1.3%)

Algorithm
egg-herbie
Rules
840×associate-/l*_binary32
369×*-commutative_binary32
279×+-commutative_binary32
251×associate-+r+_binary32
245×fma-def_binary32
Counts
124 → 182
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
098013915
1338013272
2569313272

prune958.0ms (4.1%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New690116902
Fresh156
Picked011
Done011
Total690286910
Error
0b
Counts
6910 → 8
Alt Table
StatusErrorProgram
0.6b
(*.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (pow.f32 (sqrt.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)))
0.5b
(/.f32 1 (+.f32 (+.f32 1 c) (/.f32 (*.f32 (*.f32 (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (cbrt.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))))
0.5b
(/.f32 (pow.f32 (/.f32 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1)))) (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3)))) -1) (+.f32 (*.f32 (*.f32 1 1) (*.f32 1 1)) (-.f32 (*.f32 (-.f32 (*.f32 c c) (*.f32 1 c)) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))))))
1.0b
(-.f32 (+.f32 (*.f32 6 (*.f32 (*.f32 c (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 7/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 4))) (+.f32 (*.f32 (sqrt.f32 (pow.f32 PI.f32 3)) (pow.f32 cosTheta 3)) (+.f32 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3))) (+.f32 (*.f32 5/2 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 3))) (+.f32 (*.f32 (sqrt.f32 PI.f32) (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 (*.f32 c (pow.f32 cosTheta 3)) (sqrt.f32 (pow.f32 PI.f32 3)))) (+.f32 (*.f32 (sqrt.f32 PI.f32) cosTheta) (*.f32 3 (*.f32 (*.f32 (pow.f32 c 2) (pow.f32 cosTheta 4)) (sqrt.f32 (pow.f32 PI.f32 3))))))))))))) (+.f32 (*.f32 6 (*.f32 PI.f32 (pow.f32 cosTheta 4))) (+.f32 (*.f32 PI.f32 (pow.f32 cosTheta 2)) (+.f32 (*.f32 2 (*.f32 PI.f32 (pow.f32 cosTheta 3))) (+.f32 (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)) (+.f32 (*.f32 3 (*.f32 c (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 (pow.f32 c 3) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4))) (+.f32 (*.f32 3 (*.f32 (pow.f32 c 2) (*.f32 (pow.f32 PI.f32 2) (pow.f32 cosTheta 4)))) (+.f32 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 2))) (+.f32 (*.f32 2 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 3)))) (*.f32 6 (*.f32 c (*.f32 PI.f32 (pow.f32 cosTheta 4))))))))))))))
0.4b
(/.f32 (/.f32 (*.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 (-.f32 (*.f32 c c) c) 3))) (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (fma.f32 c (+.f32 c -1) 1) (sqrt.f32 (fma.f32 cosTheta -2 1))))) (+.f32 (*.f32 (*.f32 1 1) (*.f32 1 1)) (-.f32 (*.f32 (-.f32 (*.f32 c c) (*.f32 1 c)) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))))))
0.4b
(-.f32 (fma.f32 (/.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))))) (sqrt.f32 PI.f32) (*.f32 (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (pow.f32 (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))) 2)) (sqrt.f32 (*.f32 PI.f32 (-.f32 1 (*.f32 cosTheta 2)))))) (*.f32 (sqrt.f32 PI.f32) (/.f32 (*.f32 c (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 (sqrt.f32 (-.f32 1 (*.f32 cosTheta 2))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))))
13.9b
(/.f32 1 (+.f32 (+.f32 1 c) (sqrt.f32 (/.f32 (fma.f32 cosTheta -2 1) (*.f32 PI.f32 (pow.f32 (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)) 2))))))
0.6b
(*.f32 (log.f32 (exp.f32 (/.f32 1 (fma.f32 (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta))) (+.f32 1 (pow.f32 c 3)) (*.f32 (sqrt.f32 (fma.f32 cosTheta -2 1)) (fma.f32 c (+.f32 c -1) 1)))))) (*.f32 (+.f32 (*.f32 1 1) (-.f32 (*.f32 c c) (*.f32 1 c))) (*.f32 (sqrt.f32 PI.f32) (*.f32 cosTheta (pow.f32 (exp.f32 cosTheta) cosTheta)))))
Compiler

Compiled 30929 to 18054 computations (41.6% saved)

regimes5.1s (22.1%)

Accuracy

Total 0.4b remaining (92.7%)

Threshold costs 0.4b (92.7%)

Compiler

Compiled 119936 to 79024 computations (34.1% saved)

simplify10.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary32
+-commutative_binary32
distribute-rgt-neg-in_binary32
cancel-sign-sub-inv_binary32
sub-neg_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02973
14573
24973
35073
45173
54873

end2.0ms (0%)

Compiler

Compiled 49 to 30 computations (38.8% saved)

sample4.2s (17.9%)

Algorithm
intervals
Results
2.0s8000×body128valid
327.0ms8000×pre128true
Compiler

Compiled 726 to 484 computations (33.3% saved)

Profiling

Loading profile data...