Details

Time bar (total: 13.1s)

analyze631.0ms (4.8%)

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

Compiled 51 to 37 computations (27.5% saved)

sample2.6s (20.1%)

Results
2.5s8256×body128valid
Compiler

Compiled 130 to 94 computations (27.7% saved)

simplify49.0ms (0.4%)

Algorithm
egg-herbie
Rules
743×sub-neg_binary32
674×fma-neg_binary32
386×associate--l-_binary32
316×distribute-rgt-in_binary32
286×unsub-neg_binary32
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01739
14135
211735
343133
4175533
5413533
6496633

prune5.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
12.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
13.0b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
13.1b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
Compiler

Compiled 156 to 110 computations (29.5% saved)

localize54.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.3b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))
13.6b
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)

series306.0ms (2.3%)

Counts
4 → 80
Calls

4 calls:

284.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
15.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)
4.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite76.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
316×expm1-udef_binary32
315×log1p-udef_binary32
177×add-sqr-sqrt_binary32
166×log1p-expm1-u_binary32
166×expm1-log1p-u_binary32
Counts
4 → 76
Calls

4 calls:

74.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
74.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
74.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
73.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01770
135370
2424670
3510670
000
100

simplify125.0ms (1%)

Algorithm
egg-herbie
Rules
491×fma-neg_binary32
355×fma-def_binary32
341×sub-neg_binary32
288×associate-*r*_binary32
275×associate-*l*_binary32
Counts
156 → 148
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02926087
110115248
241495248
349895248

prune235.0ms (1.8%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New13810148
Fresh011
Picked101
Done000
Total13911150
Error
0.3b
Counts
150 → 11
Alt Table
StatusErrorProgram
13.5b
(sqrt.f32 (*.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1) (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 2)))
1.1b
(fma.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (-.f32 (*.f32 maxCos (*.f32 ux ux)) (*.f32 maxCos ux))))
13.0b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (pow.f32 (cbrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)) 3)))
1.1b
(-.f32 (+.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))))) (*.f32 (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux))))
13.7b
(*.f32 (exp.f32 (log.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
13.1b
(pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))) 3)
0.5b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
1.9b
(-.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5))))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (*.f32 8/315 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7))))))
2.5b
(fma.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) -4/3))
13.1b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
8.0b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
Compiler

Compiled 9286 to 6119 computations (34.1% saved)

localize72.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)))
0.2b
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.3b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))

series302.0ms (2.3%)

Counts
2 → 56
Calls

2 calls:

289.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
13.0ms
(+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)))

rewrite69.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
765×prod-diff_binary32
217×add-sqr-sqrt_binary32
205×log1p-expm1-u_binary32
205×expm1-log1p-u_binary32
201×add-log-exp_binary32
Counts
2 → 54
Calls

2 calls:

67.0ms
(+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)))
67.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02163
144063
2479763
3607163
000
100

simplify142.0ms (1.1%)

Algorithm
egg-herbie
Rules
510×fma-neg_binary32
320×fma-def_binary32
311×sub-neg_binary32
298×associate-*r*_binary32
243×associate-*l*_binary32
Counts
110 → 117
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02785502
19364762
239474762
349994762
450624762

prune396.0ms (3%)

Pruning

15 alts after pruning (15 fresh and 0 done)

PrunedKeptTotal
New14613159
Fresh8210
Picked101
Done000
Total15515170
Error
0.1b
Counts
170 → 15
Alt Table
StatusErrorProgram
0.9b
(*.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
0.5b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
0.5b
(*.f32 (sin.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
3.2b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (log.f32 (exp.f32 (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))))
1.1b
(fma.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (-.f32 (*.f32 maxCos (*.f32 ux ux)) (*.f32 maxCos ux))))
1.8b
(*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 2) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
2.5b
(fma.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) -4/3))
2.6b
(*.f32 (exp.f32 (log.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
3.0b
(exp.f32 (log.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))))
0.7b
(*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 2)) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
1.8b
(pow.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 2)
0.9b
(*.f32 (*.f32 (pow.f32 (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 2) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
0.9b
(pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 3)
3.5b
(pow.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))))) 3) 1/3)
0.5b
(*.f32 (log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
Compiler

Compiled 10833 to 6552 computations (39.5% saved)

localize82.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))
0.4b
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)
0.7b
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)

series1.7s (12.7%)

Counts
3 → 68
Calls

3 calls:

1.5s
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2))
181.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)
15.0ms
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)

rewrite71.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
319×prod-diff_binary32
226×add-sqr-sqrt_binary32
216×log1p-expm1-u_binary32
216×expm1-log1p-u_binary32
211×add-cbrt-cube_binary32
Counts
3 → 45
Calls

3 calls:

69.0ms
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2))
69.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)
69.0ms
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02396
147596
2474996
3527796
000
100

simplify310.0ms (2.4%)

Algorithm
egg-herbie
Rules
463×*-commutative_binary32
403×times-frac_binary32
290×+-commutative_binary32
274×fma-def_binary32
236×associate-+r+_binary32
Counts
113 → 150
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0104519397
1367118917
2521418917

