Details

Time bar (total: 23.9s)

analyze24.0ms (0.1%)

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

Compiled 118 to 85 computations (28% saved)

sample6.3s (26.5%)

Results
6.1s8256×body128valid
Compiler

Compiled 307 to 220 computations (28.3% saved)

simplify119.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

prune16.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)

localize246.0ms (1%)

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))

series85.0ms (0.4%)

Counts
4 → 72
Calls

4 calls:

43.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
25.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
10.0ms
(*.f32 (-.f32 1 ux) maxCos)
7.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite70.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:

22.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
10.0ms
(*.f32 (-.f32 1 ux) maxCos)
7.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
7.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

simplify239.0ms (1%)

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.9s (8%)

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.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.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))))))))
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.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)))))))))
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.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))))
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 (-.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))))
Compiler

Compiled 14611 to 8350 computations (42.9% saved)

localize219.0ms (0.9%)

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))

series18.0ms (0.1%)

Counts
2 → 24
Calls

2 calls:

12.0ms
(log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
6.0ms
(expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))

rewrite3.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
(expm1.f32 (log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32))))
1.0ms
(log1p.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

simplify133.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.3s (5.5%)

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 (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.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))))))))
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))))
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))))
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.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.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)))))))))
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))))
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.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))))
Compiler

Compiled 9995 to 6016 computations (39.8% saved)

localize298.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.9s (8%)

Pruning

12 alts after pruning (11 fresh and 1 done)

PrunedKeptTotal
New2221223
Fresh11011
Picked101
Done011
Total22412236
Error
0.1b
Counts
236 → 12
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 (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.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))))))))
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))))
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))))
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 maxCos (*.f32 maxCos ux)) 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))))
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.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))))))
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.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)))))))))
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))))
Compiler

Compiled 12616 to 6382 computations (49.4% saved)

localize187.0ms (0.8%)

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)))

series46.0ms (0.2%)

Counts
1 → 20
Calls

1 calls:

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

rewrite37.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)))

simplify97.0ms (0.4%)

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.2s (9.3%)

Pruning

12 alts after pruning (10 fresh and 2 done)

PrunedKeptTotal
New2540254
Fresh01010
Picked011
Done011
Total25412266
Error
0.1b
Counts
266 → 12
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 (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.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))))))))
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))))
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))))
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 maxCos (*.f32 maxCos ux)) 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))))
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.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))))))
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.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)))))))))
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))))
Compiler

Compiled 15413 to 9139 computations (40.7% saved)

regimes7.4s (31%)

Accuracy

Total 0.2b remaining (52.3%)

Threshold costs 0.2b (52.3%)

Counts
174 → 1
Compiler

Compiled 96062 to 65758 computations (31.5% saved)

simplify7.0ms (0%)

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

end950.0ms (4%)

Compiler

Compiled 826 to 560 computations (32.2% saved)

Profiling

Loading profile data...