Details

Time bar (total: 25.3s)

analyze673.0ms (2.7%)

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)

sample148.0ms (0.6%)

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

Compiled 82 to 60 computations (26.8% saved)

simplify54.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
13.1b
Counts
3 → 2
Alt Table
StatusErrorProgram
13.3b
(*.f32 (sin.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)))
13.2b
(*.f32 (sin.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))))))
Compiler

Compiled 156 to 110 computations (29.5% saved)

localize80.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

series263.0ms (1%)

Counts
4 → 92
Calls

4 calls:

229.0ms
(*.f32 (sin.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))))))
21.0ms
(-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))
10.0ms
(*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite34.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
22×add-sqr-sqrt_binary32
18×pow1_binary32
16×*-un-lft-identity_binary32
14×associate-*r*_binary32
14×add-cube-cbrt_binary32
Counts
4 → 109
Calls

4 calls:

12.0ms
(*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))
6.0ms
(*.f32 (sin.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))))))
5.0ms
(-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))
4.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

simplify240.0ms (0.9%)

Algorithm
egg-herbie
Rules
632×associate-*l*_binary32
569×associate-*r*_binary32
419×fma-def_binary32
156×times-frac_binary32
153×associate-/l*_binary32
Counts
201 → 252
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
046210137
114548391
253538391

prune428.0ms (1.7%)

Pruning

14 alts after pruning (14 fresh and 0 done)

PrunedKeptTotal
New23814252
Fresh101
Picked101
Done000
Total24014254
Error
0.3b
Counts
254 → 14
Alt Table
StatusErrorProgram
12.7b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (-.f32 (+.f32 (fma.f32 ux ux 1) (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))) (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux))))))
1.3b
(fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.f32 (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))) (-.f32 (*.f32 maxCos (*.f32 ux ux)) (*.f32 maxCos ux))))
13.2b
(*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 maxCos ux (-.f32 1 ux)) (fma.f32 maxCos ux (-.f32 1 ux))))))) (sqrt.f32 (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))))))
2.2b
(-.f32 (+.f32 (*.f32 4/15 (*.f32 (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5)) (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 uy (PI.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 4/3 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (pow.f32 uy 3)) (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)))))))))
13.3b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (+.f32 1 (fma.f32 maxCos ux (-.f32 1 ux))) (-.f32 1 (fma.f32 maxCos ux (-.f32 1 ux))))))
13.2b
(/.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 1 1) (*.f32 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))) (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))) (sqrt.f32 (+.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
13.5b
(*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))) (sqrt.f32 (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 maxCos ux (-.f32 1 ux)) (fma.f32 maxCos ux (-.f32 1 ux))))))) (*.f32 (sqrt.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))) (sqrt.f32 (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 maxCos ux (-.f32 1 ux)) (fma.f32 maxCos ux (-.f32 1 ux))))))))
2.2b
(fma.f32 4/15 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (*.f32 (pow.f32 (PI.f32) 5) (pow.f32 uy 5))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (-.f32 (*.f32 2 (*.f32 (PI.f32) uy)) (*.f32 4/3 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))))))
5.6b
(-.f32 (fma.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 6))) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 5)))) (+.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (+.f32 (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (*.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 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 3))) (*.f32 1/2 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 4)))))) (*.f32 3/2 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 5))) (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 4)))))))) (fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos 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 (*.f32 1/2 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 4)))) (*.f32 1/2 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (pow.f32 (*.f32 maxCos ux) 3))))) (+.f32 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 5))) (+.f32 (*.f32 1/2 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (pow.f32 (*.f32 maxCos ux) 3))) (*.f32 3/2 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 5)))))) (*.f32 (*.f32 1/2 (*.f32 (*.f32 ux ux) (*.f32 maxCos (*.f32 maxCos (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))) (+.f32 (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3)))))))))
3.0b
(-.f32 (*.f32 2 (*.f32 (*.f32 uy (PI.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 4/3 (*.f32 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3)) (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)))))))))
1.0b
(-.f32 (fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (+.f32 (*.f32 (*.f32 maxCos (*.f32 ux ux)) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (*.f32 (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 3)) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))))))) (fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos ux) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (*.f32 1/2 (+.f32 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))) (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 4)))) (*.f32 (*.f32 (*.f32 ux ux) (*.f32 maxCos (*.f32 maxCos (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))))) (+.f32 (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3)))))))))
13.3b
(/.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 maxCos ux (-.f32 1 ux)) (pow.f32 (fma.f32 maxCos ux (-.f32 1 ux)) 3))))) (sqrt.f32 (+.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
0.5b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
7.4b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
Compiler

Compiled 14844 to 9509 computations (35.9% saved)

localize67.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))
0.2b
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
0.2b
(*.f32 (*.f32 uy 2) (PI.f32))
0.4b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))

