Details

Time bar (total: 15.9s)

analyze180.0ms (1.1%)

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

Compiled 118 to 85 computations (28% saved)

sample117.0ms (0.7%)

Algorithm
intervals
Results
72.0ms256×body128valid
15.0ms256×pre128true
Compiler

Compiled 195 to 141 computations (27.7% saved)

simplify68.0ms (0.4%)

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

prune8.0ms (0%)

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)

localize92.0ms (0.6%)

Local error

Found 4 expressions with local error:

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

series73.0ms (0.5%)

Counts
4 → 72
Calls

4 calls:

50.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
16.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
3.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite24.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
16×add-cbrt-cube_binary32
16×add-exp-log_binary32
16×pow1_binary32
14×add-sqr-sqrt_binary32
13×*-un-lft-identity_binary32
Counts
4 → 92
Calls

4 calls:

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

simplify118.0ms (0.7%)

Algorithm
egg-herbie
Rules
542×associate-*l*_binary32
517×fma-neg_binary32
481×associate-*r*_binary32
301×cancel-sign-sub-inv_binary32
270×exp-prod_binary32
Counts
164 → 174
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02783041
16582723
227862610
344282602
449672602

prune845.0ms (5.3%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New19311204
Fresh011
Picked101
Done000
Total19412206
Error
0.1b
Counts
206 → 12
Alt Table
StatusErrorProgram
1.0b
(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 (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 (PI.f32) 7) (*.f32 (pow.f32 uy 7) -8/315) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
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.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))))
1.0b
(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 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (sqrt.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))
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 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
0.5b
(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 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32))))) 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 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32))))) yi))))
1.0b
(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 (*.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.5b
(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.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 (*.f32 (sin.f32 (exp.f32 (+.f32 (log.f32 (*.f32 uy 2)) (log.f32 (PI.f32))))) yi))))
Compiler

Compiled 11877 to 6922 computations (41.7% saved)

localize143.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2))
0.3b
(*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
0.3b
(*.f32 (*.f32 uy 2) (PI.f32))
1.0b
(*.f32 (PI.f32) (PI.f32))

series17.0ms (0.1%)

Counts
3 → 24
Calls

3 calls:

14.0ms
(*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
3.0ms
(*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2))
0.0ms
(*.f32 (PI.f32) (PI.f32))

rewrite127.0ms (0.8%)

Algorithm
rewrite-expression-head
Rules
918×pow1_binary32
450×pow-prod-down_binary32
247×add-cbrt-cube_binary32
238×add-exp-log_binary32
238×pow-prod-up_binary32
Counts
3 → 319
Calls

3 calls:

42.0ms
(*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
12.0ms
(*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2))
3.0ms
(*.f32 (PI.f32) (PI.f32))

simplify156.0ms (1%)

Algorithm
egg-herbie
Rules
655×fma-def_binary32
466×sqr-pow_binary32
386×associate-*l*_binary32
325×associate-*r*_binary32
286×log-prod_binary32
Counts
343 → 167
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01635654
12523411
213813345
322073256
435182931
549752931

prune843.0ms (5.3%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New1943197
Fresh3811
Picked101
Done000
Total19811209
Error
0.1b
Counts
209 → 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 (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.0b
(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 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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 (*.f32 (sin.f32 (cbrt.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 (*.f32 uy 2)))) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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))
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 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.0b
(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 (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 (PI.f32) 7) (*.f32 (pow.f32 uy 7) -8/315) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
1.0b
(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 (*.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.5b
(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.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 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy uy) uy) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32))))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (pow.f32 (cbrt.f32 (PI.f32)) 5) (cbrt.f32 (PI.f32))) (PI.f32))))) yi))))
0.5b
(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))))))
Compiler

Compiled 14007 to 8032 computations (42.7% saved)

