Details

Time bar (total: 9.9s)

analyze2.1s (20.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%3%97%0
0%3%97%1
0%3%97%2
0%3%97%3
0%3%97%4
0%3%97%5
0%1.5%98.5%6
0%1.5%98.5%7
0%1.5%98.5%8
0%1.5%98.5%9
0%1.5%98.5%10
0.6%0.9%98.5%11
0.6%0.9%98.5%12
0.6%0.9%98.5%13
0.6%0.9%98.5%14
Compiler

Compiled 69 to 51 computations (26.1% saved)

sample2.7s (27.4%)

Symmetry

(sort cosTheta_i cosTheta_O)

(sort sinTheta_i sinTheta_O)

Results
2.6s8256×body128valid
36.0ms134×body128invalid
Compiler

Compiled 168 to 124 computations (26.2% saved)

simplify54.0ms (0.5%)

Algorithm
egg-herbie
Rules
788×fma-neg_binary32
718×fma-def_binary32
560×exp-diff_binary32
512×exp-sum_binary32
448×sub-neg_binary32
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02235
15333
214531
353229
4211929
5443129
6497529

prune5.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.0b
(*.f32 (/.f32 1/2 v) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.0b
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v)))))
Compiler

Compiled 160 to 112 computations (30% saved)

localize67.0ms (0.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v))))
0.1b
(-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v))
7.4b
(/.f32 (*.f32 sinTheta_i sinTheta_O) v)
7.9b
(/.f32 (*.f32 cosTheta_i cosTheta_O) v)

series300.0ms (3%)

Counts
4 → 84
Calls

4 calls:

233.0ms
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v))))
37.0ms
(-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v))
16.0ms
(/.f32 (*.f32 cosTheta_i cosTheta_O) v)
13.0ms
(/.f32 (*.f32 sinTheta_i sinTheta_O) v)

rewrite57.0ms (0.6%)

Algorithm
rewrite-expression-head
Rules
95×*-un-lft-identity_binary32
57×times-frac_binary32
49×prod-diff_binary32
45×add-sqr-sqrt_binary32
43×add-cube-cbrt_binary32
Counts
4 → 174
Calls

4 calls:

25.0ms
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v))))
8.0ms
(-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v))
3.0ms
(/.f32 (*.f32 cosTheta_i cosTheta_O) v)
3.0ms
(/.f32 (*.f32 sinTheta_i sinTheta_O) v)

simplify162.0ms (1.6%)

Algorithm
egg-herbie
Rules
963×times-frac_binary32
573×fma-neg_binary32
137×associate-*l*_binary32
117×associate-/l*_binary32
112×associate-*l/_binary32
Counts
258 → 228
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03056557
17295637
226215212
349505212
451675212

prune240.0ms (2.4%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New2280228
Fresh011
Picked011
Done000
Total2282230
Error
0.0b
Counts
230 → 2
Alt Table
StatusErrorProgram
0.0b
(*.f32 (/.f32 1/2 v) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.0b
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v)))))
Compiler

Compiled 8632 to 3823 computations (55.7% saved)

localize52.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))
0.0b
(*.f32 (/.f32 1/2 v) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.1b
(-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))
0.1b
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)

series245.0ms (2.5%)

Counts
4 → 180
Calls

4 calls:

135.0ms
(*.f32 (/.f32 1/2 v) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
51.0ms
(exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))
48.0ms
(-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))
10.0ms
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)

rewrite35.0ms (0.4%)

Algorithm
rewrite-expression-head
Rules
44×add-sqr-sqrt_binary32
39×*-un-lft-identity_binary32
35×add-cube-cbrt_binary32
28×exp-sum_binary32
27×prod-diff_binary32
Counts
4 → 123
Calls

4 calls:

16.0ms
(*.f32 (/.f32 1/2 v) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
4.0ms
(exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))
3.0ms
(-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))
0.0ms
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)

simplify169.0ms (1.7%)

Algorithm
egg-herbie
Rules
392×times-frac_binary32
288×associate-/l*_binary32
278×associate-*r*_binary32
275×associate-+r+_binary32
243×fma-def_binary32
Counts
303 → 233
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
044110899
1120310395
2515610395

prune368.0ms (3.7%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New2312233
Fresh000
Picked101
Done011
Total2323235
Error
0.0b
Counts
235 → 3
Alt Table
StatusErrorProgram
0.0b
(*.f32 (/.f32 1/2 v) (pow.f32 (E.f32) (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.0b
(*.f32 (/.f32 1 (*.f32 (cbrt.f32 v) (cbrt.f32 v))) (*.f32 (/.f32 1/2 (cbrt.f32 v)) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))))
0.0b
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v)))))
Compiler

