Details

Time bar (total: 20.0s)

analyze10.0ms (0%)

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

Compiled 118 to 85 computations (28% saved)

sample6.8s (33.8%)

Results
6.6s8256×body128valid
Compiler

Compiled 307 to 220 computations (28.3% saved)

simplify103.0ms (0.5%)

Algorithm
egg-herbie
Rules
929×unsub-neg_binary32
384×associate--l-_binary32
362×distribute-rgt-in_binary32
356×distribute-neg-in_binary32
347×distribute-rgt-neg-in_binary32
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02799
16797
220470
368366
4186466
5261766
6462566
7507366

prune15.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
0.3b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(+.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 242 computations (31.6% saved)

localize146.0ms (0.7%)

Local error

Found 4 expressions with local error:

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

series84.0ms (0.4%)

Counts
4 → 72
Calls

4 calls:

30.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
28.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
17.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
9.0ms
(*.f32 (-.f32 1 ux) maxCos)

rewrite65.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
21×add-sqr-sqrt_binary32
18×*-un-lft-identity_binary32
18×add-cbrt-cube_binary32
18×add-exp-log_binary32
18×pow1_binary32
Counts
4 → 108
Calls

4 calls:

20.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
14.0ms
(*.f32 (-.f32 1 ux) maxCos)
10.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
9.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

simplify175.0ms (0.9%)

Algorithm
egg-herbie
Rules
815×fma-neg_binary32
598×associate-*l*_binary32
505×associate-*r*_binary32
240×cancel-sign-sub-inv_binary32
228×*-commutative_binary32
Counts
180 → 193
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02843039
16552722
227502568
344362561
449342561

prune1.6s (7.9%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New25511266
Fresh101
Picked101
Done000
Total25711268
Error
0.1b
Counts
268 → 11
Alt Table
StatusErrorProgram
0.3b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (neg.f32 (*.f32 maxCos maxCos)) (*.f32 ux ux))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (cbrt.f32 yi) (cbrt.f32 yi))) (cbrt.f32 yi)))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos))) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.9b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (-.f32 (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)))))))))
4.8b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (cbrt.f32 (*.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 yi yi) yi))))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))))
0.3b
(fma.f32 ux (*.f32 (-.f32 maxCos (*.f32 maxCos ux)) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
15.1b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 yi)) (sqrt.f32 yi)))))
0.7b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 yi (+.f32 (*.f32 2 (*.f32 uy (PI.f32))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)))) (*.f32 yi (-.f32 (*.f32 -4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 (*.f32 8/315 (pow.f32 uy 7)) (pow.f32 (PI.f32) 7))))))))
Compiler

Compiled 14611 to 8350 computations (42.9% saved)

localize151.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.3b
(expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))
0.3b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
0.3b
(*.f32 (*.f32 uy 2) (PI.f32))

series14.0ms (0.1%)

Counts
2 → 24
Calls

2 calls:

10.0ms
(log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
3.0ms
(expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))

rewrite2.0ms (0%)

Algorithm
rewrite-expression-head
Rules
expm1-log1p-u_binary32
*-un-lft-identity_binary32
add-sqr-sqrt_binary32
add-cube-cbrt_binary32
add-cbrt-cube_binary32
Counts
2 → 22
Calls

2 calls:

1.0ms
(log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
1.0ms
(expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))

simplify125.0ms (0.6%)

Algorithm
egg-herbie
Rules
974×fma-neg_binary32
627×cancel-sign-sub-inv_binary32
364×associate-*l*_binary32
350×unswap-sqr_binary32
336×associate-*r*_binary32
Counts
46 → 61
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
086774
1220712
2724701
32779687
44960687
55253687

prune1.1s (5.7%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New1612163
Fresh01010
Picked011
Done000
Total16113174
Error
0.1b
Counts
174 → 13
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))))
1.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (fma.f32 8/3 (pow.f32 (*.f32 uy (PI.f32)) 3) (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2)))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (neg.f32 (*.f32 maxCos maxCos)) (*.f32 ux ux))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (cbrt.f32 yi) (cbrt.f32 yi))) (cbrt.f32 yi)))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos))) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.9b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (-.f32 (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)))))))))
4.8b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (cbrt.f32 (*.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 yi yi) yi))))))
1.6b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (-.f32 maxCos (*.f32 maxCos ux)) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
15.1b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 yi)) (sqrt.f32 yi)))))
0.7b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 yi (+.f32 (*.f32 2 (*.f32 uy (PI.f32))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)))) (*.f32 yi (-.f32 (*.f32 -4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 (*.f32 8/315 (pow.f32 uy 7)) (pow.f32 (PI.f32) 7))))))))
Compiler

