Details

Time bar (total: 5.4s)

analyze107.0ms (2%)

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

Compiled 26 to 19 computations (26.9% saved)

sample1.7s (32.2%)

Results
1.5s8256×body128valid
Compiler

Compiled 63 to 46 computations (27% saved)

simplify36.0ms (0.7%)

Algorithm
egg-herbie
Rules
566×fma-def_binary32
230×fma-neg_binary32
88×cancel-sign-sub-inv_binary32
79×distribute-rgt-in_binary32
67×distribute-lft-in_binary32
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0914
12213
24313
37713
49313
513113
617013
721713
834013
947113
1048113
1155713
1256913
1367613
1469913
1570013
1664513

prune4.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.3b
Counts
3 → 2
Alt Table
StatusErrorProgram
14.9b
(*.f32 (*.f32 (neg.f32 alpha) alpha) (log.f32 (-.f32 1 u0)))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
Compiler

Compiled 61 to 42 computations (31.1% saved)

localize20.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(log1p.f32 (neg.f32 u0))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))

series233.0ms (4.3%)

Counts
2 → 36
Calls

2 calls:

230.0ms
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
3.0ms
(log1p.f32 (neg.f32 u0))

rewrite46.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
522×expm1-log1p-u_binary32
521×log1p-expm1-u_binary32
447×unpow-prod-down_binary32
318×log-prod_binary32
153×pow2_binary32
Counts
2 → 48
Calls

2 calls:

45.0ms
(log1p.f32 (neg.f32 u0))
45.0ms
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
116312
2140312
3526512
000
100

simplify69.0ms (1.3%)

Algorithm
egg-herbie
Rules
960×fma-neg_binary32
468×fma-def_binary32
439×cancel-sign-sub-inv_binary32
366×times-frac_binary32
263×sub-neg_binary32
Counts
84 → 98
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
094752
1284698
2892650
32908644
44824644
55251644

prune52.0ms (1%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New90898
Fresh101
Picked011
Done000
Total919100
Error
0.1b
Counts
100 → 9
Alt Table
StatusErrorProgram
2.1b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (neg.f32 (+.f32 u0 (+.f32 (*.f32 1/3 (pow.f32 u0 3)) (*.f32 1/2 (pow.f32 u0 2))))))
3.4b
(*.f32 alpha (*.f32 alpha (fma.f32 1/2 (*.f32 u0 u0) u0)))
8.5b
(pow.f32 (cbrt.f32 (*.f32 (*.f32 alpha alpha) (log1p.f32 u0))) 3)
7.7b
(*.f32 u0 (pow.f32 alpha 2))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
1.6b
(*.f32 (*.f32 alpha alpha) (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))))
1.6b
(+.f32 (*.f32 1/3 (*.f32 (pow.f32 u0 3) (pow.f32 alpha 2))) (+.f32 (*.f32 1/2 (*.f32 (pow.f32 u0 2) (pow.f32 alpha 2))) (+.f32 (*.f32 1/4 (*.f32 (pow.f32 u0 4) (pow.f32 alpha 2))) (*.f32 u0 (pow.f32 alpha 2)))))
3.8b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (-.f32 (log.f32 (-.f32 1 (*.f32 u0 u0))) (log1p.f32 u0)))
2.1b
(*.f32 (*.f32 alpha alpha) (fma.f32 1/3 (pow.f32 u0 3) (fma.f32 1/2 (*.f32 u0 u0) u0)))
Compiler

Compiled 1756 to 994 computations (43.4% saved)

localize45.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))
0.3b
(*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3)))
0.3b
(*.f32 (*.f32 alpha alpha) (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))))
0.3b
(*.f32 u0 1/3)

series47.0ms (0.9%)

Counts
4 → 60
Calls

4 calls:

38.0ms
(*.f32 (*.f32 alpha alpha) (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))))
4.0ms
(fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))
3.0ms
(*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3)))
1.0ms
(*.f32 u0 1/3)

rewrite80.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
292×expm1-udef_binary32
292×log1p-udef_binary32
168×add-sqr-sqrt_binary32
168×log1p-expm1-u_binary32
168×expm1-log1p-u_binary32
Counts
4 → 89
Calls

