Details

Time bar (total: 17.1s)

analyze666.0ms (3.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%0.1%99.9%0
0%0.1%99.9%1
0%0.1%99.9%2
0%0.1%99.9%3
0%0%99.9%4
0%0%99.9%5
0%0%99.9%6
0.1%0%99.9%7
0.1%0%99.9%8
0.1%0%99.9%9
0.1%0%99.9%10
0.1%0%99.9%11
0.1%0%99.9%12
0.1%0%99.9%13
0.1%0%99.9%14
Compiler

Compiled 51 to 37 computations (27.5% saved)

sample158.0ms (0.9%)

Algorithm
intervals
Results
46.0ms256×body128valid
9.0ms256×pre128true
Compiler

Compiled 82 to 60 computations (26.8% saved)

simplify48.0ms (0.3%)

Algorithm
egg-herbie
Rules
743×sub-neg_binary32
674×fma-neg_binary32
386×associate--l-_binary32
316×distribute-rgt-in_binary32
286×unsub-neg_binary32
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01739
14135
211735
343133
4175533
5413533
6496633

prune5.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 156 to 110 computations (29.5% saved)

localize137.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.1b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
0.3b
(*.f32 (*.f32 uy 2) (PI.f32))
14.5b
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)

series250.0ms (1.5%)

Counts
4 → 80
Calls

4 calls:

225.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
15.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)
7.0ms
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite16.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
12×add-sqr-sqrt_binary32
11×add-cbrt-cube_binary32
11×add-exp-log_binary32
11×pow1_binary32
associate-*r*_binary32
Counts
4 → 63
Calls

4 calls:

5.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
4.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
1.0ms
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)

simplify162.0ms (0.9%)

Algorithm
egg-herbie
Rules
477×associate-*l*_binary32
474×fma-neg_binary32
411×associate-*r*_binary32
313×fma-def_binary32
258×*-commutative_binary32
Counts
143 → 173
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03697663
111346796
248356794
352436794

prune397.0ms (2.3%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New1658173
Fresh011
Picked101
Done000
Total1669175
Error
0.2b
Counts
175 → 9
Alt Table
StatusErrorProgram
14.0b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
0.3b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
14.0b
(*.f32 (cos.f32 (exp.f32 (log.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
2.4b
(-.f32 (*.f32 (fma.f32 2/3 (*.f32 (pow.f32 (PI.f32) 4) (pow.f32 uy 4)) 1) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))) (fma.f32 2 (*.f32 (*.f32 uy uy) (pow.f32 (PI.f32) 2)) (*.f32 4/45 (*.f32 (pow.f32 uy 6) (pow.f32 (PI.f32) 6))))))
7.6b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
2.4b
(-.f32 (+.f32 (sqrt.f32 (-.f32 (+.f32 (*.f32 2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 2 ux)) (+.f32 (pow.f32 ux 2) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 2 (*.f32 maxCos ux)))))) (*.f32 2/3 (*.f32 (*.f32 (pow.f32 uy 4) (pow.f32 (PI.f32) 4)) (sqrt.f32 (-.f32 (+.f32 (*.f32 2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 2 ux)) (+.f32 (pow.f32 ux 2) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 2 (*.f32 maxCos ux))))))))) (+.f32 (*.f32 4/45 (*.f32 (*.f32 (pow.f32 uy 6) (pow.f32 (PI.f32) 6)) (sqrt.f32 (-.f32 (+.f32 (*.f32 2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 2 ux)) (+.f32 (pow.f32 ux 2) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 2 (*.f32 maxCos ux)))))))) (*.f32 2 (*.f32 (*.f32 (pow.f32 (PI.f32) 2) (pow.f32 uy 2)) (sqrt.f32 (-.f32 (+.f32 (*.f32 2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 2 ux)) (+.f32 (pow.f32 ux 2) (+.f32 (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)) (*.f32 2 (*.f32 maxCos ux))))))))))
14.0b
(*.f32 (*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (cbrt.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))
0.9b
(-.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))))
1.9b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))))
Compiler

Compiled 10339 to 6782 computations (34.4% saved)

localize74.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))))
0.1b
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.1b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.3b
(*.f32 (*.f32 uy 2) (PI.f32))

series355.0ms (2.1%)

Counts
2 → 52
Calls

2 calls:

256.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
99.0ms
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))))

rewrite22.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
11×add-sqr-sqrt_binary32
sqrt-prod_binary32
associate-*r*_binary32
*-un-lft-identity_binary32
add-cube-cbrt_binary32
Counts
2 → 43
Calls

2 calls:

11.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
7.0ms
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))))

simplify152.0ms (0.9%)

Algorithm
egg-herbie
Rules
582×fma-def_binary32
518×associate-*r*_binary32
440×associate-*l*_binary32
240×times-frac_binary32
207×associate-/l*_binary32
Counts
95 → 157
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04849759
116338827
253178827

