Details

Time bar (total: 27.3s)

analyze261.0ms (1%)

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

Compiled 118 to 85 computations (28% saved)

sample281.0ms (1%)

Algorithm
intervals
Results
186.0ms256×body128valid
30.0ms256×pre128true
Compiler

Compiled 195 to 141 computations (27.7% saved)

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

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

localize207.0ms (0.8%)

Local error

Found 4 expressions with local error:

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

series114.0ms (0.4%)

Counts
4 → 72
Calls

4 calls:

43.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
34.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) yi)
29.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) (-.f32 (*.f32 ux maxCos) maxCos))
8.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

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

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

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

prune1.1s (4%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New1959204
Fresh011
Picked101
Done000
Total19610206
Error
0.1b
Counts
206 → 10
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 (sin.f32 (*.f32 (*.f32 (*.f32 uy 2) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) yi))))
15.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 (exp.f32 (log.f32 (*.f32 yi (sin.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))))
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))))
4.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 (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.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 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (cbrt.f32 (sin.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 (sin.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.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 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 (pow.f32 (PI.f32) 5) yi)))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) 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
(+.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))
1.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 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (sqrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) yi)))))
Compiler

Compiled 11629 to 6756 computations (41.9% saved)

localize86.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f32 (*.f32 (-.f32 1 ux) maxCos) ux)
0.2b
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.2b
(*.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)
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))

series340.0ms (1.2%)

Counts
2 → 72
Calls

2 calls:

332.0ms
(*.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)
7.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) ux)

rewrite18.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
12×add-cbrt-cube_binary32
12×add-exp-log_binary32
12×pow1_binary32
associate-*r*_binary32
associate-*l/_binary32
Counts
2 → 44
Calls

2 calls:

9.0ms
(*.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)
6.0ms
(*.f32 (*.f32 (-.f32 1 ux) maxCos) ux)

simplify147.0ms (0.5%)

Algorithm
egg-herbie
Rules
988×times-frac_binary32
635×associate-*r*_binary32
570×associate-*l*_binary32
409×fma-neg_binary32
332×*-commutative_binary32
Counts
116 → 126
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03906017
111145329
244235313
364995313

prune3.2s (11.6%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New3655370
Fresh279
Picked101
Done000
Total36812380
Error
0.1b
Counts
380 → 12
Alt Table
StatusErrorProgram
15.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 (exp.f32 (log.f32 (*.f32 yi (sin.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))))
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))))
4.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 (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.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 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (cbrt.f32 (sin.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 (sin.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.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 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 (pow.f32 (PI.f32) 5) yi)))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) 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 (-.f32 1 ux) maxCos) (sqrt.f32 ux)) (sqrt.f32 ux)) zi))
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
(+.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 ux (*.f32 maxCos (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux)) zi))
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 (-.f32 1 ux) maxCos) (*.f32 (cbrt.f32 ux) (cbrt.f32 ux))) (cbrt.f32 ux)) zi))
1.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 2 (*.f32 (*.f32 (PI.f32) (*.f32 uy yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))) (*.f32 4/3 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))))) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
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 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (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 30369 to 19971 computations (34.2% saved)

localize243.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.2b
(*.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)
0.3b
(/.f32 (*.f32 ux (*.f32 maxCos (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))

series42.0ms (0.2%)

Counts
1 → 24
Calls

1 calls:

42.0ms
(/.f32 (*.f32 ux (*.f32 maxCos (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux))

rewrite13.0ms (0%)

Algorithm
rewrite-expression-head
Rules
10×add-cbrt-cube_binary32
10×add-exp-log_binary32
*-un-lft-identity_binary32
associate-/r*_binary32
associate-*r/_binary32
Counts
1 → 31
Calls

1 calls:

11.0ms
(/.f32 (*.f32 ux (*.f32 maxCos (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux))

simplify79.0ms (0.3%)

Algorithm
egg-herbie
Rules
455×associate-/r*_binary32
357×associate-*l/_binary32
290×distribute-rgt-in_binary32
282×*-commutative_binary32
277×distribute-lft-in_binary32
Counts
55 → 57
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0921094
1267929
21070860
34061860
45082860

prune2.3s (8.3%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New2252227
Fresh2911
Picked101
Done000
Total22811239
Error
0.1b
Counts
239 → 11
Alt Table
StatusErrorProgram
15.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 (exp.f32 (log.f32 (*.f32 yi (sin.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))))
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 1 (/.f32 (+.f32 ux 1) (*.f32 maxCos (-.f32 ux (pow.f32 ux 3))))) zi))
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))))
4.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 (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.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 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (cbrt.f32 (sin.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 (sin.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.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 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 (pow.f32 (PI.f32) 5) yi)))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) 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
(+.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 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))) zi))
1.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 2 (*.f32 (*.f32 (PI.f32) (*.f32 uy yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))) (*.f32 4/3 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))))) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
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 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (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 21604 to 14100 computations (34.7% saved)

localize266.0ms (1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.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)
0.3b
(/.f32 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux)))))
0.3b
(/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))

