Details

Time bar (total: 9.2s)

analyze24.0ms (0.3%)

Algorithm
search
Search
TrueOtherFalseIter
0%0%100%0
0%0%100%1
Compiler

Compiled 118 to 85 computations (28% saved)

sample4.2s (45.8%)

Results
4.1s8256×body128valid
Compiler

Compiled 307 to 220 computations (28.3% saved)

simplify38.0ms (0.4%)

Algorithm
egg-herbie
Rules
362×distribute-rgt-in_binary32
340×fma-def_binary32
335×distribute-lft-in_binary32
255×distribute-neg-in_binary32
228×distribute-rgt-neg-out_binary32
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02799
16797
221470
383966
4290366
5499866
Stop Event
node limit
Counts
1 → 2

prune7.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.4b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
0.4b
(+.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) xi) (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
Compiler

Compiled 354 to 245 computations (30.8% saved)

localize103.0ms (1.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f32 (-.f32 1 ux) (*.f32 maxCos zi))
0.2b
(*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi)
0.3b
(sin.f32 (*.f32 uy (*.f32 2 (PI.f32))))
0.3b
(*.f32 uy (*.f32 2 (PI.f32)))

series32.0ms (0.3%)

Counts
4 → 68
Calls

4 calls:

15.0ms
(*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi)
10.0ms
(*.f32 (-.f32 1 ux) (*.f32 maxCos zi))
3.0ms
(*.f32 uy (*.f32 2 (PI.f32)))
3.0ms
(sin.f32 (*.f32 uy (*.f32 2 (PI.f32))))

rewrite55.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
616×prod-diff_binary32
161×add-sqr-sqrt_binary32
149×log1p-expm1-u_binary32
149×expm1-log1p-u_binary32
148×add-cbrt-cube_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01641
132341
2389941
Stop Event
node limit
Counts
4 → 69
Calls

4 calls:

54.0ms
(*.f32 (-.f32 1 ux) (*.f32 maxCos zi))
54.0ms
(*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi)
54.0ms
(sin.f32 (*.f32 uy (*.f32 2 (PI.f32))))
54.0ms
(*.f32 uy (*.f32 2 (PI.f32)))

simplify41.0ms (0.4%)

Algorithm
egg-herbie
Rules
954×fma-neg_binary32
628×distribute-rgt-neg-in_binary32
506×associate-*l*_binary32
416×associate-*r*_binary32
229×fma-def_binary32
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
077902
1223894
2690880
33132878
Stop Event
node limit
Counts
137 → 97

prune396.0ms (4.3%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New9915114
Fresh011
Picked101
Done000
Total10016116
Error
0.1b
Counts
116 → 16
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (log.f32 (exp.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))))) yi))))
0.4b
(+.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) xi) (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) yi))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (log1p.f32 (expm1.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi))))))
1.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (fma.f32 yi (fma.f32 2 (*.f32 uy (PI.f32)) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)))) (*.f32 yi (fma.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) -4/3) (*.f32 (pow.f32 uy 7) (*.f32 (pow.f32 (PI.f32) 7) -8/315))))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3)))) yi))))
1.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (-.f32 (+.f32 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 yi (pow.f32 (PI.f32) 5))))) (+.f32 (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) yi))) (*.f32 8/315 (*.f32 (pow.f32 uy 7) (*.f32 yi (pow.f32 (PI.f32) 7)))))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
12.3b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi) 3) 1/3))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 2) (PI.f32)) uy))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (PI.f32) (*.f32 uy 2))) 3)) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (-.f32 (exp.f32 (log1p.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))))) 1) yi))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi)) 3))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (PI.f32) (*.f32 uy 2))) 2)) yi))))
Compiler

Compiled 7254 to 4353 computations (40% saved)

localize119.0ms (1.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))
0.3b
(sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))))
0.3b
(*.f32 uy (*.f32 2 (PI.f32)))
1.0b
(pow.f32 (*.f32 2 (PI.f32)) 3)

series16.0ms (0.2%)

Counts
3 → 24
Calls

3 calls:

12.0ms
(*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))
4.0ms
(sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))))
0.0ms
(pow.f32 (*.f32 2 (PI.f32)) 3)

rewrite49.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
873×log1p-expm1-u_binary32
873×expm1-log1p-u_binary32
256×prod-diff_binary32
102×add-sqr-sqrt_binary32
97×add-cbrt-cube_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01129
122729
2250929
Stop Event
node limit
Counts
3 → 61
Calls

3 calls:

48.0ms
(*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))
48.0ms
(sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3))))
48.0ms
(pow.f32 (*.f32 2 (PI.f32)) 3)

simplify47.0ms (0.5%)

Algorithm
egg-herbie
Rules
662×fma-def_binary32
548×cancel-sign-sub-inv_binary32
402×unswap-sqr_binary32
401×*-commutative_binary32
368×fma-neg_binary32
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
041386
1113382
2374380
31583380
44559380
Stop Event
node limit
Counts
85 → 75

prune414.0ms (4.5%)

Pruning

15 alts after pruning (14 fresh and 1 done)

PrunedKeptTotal
New89392
Fresh41115
Picked011
Done000
Total9315108
Error
0.1b
Counts
108 → 15
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (log.f32 (exp.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))))) yi))))
0.4b
(+.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) xi) (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) yi))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (log1p.f32 (expm1.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3)))) yi))))
1.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (-.f32 (+.f32 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 yi (pow.f32 (PI.f32) 5))))) (+.f32 (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) yi))) (*.f32 8/315 (*.f32 (pow.f32 uy 7) (*.f32 yi (pow.f32 (PI.f32) 7)))))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
12.3b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi) 3) 1/3))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 2) (PI.f32)) uy))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
0.7b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (exp.f32 (*.f32 3 (log.f32 (*.f32 2 (PI.f32)))))))) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 2 (PI.f32)) uy))) 2) yi))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi)) 3))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (expm1.f32 (log1p.f32 (*.f32 8 (pow.f32 (PI.f32) 3))))))) yi))))
Compiler