4 calls:

77.0ms
(fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))
77.0ms
(*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3)))
77.0ms
(*.f32 (*.f32 alpha alpha) (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (+.f32 1/2 (*.f32 u0 1/3))))))
77.0ms
(*.f32 u0 1/3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01666
135960
2420760
3489560
000
100

simplify225.0ms (4.2%)

Algorithm
egg-herbie
Rules
770×*-commutative_binary32
694×unswap-sqr_binary32
675×sqr-pow_binary32
582×distribute-rgt-out_binary32
363×associate-+l+_binary32
Counts
149 → 115
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0381050
11021018
2296964
3981937
41616937
52325937
63052937
73020937
83123937
93236937
103378937
113226937
123404937
133710937
144008937
154420937
164896937
174892937

prune177.0ms (3.3%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New1114115
Fresh437
Picked101
Done011
Total1168124
Error
0.0b
Counts
124 → 8
Alt Table
StatusErrorProgram
3.4b
(*.f32 alpha (*.f32 alpha (fma.f32 1/2 (*.f32 u0 u0) u0)))
1.6b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
1.8b
(/.f32 (*.f32 (-.f32 (*.f32 u0 u0) (pow.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) 2)) (*.f32 alpha alpha)) (-.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))))
1.8b
(/.f32 (*.f32 (+.f32 (pow.f32 u0 3) (pow.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) 3)) (*.f32 alpha alpha)) (fma.f32 u0 u0 (*.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) (-.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) u0))))
3.8b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (-.f32 (log.f32 (-.f32 1 (*.f32 u0 u0))) (log1p.f32 u0)))
3.6b
(/.f32 (+.f32 (pow.f32 (*.f32 u0 (*.f32 alpha alpha)) 3) (pow.f32 (*.f32 (*.f32 alpha alpha) (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 3)) (+.f32 (*.f32 (*.f32 u0 (*.f32 alpha alpha)) (*.f32 u0 (*.f32 alpha alpha))) (-.f32 (*.f32 (*.f32 (*.f32 alpha alpha) (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) (*.f32 (*.f32 alpha alpha) (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))))) (*.f32 (*.f32 u0 (*.f32 alpha alpha)) (*.f32 (*.f32 alpha alpha) (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))))))))
2.1b
(*.f32 (*.f32 alpha alpha) (fma.f32 1/3 (pow.f32 u0 3) (fma.f32 1/2 (*.f32 u0 u0) u0)))
Compiler

Compiled 3396 to 2044 computations (39.8% saved)

localize49.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)))
0.3b
(*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))
0.3b
(*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2))
0.4b
(pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)

series114.0ms (2.1%)

Counts
4 → 72
Calls

4 calls:

67.0ms
(*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2))
39.0ms
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)))
4.0ms
(pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)
3.0ms
(*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))

rewrite76.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
759×prod-diff_binary32
170×log1p-expm1-u_binary32
170×expm1-log1p-u_binary32
168×add-sqr-sqrt_binary32
164×add-log-exp_binary32
Counts
4 → 88
Calls

4 calls:

74.0ms
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)))
74.0ms
(*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))
74.0ms
(*.f32 (pow.f32 alpha 4) (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2))
74.0ms
(pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 2)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01897
137992
2390692
3522992
000
100

simplify82.0ms (1.5%)

Algorithm
egg-herbie
Rules
828×fma-def_binary32
600×distribute-rgt-out_binary32
570×associate-*l*_binary32
437×associate-*r*_binary32
303×associate-+l+_binary32
Counts
160 → 141
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0901765
12491677
27941568
333271566
449651566
549551566

