Details

Time bar (total: 28.4s)

analyze1.1s (4%)

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)

sample141.0ms (0.5%)

Algorithm
intervals
Results
64.0ms256×body128valid
35.0ms256×pre128true
Compiler

Compiled 82 to 60 computations (26.8% saved)

simplify71.0ms (0.2%)

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
12.3b
Counts
3 → 2
Alt Table
StatusErrorProgram
12.6b
(*.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))))))
12.5b
(*.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)

localize57.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1))
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))
13.1b
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)

series436.0ms (1.5%)

Counts
4 → 88
Calls

4 calls:

318.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)))
98.0ms
(sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1))
14.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)
5.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite14.0ms (0%)

Algorithm
rewrite-expression-head
Rules
14×add-sqr-sqrt_binary32
12×pow1_binary32
11×add-cbrt-cube_binary32
11×add-exp-log_binary32
associate-*r*_binary32
Counts
4 → 69
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
(sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1))
0.0ms
(fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)

simplify146.0ms (0.5%)

Algorithm
egg-herbie
Rules
564×fma-def_binary32
555×associate-*r*_binary32
512×associate-*l*_binary32
240×times-frac_binary32
207×associate-/l*_binary32
Counts
157 → 211
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
051510427
116749279
254229279

prune387.0ms (1.4%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New2029211
Fresh101
Picked101
Done000
Total2049213
Error
0.2b
Counts
213 → 9
Alt Table
StatusErrorProgram
0.4b
(*.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))))))
12.5b
(*.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1)))) (sqrt.f32 (sqrt.f32 (fma.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (-.f32 ux (fma.f32 ux maxCos 1)) 1))))
12.4b
(log.f32 (exp.f32 (*.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.8b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (-.f32 (fma.f32 (*.f32 maxCos (*.f32 ux ux)) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (fma.f32 (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 3)) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))))) (fma.f32 (*.f32 maxCos ux) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (*.f32 1/2 (+.f32 (*.f32 (*.f32 maxCos (*.f32 maxCos (*.f32 ux ux))) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (*.f32 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))) (*.f32 maxCos maxCos)) (+.f32 (pow.f32 ux 4) (*.f32 ux ux))))))))
12.5b
(*.f32 (*.f32 (cbrt.f32 (*.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)))) (cbrt.f32 (*.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))))) (cbrt.f32 (*.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)))))
8.0b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
2.6b
(-.f32 (*.f32 (+.f32 (*.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 2 (*.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))))) (*.f32 (*.f32 uy uy) (pow.f32 (PI.f32) 2)))))
2.5b
(-.f32 (+.f32 (*.f32 2/3 (*.f32 (*.f32 (pow.f32 (PI.f32) 4) (pow.f32 uy 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)))))))) (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)))))))))
5.6b
(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)))))
Compiler

Compiled 14169 to 9354 computations (34% saved)

localize76.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
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
(*.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))

series342.0ms (1.2%)

Counts
3 → 64
Calls

3 calls:

240.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))))))
98.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)))))
3.0ms
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

rewrite28.0ms (0.1%)

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

3 calls:

13.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))))))
8.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)))))
3.0ms
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

simplify209.0ms (0.7%)

Algorithm
egg-herbie
Rules
591×fma-def_binary32
522×associate-*r*_binary32
452×associate-*l*_binary32
240×times-frac_binary32
207×associate-/l*_binary32
Counts
116 → 182
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
049610081
116669118
253999118

prune929.0ms (3.3%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New20310213
Fresh718
Picked101
Done000
Total21111222
Error
0.1b
Counts
222 → 11
Alt Table
StatusErrorProgram
0.4b
(*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.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))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
5.5b
(log.f32 (exp.f32 (*.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.9b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (*.f32 (cbrt.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)))))) (cbrt.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))))))) (cbrt.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))))))))
2.9b
(exp.f32 (log.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)))))))
12.5b
(*.f32 (*.f32 (cbrt.f32 (*.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)))) (cbrt.f32 (*.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))))) (cbrt.f32 (*.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.5b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (/.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 (fma.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (fma.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux)))) (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux)))))))
0.9b
(*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.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)))))) (cbrt.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)))))))) (cbrt.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 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.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 (log.f32 (exp.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.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.0b
(*.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 16245 to 9879 computations (39.2% saved)

localize176.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.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.3b
(*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))
0.3b
(*.f32 uy (PI.f32))
0.5b
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))

series1.3s (4.6%)

Counts
4 → 68
Calls

4 calls:

620.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.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))))))
620.0ms
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))
50.0ms
(*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))
5.0ms
(*.f32 uy (PI.f32))

