Details

Time bar (total: 12.1s)

analyze2.1s (17%)

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)

sample3.1s (25.3%)

Symmetry

(sort cosTheta_i cosTheta_O)

(sort sinTheta_i sinTheta_O)

Results
3.0s8256×body128valid
40.0ms140×body128invalid
Compiler

Compiled 168 to 124 computations (26.2% saved)

simplify49.0ms (0.4%)

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.1b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.1b
(*.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
(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)

localize50.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
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
(-.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)
0.1b
(exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))

series288.0ms (2.4%)

Counts
4 → 180
Calls

4 calls:

145.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)))))
81.0ms
(-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))
53.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))))
9.0ms
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)

rewrite102.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
561×prod-diff_binary32
190×add-sqr-sqrt_binary32
177×log1p-expm1-u_binary32
177×expm1-log1p-u_binary32
176×add-log-exp_binary32
Counts
4 → 134
Calls

4 calls:

98.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)))))
98.0ms
(-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))
98.0ms
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)
98.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))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01881
138281
2475381
3577781
000
100

simplify144.0ms (1.2%)

Algorithm
egg-herbie
Rules
389×times-frac_binary32
263×associate-/l*_binary32
261×associate-+r+_binary32
247×cancel-sign-sub-inv_binary32
224×fma-def_binary32
Counts
314 → 202
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02767456
19117024
241306570
350106570

prune322.0ms (2.7%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New1975202
Fresh101
Picked101
Done000
Total1995204
Error
0.1b
Counts
204 → 5
Alt Table
StatusErrorProgram
0.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (cbrt.f32 (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))
0.4b
(pow.f32 (pow.f32 (*.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) (/.f32 1/2 v)) 3) 1/3)
0.1b
(*.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.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (sqrt.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))) 2))
0.1b
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))
Compiler

Compiled 8406 to 5048 computations (39.9% saved)

localize57.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(-.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)
0.1b
(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.4b
(sqrt.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))

series91.0ms (0.7%)

Counts
1 → 24
Calls

1 calls:

91.0ms
(sqrt.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))

rewrite66.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
552×prod-diff_binary32
166×add-sqr-sqrt_binary32
155×log1p-expm1-u_binary32
155×expm1-log1p-u_binary32
154×add-log-exp_binary32
Counts
1 → 24
Calls

1 calls:

65.0ms
(sqrt.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01625
133325
2410925
3515425
000
100

simplify66.0ms (0.5%)

Algorithm
egg-herbie
Rules
890×associate-/r*_binary32
355×associate-/r/_binary32
251×cancel-sign-sub-inv_binary32
218×fma-def_binary32
174×times-frac_binary32
Counts
48 → 47
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01692608
15912198
225761914
360361914

prune340.0ms (2.8%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New1881189
Fresh044
Picked101
Done000
Total1895194
Error
0.1b
Counts
194 → 5
Alt Table
StatusErrorProgram
0.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (cbrt.f32 (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))
0.4b
(pow.f32 (pow.f32 (*.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) (/.f32 1/2 v)) 3) 1/3)
0.1b
(*.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.1b
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))
0.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4) 2) 2))
Compiler

Compiled 8858 to 5491 computations (38% saved)

localize69.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(-.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)
0.1b
(exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))
1.0b
(pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4)

series1.5s (12.4%)

Counts
1 → 60
Calls

1 calls:

1.5s
(pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4)

rewrite61.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
552×prod-diff_binary32
178×add-sqr-sqrt_binary32
169×log1p-expm1-u_binary32
169×expm1-log1p-u_binary32
166×add-log-exp_binary32
Counts
1 → 17
Calls

1 calls:

60.0ms
(pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01726
136226
2435526
3534126
000
100

simplify98.0ms (0.8%)

Algorithm
egg-herbie
Rules
660×fma-def_binary32
421×associate-/r/_binary32
254×times-frac_binary32
179×associate-*r*_binary32
163×fma-neg_binary32
Counts
77 → 42
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01703402
15703302
226303228
349673228
450733228

prune407.0ms (3.4%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New1813184
Fresh134
Picked011
Done000
Total1827189
Error
0.0b
Counts
189 → 7
Alt Table
StatusErrorProgram
0.4b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (pow.f32 (pow.f32 (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) 1/3) 1/4) 2) 2))
0.1b
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))
0.1b
(*.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.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (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)))) 1/4) 2) 2))
0.2b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (pow.f32 (exp.f32 (pow.f32 (cbrt.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 2)) (cbrt.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))) 1/4) 2) 2))
0.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4) 2) 2))
0.4b
(pow.f32 (pow.f32 (*.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) (/.f32 1/2 v)) 3) 1/3)
Compiler

Compiled 9224 to 5970 computations (35.3% saved)

localize53.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(-.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 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v)))
0.1b
(fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000)
0.1b
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))

series268.0ms (2.2%)

Counts
2 → 120
Calls

2 calls:

209.0ms
(+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v)))
59.0ms
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))

rewrite82.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
527×prod-diff_binary32
204×add-sqr-sqrt_binary32
192×log1p-expm1-u_binary32
192×expm1-log1p-u_binary32
190×add-log-exp_binary32
Counts
2 → 63
Calls

2 calls:

79.0ms
(+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v)))
79.0ms
(exp.f32 (+.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))) (log.f32 (/.f32 1/2 v))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01958
140958
2491058
3588158
000
100

simplify141.0ms (1.2%)

Algorithm
egg-herbie
Rules
468×times-frac_binary32
311×associate-*r*_binary32
267×associate-/l*_binary32
253×associate-+r+_binary32
240×associate-/r*_binary32
Counts
183 → 115
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02856298
19485872
245185432
350015432

prune457.0ms (3.8%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New2051206
Fresh055
Picked101
Done011
Total2067213
Error
0.0b
Counts
213 → 7
Alt Table
StatusErrorProgram
0.1b
(*.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.1b
(exp.f32 (fma.f32 (pow.f32 (cbrt.f32 (log.f32 (/.f32 1/2 v))) 2) (cbrt.f32 (log.f32 (/.f32 1/2 v))) (-.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 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (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)))) 1/4) 2) 2))
0.4b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (pow.f32 (pow.f32 (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) 1/3) 1/4) 2) 2))
0.2b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (pow.f32 (exp.f32 (pow.f32 (cbrt.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 2)) (cbrt.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v))))) 1/4) 2) 2))
0.1b
(*.f32 (/.f32 1/2 v) (pow.f32 (pow.f32 (pow.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) 1/4) 2) 2))
0.4b
(pow.f32 (pow.f32 (*.f32 (exp.f32 (-.f32 (fma.f32 cosTheta_O (/.f32 cosTheta_i v) 6931/10000) (fma.f32 sinTheta_i (/.f32 sinTheta_O v) (/.f32 1 v)))) (/.f32 1/2 v)) 3) 1/3)
Compiler

Compiled 8974 to 5524 computations (38.4% saved)

regimes1.9s (15.9%)

Accuracy

Total 0.0b remaining (34%)

Threshold costs 0.0b (34%)

Counts
199 → 1
Compiler

Compiled 48207 to 34882 computations (27.6% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Rules
+-commutative_binary32
*-commutative_binary32
sub-neg_binary32
distribute-neg-frac_binary32
neg-sub0_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02033
12733
23333
33533
43633
53433

end340.0ms (2.8%)

Remove

(sort sinTheta_i sinTheta_O)

(sort cosTheta_i cosTheta_O)

Compiler

Compiled 400 to 304 computations (24% saved)

Profiling

Loading profile data...