Details

Time bar (total: 6.7s)

analyze123.0ms (1.8%)

Algorithm
search
Search
TrueOtherFalseIter
0%0.6%99.4%0
0%0.6%99.4%1
0%0.6%99.4%2
0.3%0.3%99.4%3
0.3%0.3%99.4%4
0.5%0.2%99.4%5
0.5%0.2%99.4%6
0.6%0.1%99.4%7
0.6%0.1%99.4%8
0.6%0%99.4%9
0.6%0%99.4%10
0.6%0%99.4%11
0.6%0%99.4%12
0.6%0%99.4%13
0.6%0%99.4%14
Compiler

Compiled 41 to 27 computations (34.1% saved)

sample1.8s (26.6%)

Results
1.7s8256×body128valid
Compiler

Compiled 108 to 70 computations (35.2% saved)

simplify25.0ms (0.4%)

Algorithm
egg-herbie
Rules
435×associate-*l*_binary32
360×distribute-rgt-in_binary32
359×distribute-lft-in_binary32
342×associate-*r*_binary32
242×associate-/r*_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01433
14531
216631
382331
4424031
Stop Event
node limit
Counts
1 → 2

prune4.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.5b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.5b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta))))
0.5b
(/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)))
Compiler

Compiled 145 to 87 computations (40% saved)

localize49.0ms (0.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta)
0.2b
(*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta)
0.3b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta))))
0.4b
(*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha)))

series105.0ms (1.6%)

Counts
4 → 84
Calls

4 calls:

58.0ms
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta))))
27.0ms
(*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha)))
10.0ms
(*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta)
9.0ms
(*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta)

rewrite73.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
266×log1p-udef_binary32
154×add-sqr-sqrt_binary32
146×log1p-expm1-u_binary32
146×expm1-log1p-u_binary32
144×add-cbrt-cube_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01462
131260
2461660
Stop Event
node limit
Counts
4 → 107
Calls

4 calls:

68.0ms
(*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta)
68.0ms
(*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta)
68.0ms
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (*.f32 (-.f32 (*.f32 alpha alpha) 1) cosTheta) cosTheta))))
68.0ms
(*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha)))

simplify62.0ms (0.9%)

Algorithm
egg-herbie
Rules
335×associate-/r*_binary32
303×cancel-sign-sub-inv_binary32
264×associate-*r*_binary32
258×fma-neg_binary32
223×sub-neg_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02643015
19612707
239952707
Stop Event
node limit
Counts
191 → 167

prune249.0ms (3.7%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New15710167
Fresh101
Picked101
Done000
Total15910169
Error
0.0b
Counts
169 → 10
Alt Table
StatusErrorProgram
0.5b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (PI.f32)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.7b
(pow.f32 (sqrt.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))) 2)
3.0b
(-.f32 (exp.f32 (log1p.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))) 1)
0.6b
(*.f32 (/.f32 (+.f32 alpha 1) (PI.f32)) (/.f32 (+.f32 alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.7b
(exp.f32 (log.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))))
0.9b
(fma.f32 2 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (*.f32 cosTheta cosTheta)) (-.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (PI.f32)) (*.f32 2 (log.f32 alpha))) (fma.f32 (*.f32 (/.f32 cosTheta 2) (/.f32 cosTheta (log.f32 alpha))) (/.f32 (pow.f32 alpha 4) (PI.f32)) (/.f32 cosTheta (/.f32 (*.f32 2 (*.f32 (PI.f32) (log.f32 alpha))) cosTheta)))))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))
0.8b
(-.f32 (fma.f32 3 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (pow.f32 cosTheta 4)) (fma.f32 2 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (*.f32 cosTheta cosTheta)) (fma.f32 (/.f32 (pow.f32 cosTheta 4) (*.f32 2 (log.f32 alpha))) (/.f32 (pow.f32 alpha 6) (PI.f32)) (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha))))))) (+.f32 (/.f32 (/.f32 1/2 (log.f32 alpha)) (PI.f32)) (+.f32 (fma.f32 (*.f32 (/.f32 cosTheta 2) (/.f32 cosTheta (log.f32 alpha))) (/.f32 (pow.f32 alpha 4) (PI.f32)) (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha)))) (fma.f32 3 (*.f32 (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha))) (pow.f32 alpha 4)) (/.f32 cosTheta (/.f32 (*.f32 2 (*.f32 (PI.f32) (log.f32 alpha))) cosTheta))))))
0.9b
(pow.f32 (cbrt.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))) 3)
Compiler

Compiled 6866 to 3908 computations (43.1% saved)

localize58.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta)
0.2b
(*.f32 (fma.f32 alpha alpha -1) cosTheta)
0.3b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
0.4b
(*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha)))

series81.0ms (1.2%)