Compiled 6267 to 3910 computations (37.6% saved)

localize98.0ms (1.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 maxCos (*.f32 ux maxCos))
0.2b
(*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi)
0.3b
(sin.f32 (*.f32 uy (*.f32 2 (PI.f32))))
0.3b
(*.f32 uy (*.f32 2 (PI.f32)))

series9.0ms (0.1%)

Counts
1 → 24
Calls

1 calls:

9.0ms
(*.f32 maxCos (*.f32 ux maxCos))

rewrite29.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
428×log1p-expm1-u_binary32
428×expm1-log1p-u_binary32
357×unpow-prod-down_binary32
266×log-prod_binary32
174×pow-prod-down_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
1997
211927
Stop Event
node limit
Counts
1 → 17
Calls

1 calls:

28.0ms
(*.f32 maxCos (*.f32 ux maxCos))

simplify60.0ms (0.6%)

Algorithm
egg-herbie
Rules
605×sqr-pow_binary32
448×associate-*l*_binary32
434×unswap-sqr_binary32
281×cube-prod_binary32
277×fabs-mul_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5314168
61257168
72131168
82295168
92479168
102687168
112979168
123372168
133852168
144415168
Stop Event
node limit
Counts
41 → 19

prune472.0ms (5.1%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New1032105
Fresh31013
Picked101
Done011
Total10713120
Error
0.1b
Counts
120 → 13
Alt Table
StatusErrorProgram
0.4b
(+.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) xi) (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) yi))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (log1p.f32 (expm1.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3)))) yi))))
4.6b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (log.f32 (+.f32 1 (expm1.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
12.3b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi) 3) 1/3))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 2) (PI.f32)) uy))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
1.7b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (fma.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 2 (PI.f32)) uy))) 2) yi))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi)) 3))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (expm1.f32 (log1p.f32 (*.f32 8 (pow.f32 (PI.f32) 3))))))) yi))))
Compiler

Compiled 6418 to 3543 computations (44.8% saved)

localize117.0ms (1.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))
0.3b
(*.f32 uy (*.f32 2 (PI.f32)))
0.3b
(*.f32 (PI.f32) (*.f32 uy 2))
11.5b
(log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))

series492.0ms (5.3%)

Counts
3 → 36
Calls

3 calls:

484.0ms
(log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))
5.0ms
(*.f32 (PI.f32) (*.f32 uy 2))
3.0ms
(expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))

rewrite46.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
780×log1p-expm1-u_binary32
780×expm1-log1p-u_binary32
145×prod-diff_binary32
85×add-sqr-sqrt_binary32
82×egg-rr
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01026
118726
2213026
Stop Event
node limit
Counts
3 → 82
Calls

3 calls:

44.0ms
(expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))
44.0ms
(*.f32 (PI.f32) (*.f32 uy 2))
44.0ms
(log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))

simplify42.0ms (0.5%)

Algorithm
egg-herbie
Rules
940×fma-def_binary32
304×*-commutative_binary32
300×unswap-sqr_binary32
224×distribute-rgt-out_binary32
216×associate-/l/_binary32
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
033387
1101384
2279378
31138369
43416361
54006361
Stop Event
node limit
Counts
118 → 74

prune360.0ms (3.9%)

Pruning

13 alts after pruning (11 fresh and 2 done)

PrunedKeptTotal
New91091
Fresh01111
Picked011
Done011
Total9113104
Error
0.1b
Counts
104 → 13
Alt Table
StatusErrorProgram
0.4b
(+.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) xi) (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
4.6b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) yi))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (log1p.f32 (expm1.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi))))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (*.f32 2 (PI.f32)) 3)))) yi))))
4.6b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (log.f32 (+.f32 1 (expm1.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (+.f32 1 (expm1.f32 (*.f32 (PI.f32) (*.f32 uy 2)))))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
12.3b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi) 3) 1/3))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 2) (PI.f32)) uy))) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
0.4b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (-.f32 (exp.f32 (log1p.f32 (*.f32 (PI.f32) (*.f32 uy 2)))) 1)) xi (*.f32 (sin.f32 (*.f32 uy (*.f32 2 (PI.f32)))) yi))))
1.7b
(fma.f32 ux (*.f32 (-.f32 zi (*.f32 ux zi)) maxCos) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (fma.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
1.0b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (pow.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 2 (PI.f32)) uy))) 2) yi))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (PI.f32) (*.f32 uy 2))) yi)) 3))))
0.5b
(fma.f32 ux (*.f32 (-.f32 1 ux) (*.f32 maxCos zi)) (*.f32 (sqrt.f32 (fma.f32 (-.f32 1 ux) (*.f32 (*.f32 ux (*.f32 maxCos (*.f32 ux maxCos))) (+.f32 ux -1)) 1)) (fma.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 uy 3) (expm1.f32 (log1p.f32 (*.f32 8 (pow.f32 (PI.f32) 3))))))) yi))))
Compiler

Compiled 5330 to 3219 computations (39.6% saved)

regimes1.5s (16.8%)

Accuracy

Total 0.2b remaining (54.5%)

Threshold costs 0.2b (54.5%)

Counts
96 → 1
Compiler

Compiled 52643 to 37146 computations (29.4% saved)

simplify3.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
03474
15074
25374
35574
45674
Stop Event
saturated

end379.0ms (4.1%)

Compiler

Compiled 828 to 590 computations (28.7% saved)

Profiling

Loading profile data...