prune691.0ms (5.3%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New1579166
Fresh6814
Picked101
Done000
Total16417181
Error
0.0b
Counts
181 → 17
Alt Table
StatusErrorProgram
0.5b
(*.f32 (sin.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
1.1b
(fma.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (-.f32 (*.f32 maxCos (*.f32 ux ux)) (*.f32 maxCos ux))))
27.7b
(cbrt.f32 (log.f32 (pow.f32 (exp.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2))))
5.8b
(cbrt.f32 (*.f32 8 (*.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (sqrt.f32 (pow.f32 (-.f32 (*.f32 2 (+.f32 (*.f32 (*.f32 ux ux) maxCos) ux)) (+.f32 (*.f32 ux ux) (fma.f32 (*.f32 maxCos maxCos) (*.f32 ux ux) (*.f32 2 (*.f32 ux maxCos))))) 3)))))
4.4b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (+.f32 (fma.f32 3 (/.f32 (*.f32 maxCos (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos))) (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (*.f32 -3/2 (+.f32 (/.f32 (*.f32 (*.f32 maxCos maxCos) (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos))) (/.f32 (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (-.f32 2 (*.f32 2 maxCos))))))))
2.5b
(fma.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) -4/3))
0.5b
(*.f32 (log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
0.9b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
2.6b
(*.f32 (exp.f32 (log.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
3.0b
(exp.f32 (log.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))))
22.1b
(cbrt.f32 (*.f32 (log.f32 (exp.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
2.5b
(cbrt.f32 (*.f32 (-.f32 (fma.f32 8 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (*.f32 208/15 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7)))) (fma.f32 1312/189 (*.f32 (pow.f32 uy 9) (pow.f32 (PI.f32) 9)) (*.f32 16 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.8b
(cbrt.f32 (*.f32 (*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 3) (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 3)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.6b
(cbrt.f32 (*.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2) (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.6b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (exp.f32 (log.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.8b
(pow.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 2)
0.9b
(pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 3)
Compiler

Compiled 29200 to 20845 computations (28.6% saved)

localize82.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))))
0.2b
(expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))
0.3b
(*.f32 (log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))

series357.0ms (2.7%)

Counts
3 → 56
Calls

3 calls:

347.0ms
(*.f32 (log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
6.0ms
(expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))
4.0ms
(log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))))

rewrite74.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
398×prod-diff_binary32
225×add-sqr-sqrt_binary32
215×expm1-log1p-u_binary32
214×log1p-expm1-u_binary32
208×add-log-exp_binary32
Counts
3 → 46
Calls

3 calls:

73.0ms
(log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))))
73.0ms
(expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))
73.0ms
(*.f32 (log1p.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02367
145967
2485367
3538667
000
100

simplify139.0ms (1.1%)

Algorithm
egg-herbie
Rules
507×fma-neg_binary32
364×fma-def_binary32
338×sub-neg_binary32
325×associate-*r*_binary32
266×associate-*l*_binary32
Counts
102 → 113
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
03005468
110194758
242384758
351294758

prune274.0ms (2.1%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New1272129
Fresh11516
Picked101
Done000
Total12917146
Error
0.0b
Counts
146 → 17
Alt Table
StatusErrorProgram
0.5b
(*.f32 (sin.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
1.1b
(fma.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (-.f32 (*.f32 maxCos (*.f32 ux ux)) (*.f32 maxCos ux))))
27.7b
(cbrt.f32 (log.f32 (pow.f32 (exp.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2))))
5.8b
(cbrt.f32 (*.f32 8 (*.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (sqrt.f32 (pow.f32 (-.f32 (*.f32 2 (+.f32 (*.f32 (*.f32 ux ux) maxCos) ux)) (+.f32 (*.f32 ux ux) (fma.f32 (*.f32 maxCos maxCos) (*.f32 ux ux) (*.f32 2 (*.f32 ux maxCos))))) 3)))))
4.4b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (+.f32 (fma.f32 3 (/.f32 (*.f32 maxCos (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos))) (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (*.f32 -3/2 (+.f32 (/.f32 (*.f32 (*.f32 maxCos maxCos) (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos))) (/.f32 (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (-.f32 2 (*.f32 2 maxCos))))))))
2.5b
(fma.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))) (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) -4/3))
0.9b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
0.5b
(*.f32 (log1p.f32 (log1p.f32 (expm1.f32 (expm1.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
22.1b
(cbrt.f32 (*.f32 (log.f32 (exp.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
2.5b
(cbrt.f32 (*.f32 (-.f32 (fma.f32 8 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (*.f32 208/15 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7)))) (fma.f32 1312/189 (*.f32 (pow.f32 uy 9) (pow.f32 (PI.f32) 9)) (*.f32 16 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.8b
(cbrt.f32 (*.f32 (*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 3) (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) 3)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.6b
(cbrt.f32 (*.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2) (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2)) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.6b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (exp.f32 (log.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1)))) 3/2)))
1.8b
(pow.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 2)
0.9b
(pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))) 3)
3.2b
(*.f32 (log1p.f32 (+.f32 (*.f32 2 (-.f32 (fma.f32 (PI.f32) uy (*.f32 (*.f32 uy uy) (pow.f32 (PI.f32) 2))) (*.f32 (pow.f32 uy 4) (pow.f32 (PI.f32) 4)))) (*.f32 -32/15 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 2 (*.f32 maxCos ux)) (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux))))))
3.0b
(exp.f32 (log.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 2 (*.f32 maxCos ux) (*.f32 (*.f32 ux ux) (fma.f32 maxCos maxCos 1))))))))
Compiler

Compiled 9416 to 5839 computations (38% saved)

regimes3.8s (29.1%)

Accuracy

Total 0.5b remaining (82.8%)

Threshold costs 0.5b (82.8%)

Counts
203 → 1
Compiler

Compiled 101719 to 71753 computations (29.5% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02555
13755
24555
36655
48555
59755
610455
710655
810455

end439.0ms (3.4%)

Compiler

Compiled 892 to 616 computations (30.9% saved)

Profiling

Loading profile data...