prune188.0ms (3.5%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New1383141
Fresh426
Picked101
Done011
Total1436149
Error
0.0b
Counts
149 → 6
Alt Table
StatusErrorProgram
1.7b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (*.f32 (pow.f32 (cbrt.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))))) 2) (cbrt.f32 (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 4)))))
1.6b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
1.8b
(/.f32 (*.f32 (+.f32 (pow.f32 u0 3) (pow.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) 3)) (*.f32 alpha alpha)) (fma.f32 u0 u0 (*.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) (-.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) u0))))
3.8b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (-.f32 (log.f32 (-.f32 1 (*.f32 u0 u0))) (log1p.f32 u0)))
1.6b
(sqrt.f32 (+.f32 (*.f32 (pow.f32 u0 3) (pow.f32 alpha 4)) (+.f32 (*.f32 (pow.f32 u0 2) (pow.f32 alpha 4)) (+.f32 (*.f32 5/6 (*.f32 (pow.f32 u0 5) (pow.f32 alpha 4))) (*.f32 11/12 (*.f32 (pow.f32 u0 4) (pow.f32 alpha 4)))))))
Compiler

Compiled 4271 to 2945 computations (31% saved)

localize51.0ms (1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))
0.1b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))))
0.1b
(fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))
0.3b
(*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))))

series131.0ms (2.4%)

Counts
4 → 64
Calls

4 calls:

75.0ms
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))))
48.0ms
(*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))))
5.0ms
(fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))
3.0ms
(fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))

rewrite71.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
300×prod-diff_binary32
278×expm1-udef_binary32
278×log1p-udef_binary32
162×add-sqr-sqrt_binary32
162×log1p-expm1-u_binary32
Counts
4 → 91
Calls

4 calls:

68.0ms
(fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))
68.0ms
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))))
68.0ms
(fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))
68.0ms
(*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01795
136195
2357895
3477495
000
100

simplify148.0ms (2.8%)

Algorithm
egg-herbie
Rules
679×distribute-rgt-out_binary32
484×fma-def_binary32
463×distribute-lft-out_binary32
456×unswap-sqr_binary32
381×associate-+l+_binary32
Counts
155 → 131
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0551488
11521432
24731320
317781320
441921319
547071319
648341319
749831319
849981319
949271319

prune161.0ms (3%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1310131
Fresh044
Picked011
Done011
Total1316137
Error
0.0b
Counts
137 → 6
Alt Table
StatusErrorProgram
1.7b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (*.f32 (pow.f32 (cbrt.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))))) 2) (cbrt.f32 (pow.f32 (+.f32 u0 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2)))) 4)))))
1.6b
(sqrt.f32 (*.f32 (pow.f32 alpha 4) (fma.f32 5/6 (pow.f32 u0 5) (fma.f32 11/12 (pow.f32 u0 4) (fma.f32 u0 u0 (pow.f32 u0 3))))))
0.3b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (log1p.f32 (neg.f32 u0)))
1.8b
(/.f32 (*.f32 (+.f32 (pow.f32 u0 3) (pow.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) 3)) (*.f32 alpha alpha)) (fma.f32 u0 u0 (*.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) (-.f32 (fma.f32 1/4 (pow.f32 u0 4) (*.f32 (*.f32 u0 u0) (fma.f32 u0 1/3 1/2))) u0))))
3.8b
(*.f32 (*.f32 alpha (neg.f32 alpha)) (-.f32 (log.f32 (-.f32 1 (*.f32 u0 u0))) (log1p.f32 u0)))
1.6b
(sqrt.f32 (+.f32 (*.f32 (pow.f32 u0 3) (pow.f32 alpha 4)) (+.f32 (*.f32 (pow.f32 u0 2) (pow.f32 alpha 4)) (+.f32 (*.f32 5/6 (*.f32 (pow.f32 u0 5) (pow.f32 alpha 4))) (*.f32 11/12 (*.f32 (pow.f32 u0 4) (pow.f32 alpha 4)))))))
Compiler

Compiled 3380 to 2500 computations (26% saved)

regimes1.3s (24.4%)

Accuracy

Total 0.3b remaining (78.9%)

Threshold costs 0.3b (78.9%)

Counts
189 → 1
Compiler

Compiled 28310 to 20456 computations (27.7% saved)

simplify3.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11813
22813
33613
44113
54413
64513
74513

end117.0ms (2.2%)

Compiler

Compiled 209 to 149 computations (28.7% saved)

Profiling

Loading profile data...