Compiled 10839 to 6250 computations (42.3% saved)

localize98.0ms (1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)
0.3b
(/.f32 1 (*.f32 (cbrt.f32 v) (cbrt.f32 v)))
0.3b
(/.f32 1/2 (cbrt.f32 v))
0.5b
(*.f32 (cbrt.f32 v) (cbrt.f32 v))

series168.0ms (1.7%)

Counts
3 → 36
Calls

3 calls:

67.0ms
(/.f32 1 (*.f32 (cbrt.f32 v) (cbrt.f32 v)))
56.0ms
(/.f32 1/2 (cbrt.f32 v))
45.0ms
(*.f32 (cbrt.f32 v) (cbrt.f32 v))

rewrite19.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
36×add-sqr-sqrt_binary32
28×cbrt-prod_binary32
28×*-un-lft-identity_binary32
28×add-cube-cbrt_binary32
21×times-frac_binary32
Counts
3 → 120
Calls

3 calls:

6.0ms
(/.f32 1 (*.f32 (cbrt.f32 v) (cbrt.f32 v)))
5.0ms
(*.f32 (cbrt.f32 v) (cbrt.f32 v))
3.0ms
(/.f32 1/2 (cbrt.f32 v))

simplify117.0ms (1.2%)

Algorithm
egg-herbie
Rules
694×fma-def_binary32
592×fma-neg_binary32
292×times-frac_binary32
285×*-commutative_binary32
215×log-prod_binary32
Counts
156 → 165
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01451721
12441535
25621475
316891461
425361313
540931313
649951313
748361313

prune251.0ms (2.5%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1801181
Fresh011
Picked101
Done011
Total1813184
Error
0.0b
Counts
184 → 3
Alt Table
StatusErrorProgram
0.0b
(*.f32 (/.f32 1 (*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))))) (*.f32 (/.f32 1/2 (cbrt.f32 v)) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))))
0.0b
(*.f32 (/.f32 1/2 v) (pow.f32 (E.f32) (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.0b
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v)))))
Compiler

Compiled 6205 to 3045 computations (50.9% saved)

localize81.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f32 1 (*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))))
0.3b
(/.f32 1/2 (cbrt.f32 v))
0.5b
(*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))
0.5b
(*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))))

series137.0ms (1.4%)

Counts
3 → 36
Calls

3 calls:

67.0ms
(/.f32 1 (*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))))
39.0ms
(*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))))
31.0ms
(*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))

rewrite137.0ms (1.4%)

Algorithm
rewrite-expression-head
Rules
465×pow1_binary32
326×sqrt-pow1_binary32
312×pow-prod-up_binary32
232×pow1/2_binary32
150×pow-sqr_binary32
Counts
3 → 379
Calls

3 calls:

32.0ms
(/.f32 1 (*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))))
25.0ms
(*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))))
10.0ms
(*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v)))

simplify155.0ms (1.6%)

Algorithm
egg-herbie
Rules
687×fma-neg_binary32
558×times-frac_binary32
462×log-div_binary32
350×unswap-sqr_binary32
344×log-prod_binary32
Counts
415 → 375
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01672411
12661877
27941697
320351586
438501586
548711586
649771586

prune944.0ms (9.5%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New5220522
Fresh011
Picked011
Done011
Total5223525
Error
0.0b
Counts
525 → 3
Alt Table
StatusErrorProgram
0.0b
(*.f32 (/.f32 1 (*.f32 (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))) (*.f32 (sqrt.f32 (cbrt.f32 v)) (sqrt.f32 (cbrt.f32 v))))) (*.f32 (/.f32 1/2 (cbrt.f32 v)) (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))))
0.0b
(*.f32 (/.f32 1/2 v) (pow.f32 (E.f32) (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
0.0b
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 1 v)) 6931/10000) (log.f32 (/.f32 1 (*.f32 2 v)))))
Compiler

Compiled 21149 to 9496 computations (55.1% saved)

regimes1.2s (11.6%)

Accuracy

Total 0.1b remaining (58%)

Threshold costs 0.1b (58%)

Counts
105 → 1
Compiler

Compiled 29317 to 20969 computations (28.5% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Rules
+-commutative_binary32
*-commutative_binary32
sub-neg_binary32
neg-sub0_binary32
neg-mul-1_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02032
12832
23232
33432
43532
53432

end101.0ms (1%)

Remove

(sort sinTheta_i sinTheta_O)

(sort cosTheta_i cosTheta_O)

Compiler

Compiled 256 to 184 computations (28.1% saved)

Profiling

Loading profile data...