prune456.0ms (2.7%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New2058213
Fresh628
Picked101
Done000
Total21210222
Error
0.1b
Counts
222 → 10
Alt Table
StatusErrorProgram
0.3b
(*.f32 (expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
1.8b
(*.f32 (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
0.4b
(*.f32 (*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 8 (pow.f32 (fma.f32 maxCos (*.f32 ux ux) ux) 3)) (pow.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) 3)))) (sqrt.f32 (+.f32 (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux))) (+.f32 (*.f32 (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))) (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))))
0.8b
(*.f32 (*.f32 (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
7.6b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
0.8b
(*.f32 (log.f32 (exp.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.9b
(-.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))))
1.1b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (exp.f32 (log.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))))
Compiler

Compiled 16138 to 9808 computations (39.2% saved)

localize85.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))
0.1b
(*.f32 (expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.2b
(expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))
0.3b
(*.f32 uy (PI.f32))

series291.0ms (1.7%)

Counts
4 → 68
Calls

4 calls:

281.0ms
(*.f32 (expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
4.0ms
(cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))
3.0ms
(expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))
2.0ms
(*.f32 uy (PI.f32))

rewrite20.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
15×add-sqr-sqrt_binary32
associate-*r*_binary32
*-un-lft-identity_binary32
add-cube-cbrt_binary32
add-cbrt-cube_binary32
Counts
4 → 67
Calls

4 calls:

10.0ms
(*.f32 (expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
3.0ms
(*.f32 uy (PI.f32))
2.0ms
(cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))
0.0ms
(expm1.f32 (log1p.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))

simplify162.0ms (0.9%)

Algorithm
egg-herbie
Rules
483×fma-neg_binary32
446×associate-*r*_binary32
378×fma-def_binary32
364×associate-*l*_binary32
188×associate-+r+_binary32
Counts
135 → 159
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03867260
111476501
249016499
353066499

prune390.0ms (2.3%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New1572159
Fresh189
Picked101
Done000
Total15910169
Error
0.0b
Counts
169 → 10
Alt Table
StatusErrorProgram
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
1.8b
(*.f32 (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 8 (pow.f32 (fma.f32 maxCos (*.f32 ux ux) ux) 3)) (pow.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) 3)))) (sqrt.f32 (+.f32 (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux))) (+.f32 (*.f32 (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))) (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))))
0.8b
(*.f32 (*.f32 (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
7.6b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
0.8b
(*.f32 (log.f32 (exp.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.9b
(-.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))))
1.1b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (exp.f32 (log.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))))
Compiler

Compiled 11715 to 6903 computations (41.1% saved)

localize98.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))))
0.2b
(-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))
0.3b
(*.f32 uy (PI.f32))
0.5b
(*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32))))

series36.0ms (0.2%)

Counts
3 → 36
Calls

3 calls:

16.0ms
(-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))
12.0ms
(expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))))
8.0ms
(*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32))))

rewrite14.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
10×pow1_binary32
add-sqr-sqrt_binary32
*-un-lft-identity_binary32
add-cube-cbrt_binary32
add-cbrt-cube_binary32
Counts
3 → 62
Calls

3 calls:

6.0ms
(-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))
5.0ms
(*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32))))
0.0ms
(expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32)))))))

simplify101.0ms (0.6%)

Algorithm
egg-herbie
Rules
799×fma-neg_binary32
498×cancel-sign-sub-inv_binary32
374×unswap-sqr_binary32
361×fma-def_binary32
189×*-commutative_binary32
Counts
98 → 112
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01392123
13311892
29181846
324391831
445111831
548211831

prune519.0ms (3%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New2293232
Fresh099
Picked101
Done000
Total23012242
Error
0.0b
Counts
242 → 12
Alt Table
StatusErrorProgram
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
1.8b
(*.f32 (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
0.5b
(/.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 8 (pow.f32 (fma.f32 maxCos (*.f32 ux ux) ux) 3)) (pow.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) 3)))) (sqrt.f32 (+.f32 (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux))) (+.f32 (*.f32 (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux)))) (*.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))))
0.8b
(*.f32 (*.f32 (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))) (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
0.8b
(*.f32 (log.f32 (exp.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32))))) (*.f32 (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32)))))) (*.f32 (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 uy (PI.f32))))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 uy (PI.f32)))) (*.f32 (*.f32 (cbrt.f32 (pow.f32 (sin.f32 (*.f32 (PI.f32) uy)) 2)) (cbrt.f32 (pow.f32 (sin.f32 (*.f32 (PI.f32) uy)) 2))) (cbrt.f32 (pow.f32 (sin.f32 (*.f32 (PI.f32) uy)) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
1.1b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (exp.f32 (log.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))))))))
7.6b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (-.f32 (*.f32 (cos.f32 (*.f32 uy (PI.f32))) (cos.f32 (*.f32 (*.f32 uy (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32))))) (*.f32 (sin.f32 (*.f32 uy (PI.f32))) (sin.f32 (*.f32 uy (PI.f32))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.4b
(*.f32 (expm1.f32 (log1p.f32 (*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (+.f32 (*.f32 (fma.f32 maxCos maxCos 1) (*.f32 ux ux)) (*.f32 2 (*.f32 maxCos ux))))))
0.9b
(-.f32 (+.f32 (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))))
Compiler

Compiled 12603 to 4525 computations (64.1% saved)

regimes10.4s (60.5%)

Accuracy

Total 0.2b remaining (81%)

Threshold costs 0.2b (81%)

Counts
455 → 1
Compiler

Compiled 250346 to 154642 computations (38.2% saved)

simplify5.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02655
13855
24655
36755
48655
59855
610555
710755
810555

end1.0ms (0%)

Compiler

Compiled 39 to 27 computations (30.8% saved)

sample2.1s (12.5%)

Algorithm
intervals
Results
939.0ms8000×body128valid
282.0ms8000×pre128true
Compiler

Compiled 837 to 507 computations (39.4% saved)

Profiling

Loading profile data...