rewrite74.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
34×pow1_binary32
23×add-sqr-sqrt_binary32
17×associate-*r*_binary32
15×add-exp-log_binary32
15×pow1/3_binary32
Counts
4 → 114
Calls

4 calls:

24.0ms
(*.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.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))))))
16.0ms
(*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))
10.0ms
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))
5.0ms
(*.f32 uy (PI.f32))

simplify331.0ms (1.2%)

Algorithm
egg-herbie
Rules
527×associate-*l*_binary32
478×associate-*r*_binary32
449×fma-neg_binary32
325×fma-def_binary32
156×times-frac_binary32
Counts
182 → 197
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
04288099
112677215
249477213
353177213

prune1.1s (3.8%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New2392241
Fresh2810
Picked101
Done000
Total24210252
Error
0.0b
Counts
252 → 10
Alt Table
StatusErrorProgram
0.9b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (*.f32 (cbrt.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)))))) (cbrt.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))))))) (cbrt.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))))))))
2.9b
(exp.f32 (log.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 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))) (cbrt.f32 (cbrt.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))))))
12.5b
(*.f32 (*.f32 (cbrt.f32 (*.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)))) (cbrt.f32 (*.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))))) (cbrt.f32 (*.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.5b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (/.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 (fma.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (fma.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux)))) (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux)))))))
0.9b
(*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.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)))))) (cbrt.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)))))))) (cbrt.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 (log.f32 (exp.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))))))
5.5b
(log.f32 (exp.f32 (*.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.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))))))
0.4b
(*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))) (cbrt.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.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))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
Compiler

Compiled 17205 to 9698 computations (43.6% saved)

localize249.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 uy (PI.f32))
0.4b
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))
0.4b
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
0.5b
(*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))

series5.1s (18.1%)

Counts
3 → 36
Calls

3 calls:

1.7s
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))
1.7s
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
1.7s
(*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))

rewrite76.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
30×pow1_binary32
26×cbrt-prod_binary32
22×add-sqr-sqrt_binary32
21×pow1/3_binary32
19×add-exp-log_binary32
Counts
3 → 97
Calls

3 calls:

24.0ms
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))))
20.0ms
(*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
14.0ms
(*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))

simplify311.0ms (1.1%)

Algorithm
egg-herbie
Rules
406×exp-prod_binary32
389×*-commutative_binary32
336×fma-def_binary32
273×fma-neg_binary32
222×sqr-pow_binary32
Counts
133 → 151
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01734352
13953633
210832819
320782604
443822514
549122514
649922514
748522514

prune1.4s (5.1%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New2610261
Fresh099
Picked011
Done000
Total26110271
Error
0.0b
Counts
271 → 10
Alt Table
StatusErrorProgram
0.9b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (*.f32 (cbrt.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)))))) (cbrt.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))))))) (cbrt.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))))))))
2.9b
(exp.f32 (log.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 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))) (cbrt.f32 (cbrt.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))))))
12.5b
(*.f32 (*.f32 (cbrt.f32 (*.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)))) (cbrt.f32 (*.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))))) (cbrt.f32 (*.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.5b
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (/.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 (fma.f32 (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux))) (fma.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux) (*.f32 ux (+.f32 (*.f32 2 maxCos) (*.f32 (fma.f32 maxCos maxCos 1) ux)))) (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux)))))))
0.9b
(*.f32 (*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (cbrt.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)))))) (cbrt.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)))))))) (cbrt.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 (log.f32 (exp.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))))))
5.5b
(log.f32 (exp.f32 (*.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.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))))))
0.4b
(*.f32 (*.f32 (cbrt.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))))) (cbrt.f32 (cos.f32 (*.f32 (*.f32 (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.f32))))) (cbrt.f32 (*.f32 2 (*.f32 uy (PI.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))))) (cbrt.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))))))
Compiler

Compiled 18059 to 9903 computations (45.2% saved)

regimes11.6s (40.7%)

Accuracy

Total 0.3b remaining (74.8%)

Threshold costs 0.3b (74.8%)

Counts
322 → 1
Compiler

Compiled 181148 to 121253 computations (33.1% saved)

simplify5.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02571
13871
24671
36771
48671
59871
610571
710771
810571

end1.0ms (0%)

Compiler

Compiled 48 to 30 computations (37.5% saved)

sample2.7s (9.5%)

Algorithm
intervals
Results
1.0s8000×body128valid
294.0ms8000×pre128true
Compiler

Compiled 754 to 475 computations (37% saved)

Profiling

Loading profile data...