Counts
3 → 72
Calls

3 calls:

62.0ms
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
11.0ms
(*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta)
8.0ms
(*.f32 (fma.f32 alpha alpha -1) cosTheta)

rewrite66.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
275×log1p-udef_binary32
160×add-sqr-sqrt_binary32
155×log1p-expm1-u_binary32
155×expm1-log1p-u_binary32
150×add-cbrt-cube_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01752
134250
2473550
Stop Event
node limit
Counts
3 → 88
Calls

3 calls:

64.0ms
(*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta)
64.0ms
(*.f32 (fma.f32 alpha alpha -1) cosTheta)
64.0ms
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))

simplify59.0ms (0.9%)

Algorithm
egg-herbie
Rules
335×associate-/r*_binary32
303×cancel-sign-sub-inv_binary32
259×associate-*r*_binary32
258×fma-neg_binary32
223×sub-neg_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02582875
19452567
239692567
Stop Event
node limit
Counts
160 → 142

prune236.0ms (3.5%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New1632165
Fresh279
Picked011
Done000
Total16510175
Error
0.0b
Counts
175 → 10
Alt Table
StatusErrorProgram
0.6b
(*.f32 (/.f32 (+.f32 alpha 1) (PI.f32)) (/.f32 (+.f32 alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.5b
(*.f32 (/.f32 1 (*.f32 (PI.f32) (*.f32 2 (log.f32 alpha)))) (/.f32 (fma.f32 alpha alpha -1) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1)))
0.5b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (PI.f32)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.5b
(*.f32 (/.f32 1 (PI.f32)) (/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))))
0.7b
(exp.f32 (log.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))
0.8b
(-.f32 (fma.f32 3 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (pow.f32 cosTheta 4)) (fma.f32 2 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (*.f32 cosTheta cosTheta)) (fma.f32 (/.f32 (pow.f32 cosTheta 4) (*.f32 2 (log.f32 alpha))) (/.f32 (pow.f32 alpha 6) (PI.f32)) (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha))))))) (+.f32 (/.f32 (/.f32 1/2 (log.f32 alpha)) (PI.f32)) (+.f32 (fma.f32 (*.f32 (/.f32 cosTheta 2) (/.f32 cosTheta (log.f32 alpha))) (/.f32 (pow.f32 alpha 4) (PI.f32)) (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha)))) (fma.f32 3 (*.f32 (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha))) (pow.f32 alpha 4)) (/.f32 cosTheta (/.f32 (*.f32 2 (*.f32 (PI.f32) (log.f32 alpha))) cosTheta))))))
3.0b
(-.f32 (exp.f32 (log1p.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))) 1)
0.9b
(pow.f32 (cbrt.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))) 3)
Compiler

Compiled 6798 to 4182 computations (38.5% saved)

localize52.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))
0.2b
(*.f32 (fma.f32 alpha alpha -1) cosTheta)
0.3b
(/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1)))
0.5b
(*.f32 (/.f32 1 (PI.f32)) (/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))))

series304.0ms (4.6%)

Counts
3 → 72
Calls

3 calls:

126.0ms
(*.f32 (/.f32 1 (PI.f32)) (/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))))
101.0ms
(/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1)))
76.0ms
(*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))

rewrite73.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
276×expm1-udef_binary32
276×log1p-udef_binary32
156×add-sqr-sqrt_binary32
144×add-log-exp_binary32
144×log1p-expm1-u_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01678
132578
2425178
Stop Event
node limit
Counts
3 → 120
Calls

3 calls:

67.0ms
(*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))
67.0ms
(/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1)))
67.0ms
(*.f32 (/.f32 1 (PI.f32)) (/.f32 (fma.f32 alpha alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))))

simplify114.0ms (1.7%)

Algorithm
egg-herbie
Rules
830×fma-def_binary32
552×associate-/l*_binary32
283×*-commutative_binary32
209×+-commutative_binary32
165×associate-/r*_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07649727
129669463
Stop Event
node limit
Counts
192 → 216