series121.0ms (0.4%)

Counts
2 → 48
Calls

2 calls:

76.0ms
(/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))
45.0ms
(/.f32 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux)))))

rewrite63.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
114×times-frac_binary32
94×*-un-lft-identity_binary32
62×add-sqr-sqrt_binary32
62×add-cube-cbrt_binary32
21×associate-/r*_binary32
Counts
2 → 129
Calls

2 calls:

18.0ms
(/.f32 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux)))))
11.0ms
(/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))

simplify268.0ms (1%)

Algorithm
egg-herbie
Rules
905×times-frac_binary32
362×fma-def_binary32
299×distribute-rgt-in_binary32
248×distribute-lft-in_binary32
159×associate-/r/_binary32
Counts
177 → 231
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02435137
15874867
221054784
345374784
450964784

prune2.8s (10.2%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New3743377
Fresh2810
Picked101
Done000
Total37711388
Error
0.1b
Counts
388 → 11
Alt Table
StatusErrorProgram
15.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 (exp.f32 (log.f32 (*.f32 yi (sin.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))))
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 1 (/.f32 (+.f32 ux 1) (*.f32 maxCos (-.f32 ux (pow.f32 ux 3))))) zi))
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))))
1.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 2 (*.f32 (*.f32 (PI.f32) (*.f32 uy yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))) (*.f32 4/3 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (*.f32 (pow.f32 uy 3) yi)) (sqrt.f32 (-.f32 (+.f32 1 (*.f32 2 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))))))))) (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) zi))
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 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux) (*.f32 (*.f32 (-.f32 1 ux) maxCos) ux))))) yi)) (*.f32 (/.f32 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))) zi))
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 (sin.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) yi))))
1.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 (*.f32 2 (*.f32 uy (*.f32 yi (PI.f32)))) (*.f32 4/15 (*.f32 (pow.f32 uy 5) (*.f32 (pow.f32 (PI.f32) 5) yi)))) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (*.f32 (pow.f32 (PI.f32) 3) yi)))))))
4.5b
(+.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) (cbrt.f32 (pow.f32 (*.f32 yi (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (-.f32 1 (*.f32 (*.f32 (*.f32 maxCos ux) (-.f32 1 ux)) (*.f32 (*.f32 maxCos ux) (-.f32 1 ux))))))) 3))) (*.f32 (/.f32 ux (/.f32 (+.f32 ux 1) (-.f32 maxCos (*.f32 maxCos (*.f32 ux ux))))) zi))
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.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 maxCos (-.f32 maxCos (*.f32 maxCos (pow.f32 ux 4)))) (/.f32 (*.f32 (cbrt.f32 ux) (cbrt.f32 ux)) (+.f32 1 ux))) (/.f32 (cbrt.f32 ux) (fma.f32 maxCos (*.f32 ux ux) maxCos))) zi))
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 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) yi)))))
Compiler

Compiled 34017 to 20271 computations (40.4% saved)

regimes9.7s (35.4%)

Accuracy

Total 0.2b remaining (57.5%)

Threshold costs 0.2b (57.5%)

Counts
297 → 1
Compiler

Compiled 227876 to 158072 computations (30.6% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
03170
14870
25570
35970
46170
56070

end1.0ms (0%)

Compiler

Compiled 51 to 35 computations (31.4% saved)

sample5.4s (19.8%)

Algorithm
intervals
Results
3.0s8000×body128valid
699.0ms8000×pre128true
Compiler

Compiled 1004 to 702 computations (30.1% saved)

Profiling

Loading profile data...