series321.0ms (1.3%)

Counts
3 → 64
Calls

3 calls:

222.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
95.0ms
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))
4.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

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

7.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
4.0ms
(sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))
1.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

simplify156.0ms (0.6%)

Algorithm
egg-herbie
Rules
637×fma-def_binary32
530×associate-*r*_binary32
453×associate-*l*_binary32
240×times-frac_binary32
207×associate-/l*_binary32
Counts
116 → 182
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
050810133
116978952
254198952

prune474.0ms (1.9%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New20311214
Fresh13013
Picked101
Done000
Total21711228
Error
0.0b
Counts
228 → 11
Alt Table
StatusErrorProgram
1.0b
(*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (cbrt.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2))))))) (cbrt.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2))))))))) (cbrt.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
0.7b
(*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
0.6b
(/.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
0.5b
(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 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
0.6b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (fabs.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2))))))) (sqrt.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
0.9b
(*.f32 (*.f32 (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))))) (cbrt.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
2.5b
(exp.f32 (log.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
0.9b
(*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (cbrt.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
5.9b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (log.f32 (exp.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
1.1b
(*.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))) (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
1.0b
(-.f32 (fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (sqrt.f32 (*.f32 ux (-.f32 2 ux))) (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (fma.f32 (*.f32 maxCos (*.f32 ux ux)) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (*.f32 (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 3)) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))))))) (fma.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos ux) (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux))))) (*.f32 1/2 (+.f32 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3))) (*.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))) (*.f32 (*.f32 maxCos maxCos) (pow.f32 ux 4)))) (*.f32 (*.f32 (*.f32 maxCos (*.f32 maxCos (*.f32 ux ux))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy)))) (+.f32 (sqrt.f32 (/.f32 1 (*.f32 ux (-.f32 2 ux)))) (sqrt.f32 (/.f32 1 (pow.f32 (*.f32 ux (-.f32 2 ux)) 3)))))))))
Compiler

Compiled 16177 to 9602 computations (40.6% saved)

localize90.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

series2.0s (7.8%)

Counts
4 → 88
Calls

4 calls:

1.4s
(*.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 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
503.0ms
(*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
27.0ms
(*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
7.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))

rewrite240.0ms (0.9%)

Algorithm
rewrite-expression-head
Rules
190×pow1_binary32
174×sqrt-div_binary32
114×frac-times_binary32
87×flip--_binary32
87×flip3--_binary32
Counts
4 → 284
Calls

4 calls:

44.0ms
(*.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 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
23.0ms
(*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
11.0ms
(*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
7.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))

simplify589.0ms (2.3%)

Algorithm
egg-herbie
Rules
681×*-commutative_binary32
424×+-commutative_binary32
418×fma-def_binary32
385×associate-*r*_binary32
382×associate-+r+_binary32
Counts
372 → 451
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0147746358
1482741492
2519641492

prune2.3s (9.2%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New4474451
Fresh4610
Picked101
Done000
Total45210462
Error
0.0b
Counts
462 → 10
Alt Table
StatusErrorProgram
0.5b
(cbrt.f32 (*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
2.5b
(exp.f32 (log.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
5.9b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (log.f32 (exp.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
2.7b
(cbrt.f32 (exp.f32 (+.f32 (log.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 (log.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))) (log.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))))
0.7b
(*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
0.9b
(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 (exp.f32 (log.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
1.3b
(cbrt.f32 (/.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 3) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))))) (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))))))) (*.f32 (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
0.9b
(*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (cbrt.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
1.1b
(*.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))) (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
0.6b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (fabs.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2))))))) (sqrt.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
Compiler

Compiled 76994 to 43967 computations (42.9% saved)

localize115.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
0.4b
(*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
0.5b
(pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2)
0.5b
(*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))

series1.6s (6.3%)

Counts
2 → 44
Calls

2 calls:

1.6s
(*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
8.0ms
(pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2)

rewrite72.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
54×sqrt-div_binary32
34×associate-*r/_binary32
28×frac-times_binary32
27×flip--_binary32
27×flip3--_binary32
Counts
2 → 77
Calls

2 calls:

26.0ms
(*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))))
3.0ms
(pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2)

simplify346.0ms (1.4%)

Algorithm
egg-herbie
Rules
694×*-commutative_binary32
411×associate-*r*_binary32
261×+-commutative_binary32
254×fma-def_binary32
231×associate-+r+_binary32
Counts
121 → 158
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0125120426
1361717158
2498717156
3490317156

prune1.6s (6.4%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New3842386
Fresh279
Picked011
Done000
Total38610396
Error
0.0b
Counts
396 → 10
Alt Table
StatusErrorProgram
0.5b
(cbrt.f32 (*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
2.5b
(exp.f32 (log.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
0.7b
(*.f32 (sin.f32 (*.f32 (*.f32 (*.f32 2 uy) (*.f32 (cbrt.f32 (PI.f32)) (cbrt.f32 (PI.f32)))) (cbrt.f32 (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))
0.9b
(cbrt.f32 (*.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (*.f32 (exp.f32 (log.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2)))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
2.7b
(cbrt.f32 (exp.f32 (+.f32 (log.f32 (*.f32 (log1p.f32 (expm1.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 2))) (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (+.f32 (log.f32 (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))) (log.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))))
1.3b
(cbrt.f32 (/.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) 3) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))))) (-.f32 (*.f32 4 (*.f32 (fma.f32 maxCos (*.f32 ux ux) ux) (fma.f32 maxCos (*.f32 ux ux) ux))) (*.f32 (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))) (fma.f32 ux ux (*.f32 (*.f32 ux maxCos) (fma.f32 maxCos ux 2))))))) (*.f32 (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))) (sqrt.f32 (+.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
0.9b
(*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))) (cbrt.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))))) (*.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))) (cbrt.f32 (sin.f32 (*.f32 2 (*.f32 (PI.f32) uy))))))
5.9b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (log.f32 (exp.f32 (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
1.1b
(*.f32 (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))) (sqrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 (*.f32 maxCos ux) 2))))))))
0.6b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (*.f32 (fabs.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2))))))) (sqrt.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 maxCos (*.f32 ux (fma.f32 maxCos ux 2)))))))))
Compiler

Compiled 67378 to 39578 computations (41.3% saved)

regimes11.1s (43.7%)

Accuracy

Total 0.4b remaining (81.1%)

Threshold costs 0.4b (81.1%)

Counts
495 → 1
Compiler

Compiled 353401 to 223198 computations (36.8% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
03366
14766
25166
35366
45466
55066

end1.0ms (0%)

Compiler

Compiled 45 to 31 computations (31.1% saved)

sample2.3s (9.3%)

Algorithm
intervals
Results
1.1s8000×body128valid
304.0ms8000×pre128true
Compiler

Compiled 742 to 436 computations (41.2% saved)

Profiling

Loading profile data...