Compiled 9995 to 6016 computations (39.8% saved)

localize234.0ms (1.2%)

Local error

Found 4 expressions with local error:

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

prune1.6s (8%)

Pruning

13 alts after pruning (11 fresh and 2 done)

PrunedKeptTotal
New2230223
Fresh01111
Picked011
Done011
Total22313236
Error
0.1b
Counts
236 → 13
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))))
1.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (fma.f32 8/3 (pow.f32 (*.f32 uy (PI.f32)) 3) (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2)))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (neg.f32 (*.f32 maxCos maxCos)) (*.f32 ux ux))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (cbrt.f32 yi) (cbrt.f32 yi))) (cbrt.f32 yi)))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos))) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.9b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (-.f32 (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)))))))))
4.8b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (cbrt.f32 (*.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 yi yi) yi))))))
1.6b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (-.f32 maxCos (*.f32 maxCos ux)) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
15.1b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 yi)) (sqrt.f32 yi)))))
0.7b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 yi (+.f32 (*.f32 2 (*.f32 uy (PI.f32))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)))) (*.f32 yi (-.f32 (*.f32 -4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 (*.f32 8/315 (pow.f32 uy 7)) (pow.f32 (PI.f32) 7))))))))
Compiler

Compiled 12665 to 6416 computations (49.3% saved)

localize187.0ms (0.9%)

Local error

Found 4 expressions with local error:

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

series59.0ms (0.3%)

Counts
1 → 20
Calls

1 calls:

58.0ms
(*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)))

rewrite38.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
50×pow1_binary32
28×sqrt-pow1_binary32
20×pow-prod-down_binary32
14×associate-*l/_binary32
12×sqrt-div_binary32
Counts
1 → 59
Calls

1 calls:

26.0ms
(*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)))

simplify91.0ms (0.5%)

Algorithm
egg-herbie
Rules
883×distribute-rgt-in_binary32
864×distribute-lft-in_binary32
527×associate-*l*_binary32
410×unswap-sqr_binary32
345×associate-*r*_binary32
Counts
79 → 74
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
078905
1141803
2445753
31722727
45083727

prune2.0s (10%)

Pruning

13 alts after pruning (10 fresh and 3 done)

PrunedKeptTotal
New2540254
Fresh01010
Picked011
Done022
Total25413267
Error
0.1b
Counts
267 → 13
Alt Table
StatusErrorProgram
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))) (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))))
1.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (fma.f32 8/3 (pow.f32 (*.f32 uy (PI.f32)) 3) (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2)))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (neg.f32 (*.f32 maxCos maxCos)) (*.f32 ux ux))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (cbrt.f32 yi) (cbrt.f32 yi))) (cbrt.f32 yi)))))
0.4b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) yi))))
0.3b
(fma.f32 ux (*.f32 (*.f32 (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos)) (sqrt.f32 (*.f32 (-.f32 1 ux) maxCos))) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.9b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 2 (*.f32 uy (*.f32 (PI.f32) yi)) (*.f32 yi (-.f32 (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)))))))))
4.8b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (cbrt.f32 (*.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 yi yi) yi))))))
1.6b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (expm1.f32 (*.f32 2 (*.f32 uy (-.f32 (PI.f32) (*.f32 uy (pow.f32 (PI.f32) 2))))))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
0.3b
(fma.f32 ux (*.f32 (-.f32 maxCos (*.f32 maxCos ux)) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi))))
15.1b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 yi)) (sqrt.f32 yi)))))
0.7b
(fma.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) zi) (*.f32 (sqrt.f32 (fma.f32 ux (*.f32 ux (*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))) 1)) (fma.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) xi (fma.f32 yi (+.f32 (*.f32 2 (*.f32 uy (PI.f32))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5)))) (*.f32 yi (-.f32 (*.f32 -4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 (*.f32 8/315 (pow.f32 uy 7)) (pow.f32 (PI.f32) 7))))))))
Compiler

Compiled 15462 to 9172 computations (40.7% saved)

regimes4.6s (23%)

Accuracy

Total 0.2b remaining (52.3%)

Threshold costs 0.2b (52.3%)

Counts
174 → 1
Compiler

Compiled 96002 to 65758 computations (31.5% saved)

simplify12.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02970
14470
25170
35570
45770
55670

end813.0ms (4.1%)

Compiler

Compiled 875 to 593 computations (32.2% saved)

Profiling

Loading profile data...