localize177.0ms (1.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (*.f32 uy uy) uy)
0.3b
(*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
0.3b
(*.f32 (*.f32 (*.f32 (*.f32 uy uy) uy) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
1.0b
(*.f32 (PI.f32) (PI.f32))

series17.0ms (0.1%)

Counts
2 → 24
Calls

2 calls:

14.0ms
(*.f32 (*.f32 (*.f32 (*.f32 uy uy) uy) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
3.0ms
(*.f32 (*.f32 uy uy) uy)

rewrite98.0ms (0.6%)

Algorithm
rewrite-expression-head
Rules
648×pow1_binary32
306×pow-prod-down_binary32
222×pow-plus_binary32
222×pow-prod-up_binary32
181×add-cbrt-cube_binary32
Counts
2 → 214
Calls

2 calls:

38.0ms
(*.f32 (*.f32 (*.f32 (*.f32 uy uy) uy) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
5.0ms
(*.f32 (*.f32 uy uy) uy)

simplify150.0ms (0.9%)

Algorithm
egg-herbie
Rules
1013×fma-def_binary32
473×+-commutative_binary32
435×*-commutative_binary32
360×associate-+l+_binary32
346×sqr-pow_binary32
Counts
238 → 104
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01343650
12262737
29702652
322982518
438812456
549692456
651492456

prune1.2s (7.5%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New2581259
Fresh01010
Picked101
Done000
Total25911270
Error
0.1b
Counts
270 → 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 (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.0b
(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 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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 (*.f32 (sin.f32 (cbrt.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 (*.f32 uy 2)))) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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))
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 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.0b
(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 (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 (PI.f32) 7) (*.f32 (pow.f32 uy 7) -8/315) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
1.0b
(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 (*.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.5b
(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.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 (cbrt.f32 (*.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 uy))) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32))))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (pow.f32 (cbrt.f32 (PI.f32)) 5) (cbrt.f32 (PI.f32))) (PI.f32))))) yi))))
0.5b
(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))))))
Compiler

Compiled 21211 to 11458 computations (46% saved)

localize219.0ms (1.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 uy))) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
0.3b
(*.f32 3 (log.f32 uy))
1.0b
(*.f32 (PI.f32) (PI.f32))
2.6b
(exp.f32 (*.f32 3 (log.f32 uy)))

series43.0ms (0.3%)

Counts
3 → 32
Calls

3 calls:

26.0ms
(*.f32 3 (log.f32 uy))
14.0ms
(*.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 uy))) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
3.0ms
(exp.f32 (*.f32 3 (log.f32 uy)))

rewrite31.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
60×pow1_binary32
59×add-cbrt-cube_binary32
50×add-exp-log_binary32
43×cbrt-unprod_binary32
43×prod-exp_binary32
Counts
3 → 93
Calls

3 calls:

17.0ms
(*.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 uy))) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32)))
3.0ms
(*.f32 3 (log.f32 uy))
2.0ms
(exp.f32 (*.f32 3 (log.f32 uy)))

simplify130.0ms (0.8%)

Algorithm
egg-herbie
Rules
877×fma-def_binary32
412×*-commutative_binary32
378×distribute-rgt-in_binary32
358×distribute-lft-in_binary32
252×log-prod_binary32
Counts
125 → 110
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
01531846
12781424
29451363
323181307
448371307
549891287
650001287
749061287

prune888.0ms (5.6%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New1800180
Fresh01010
Picked011
Done000
Total18011191
Error
0.1b
Counts
191 → 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 (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.0b
(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 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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 (*.f32 (sin.f32 (cbrt.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 (*.f32 uy 2)))) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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))
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 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.0b
(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 (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 (PI.f32) 7) (*.f32 (pow.f32 uy 7) -8/315) (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) -4/3))))))))
1.0b
(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 (*.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.5b
(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.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 (cbrt.f32 (*.f32 (*.f32 (exp.f32 (*.f32 3 (log.f32 uy))) (*.f32 (*.f32 2 2) 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (PI.f32))))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (PI.f32) (PI.f32)) (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 (*.f32 (*.f32 uy 2) (PI.f32))) xi (*.f32 (sin.f32 (cbrt.f32 (*.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 uy 2)) (*.f32 uy 2)) (*.f32 (*.f32 (pow.f32 (cbrt.f32 (PI.f32)) 5) (cbrt.f32 (PI.f32))) (PI.f32))))) yi))))
0.5b
(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))))))
Compiler

Compiled 14052 to 8203 computations (41.6% saved)

regimes5.5s (34.4%)

Accuracy

Total 0.2b remaining (51.7%)

Threshold costs 0.2b (51.7%)

Counts
298 → 1
Compiler

Compiled 185188 to 127056 computations (31.4% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
03798
15698
26398
36798
46998
56898

end1.0ms (0%)

Compiler

Compiled 68 to 47 computations (30.9% saved)

sample4.7s (29.5%)

Algorithm
intervals
Results
2.9s8000×body128valid
532.0ms8000×pre128true
Compiler

Compiled 910 to 631 computations (30.7% saved)

Profiling

Loading profile data...