prune482.0ms (7.2%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New2422244
Fresh358
Picked101
Done011
Total2468254
Error
0b
Counts
254 → 8
Alt Table
StatusErrorProgram
0.5b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
0.4b
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))
0.6b
(*.f32 (/.f32 (+.f32 alpha 1) (PI.f32)) (/.f32 (+.f32 alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.7b
(exp.f32 (log.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32))))))
0.7b
(/.f32 (/.f32 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1)) (pow.f32 (cbrt.f32 (PI.f32)) 2)) (cbrt.f32 (PI.f32)))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))
0.8b
(-.f32 (fma.f32 3 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (pow.f32 cosTheta 4)) (fma.f32 2 (*.f32 (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha)))) (*.f32 cosTheta cosTheta)) (fma.f32 (/.f32 (pow.f32 cosTheta 4) (*.f32 2 (log.f32 alpha))) (/.f32 (pow.f32 alpha 6) (PI.f32)) (*.f32 (/.f32 alpha (PI.f32)) (/.f32 alpha (*.f32 2 (log.f32 alpha))))))) (+.f32 (/.f32 (/.f32 1/2 (log.f32 alpha)) (PI.f32)) (+.f32 (fma.f32 (*.f32 (/.f32 cosTheta 2) (/.f32 cosTheta (log.f32 alpha))) (/.f32 (pow.f32 alpha 4) (PI.f32)) (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha)))) (fma.f32 3 (*.f32 (/.f32 (/.f32 (pow.f32 cosTheta 4) (PI.f32)) (*.f32 2 (log.f32 alpha))) (pow.f32 alpha 4)) (/.f32 cosTheta (/.f32 (*.f32 2 (*.f32 (PI.f32) (log.f32 alpha))) cosTheta))))))
3.0b
(-.f32 (exp.f32 (log1p.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))) 1)
Compiler

Compiled 16164 to 11449 computations (29.2% saved)

localize65.0ms (1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))
0.2b
(*.f32 (fma.f32 alpha alpha -1) cosTheta)
0.3b
(/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))
0.4b
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))

series254.0ms (3.8%)

Counts
3 → 60
Calls

3 calls:

123.0ms
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))
113.0ms
(/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))
18.0ms
(/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))

rewrite48.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
174×add-sqr-sqrt_binary32
160×add-cbrt-cube_binary32
160×add-log-exp_binary32
159×add-exp-log_binary32
159×log1p-expm1-u_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01772
135268
Stop Event
node limit
Counts
3 → 134
Calls

3 calls:

43.0ms
(/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))
43.0ms
(/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))
43.0ms
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))

simplify103.0ms (1.6%)

Algorithm
egg-herbie
Rules
778×fma-def_binary32
555×associate-/l*_binary32
256×*-commutative_binary32
202×+-commutative_binary32
165×associate-/r*_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07339036
128288881
Stop Event
node limit
Counts
194 → 225

prune437.0ms (6.5%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New2503253
Fresh336
Picked011
Done011
Total2538261
Error
0b
Counts
261 → 8
Alt Table
StatusErrorProgram
0.6b
(*.f32 (/.f32 (+.f32 alpha 1) (PI.f32)) (/.f32 (+.f32 alpha -1) (*.f32 (*.f32 2 (log.f32 alpha)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1))))
0.5b
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (-.f32 (/.f32 (pow.f32 alpha 2) (log.f32 alpha)) (/.f32 1 (log.f32 alpha)))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))
0.5b
(/.f32 (-.f32 (*.f32 alpha alpha) 1) (*.f32 (*.f32 (PI.f32) (log.f32 (*.f32 alpha alpha))) (+.f32 1 (*.f32 (pow.f32 (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) cosTheta))))
0.4b
(/.f32 (*.f32 -1 (/.f32 (*.f32 1/2 (/.f32 (fma.f32 alpha alpha -1) (log.f32 alpha))) (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1))) (neg.f32 (PI.f32)))
0.7b
(exp.f32 (log.f32 (/.f32 (/.f32 1/2 (*.f32 (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) (/.f32 (log.f32 alpha) (fma.f32 alpha alpha -1)))) (PI.f32))))
0.7b
(*.f32 (/.f32 1 (pow.f32 (cbrt.f32 (PI.f32)) 2)) (/.f32 (/.f32 1/2 (*.f32 (fma.f32 cosTheta (*.f32 (fma.f32 alpha alpha -1) cosTheta) 1) (/.f32 (log.f32 alpha) (fma.f32 alpha alpha -1)))) (cbrt.f32 (PI.f32))))
0.6b
(*.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 alpha alpha -1) 2)) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (/.f32 (cbrt.f32 (fma.f32 alpha alpha -1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))
3.0b
(-.f32 (exp.f32 (log1p.f32 (/.f32 (/.f32 (fma.f32 alpha alpha -1) (fma.f32 (fma.f32 alpha alpha -1) (*.f32 cosTheta cosTheta) 1)) (log.f32 (pow.f32 (*.f32 alpha alpha) (PI.f32)))))) 1)
Compiler

Compiled 16712 to 11723 computations (29.9% saved)

regimes1.6s (24.1%)

Accuracy

Total 0.4b remaining (92.8%)

Threshold costs 0.4b (92.8%)

Counts
290 → 1
Compiler

Compiled 37037 to 25339 computations (31.6% saved)

simplify3.0ms (0%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
01735
13135
24335
35833
47333
58033
68433
78533
Stop Event
saturated

end159.0ms (2.4%)

Compiler

Compiled 272 to 193 computations (29% saved)

Profiling

Loading profile data...