Details

Time bar (total: 13.6s)

analyze587.0ms (4.3%)

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)

sample2.5s (18.3%)

Alt Table
StatusErrorProgram
12.8b
(*.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))))))
Results
2.4s8256×body128valid
Compiler

Compiled 186 to 134 computations (28% saved)

localize49.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

series335.0ms (2.5%)

Counts
4 → 92
Calls

4 calls:

254.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))))))
68.0ms
(-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))
9.0ms
(*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite95.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
321×log1p-udef_binary32
185×add-sqr-sqrt_binary32
177×log1p-expm1-u_binary32
177×expm1-log1p-u_binary32
173×add-log-exp_binary32
Counts
4 → 94
Calls

4 calls:

92.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
92.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))))))
92.0ms
(*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))
92.0ms
(-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01767
137061
2467261
3511461
000
100

prune285.0ms (2.1%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New17412186
Fresh000
Picked101
Done000
Total17512187
Error
0.3b
Counts
187 → 12
Alt Table
StatusErrorProgram
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (/.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 6)) (+.f32 1 (+.f32 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2) (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 4))))))
5.0b
(-.f32 (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 6))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 5))))) (+.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (+.f32 (*.f32 (*.f32 (sin.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 (*.f32 (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))) (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3)))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 4))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))))) (*.f32 3/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 4))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 5)))))))))) (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 3))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 3))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 5))))) (+.f32 (*.f32 3/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 3) (pow.f32 ux 5))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 5))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))))) (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))))))))))))
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (pow.f32 (pow.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2)) 3) 1/3)))
7.9b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (*.f32 (-.f32 2 (*.f32 2 maxCos)) ux)))
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (/.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 4)) (+.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2)))))
1.1b
(-.f32 (+.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (+.f32 (*.f32 (*.f32 (sin.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 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 3))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3)))))) (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux)) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 4))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3))))) (+.f32 (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))))) (*.f32 1/2 (*.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))) (sqrt.f32 (/.f32 1 (pow.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)) 3)))))))))
1.4b
(-.f32 (+.f32 (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos (pow.f32 ux 2))))) (*.f32 (sqrt.f32 (/.f32 1 (-.f32 (*.f32 2 ux) (pow.f32 ux 2)))) (*.f32 (sin.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (*.f32 maxCos ux))))
1.5b
(-.f32 (+.f32 (*.f32 4/15 (*.f32 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 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 (*.f32 8/315 (*.f32 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7)) (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))))))))))
14.4b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (pow.f32 (pow.f32 (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) 2) 3))))
12.9b
(pow.f32 (cbrt.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2))))) 3)
0.5b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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)))))))
12.8b
(*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 2)) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
Compiler

Compiled 9955 to 7161 computations (28.1% saved)

localize84.0ms (0.6%)

Local error

Found 4 expressions with local error:

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

series266.0ms (1.9%)

Counts
4 → 56
Calls

4 calls:

250.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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)))))))
8.0ms
(*.f32 maxCos (pow.f32 ux 2))
5.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
3.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))

rewrite74.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
458×log1p-udef_binary32
247×log1p-expm1-u_binary32
247×expm1-log1p-u_binary32
236×add-cube-cbrt_binary32
236×add-cbrt-cube_binary32
Counts
4 → 57
Calls

4 calls:

72.0ms
(sin.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
72.0ms
(*.f32 maxCos (pow.f32 ux 2))
72.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
72.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (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)))))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02376
151670
2473470
3567470
000
100

prune340.0ms (2.5%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New1058113
Fresh10111
Picked101
Done000
Total1169125
Error
0.1b
Counts
125 → 9
Alt Table
StatusErrorProgram
0.4b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)))
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (/.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 4)) (+.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2)))))
1.1b
(pow.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 2)
0.8b
(pow.f32 (cbrt.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 3)
0.4b
(*.f32 (sin.f32 (cbrt.f32 (*.f32 (pow.f32 (*.f32 uy 2) 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)))))))
15.3b
(*.f32 (sin.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 uy) 2) (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)))))))
0.7b
(*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 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)))))))
0.9b
(*.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (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)))))))
2.3b
(exp.f32 (log.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))))
Compiler

Compiled 7188 to 5049 computations (29.8% saved)

localize88.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)
0.3b
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2))
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))
0.6b
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)

series1.4s (10.6%)

Counts
4 → 80
Calls

4 calls:

1.3s
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2))
157.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)
13.0ms
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)
3.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite93.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
695×prod-diff_binary32
220×add-sqr-sqrt_binary32
213×log1p-expm1-u_binary32
213×expm1-log1p-u_binary32
207×add-cbrt-cube_binary32
Counts
4 → 63
Calls

4 calls:

91.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)
91.0ms
(*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2))
91.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
91.0ms
(pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022104
1464102
24845102
36149102
000
100

prune462.0ms (3.4%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New1367143
Fresh358
Picked101
Done000
Total14012152
Error
0.0b
Counts
152 → 12
Alt Table
StatusErrorProgram
5.3b
(cbrt.f32 (*.f32 8 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (pow.f32 uy 3)) (sqrt.f32 (pow.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))))) 3)))))
1.1b
(pow.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 2)
2.2b
(cbrt.f32 (*.f32 (-.f32 (+.f32 (*.f32 8 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 208/15 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7)))) (+.f32 (*.f32 1312/189 (*.f32 (pow.f32 uy 9) (pow.f32 (PI.f32) 9))) (*.f32 16 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)))
0.6b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (*.f32 (pow.f32 (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux)))))) 2) 3/2) (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux)))))) 3/2))))
0.9b
(cbrt.f32 (pow.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/4)) 2))
0.9b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (pow.f32 (cbrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3)) 3) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)))
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (/.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 4)) (+.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2)))))
0.8b
(pow.f32 (cbrt.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 3)
15.3b
(*.f32 (sin.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 uy) 2) (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)))))))
0.7b
(*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 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)))))))
1.3b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (exp.f32 (*.f32 3/2 (log.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))))))))
0.5b
(cbrt.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2))) 3))
Compiler

Compiled 17485 to 12922 computations (26.1% saved)

localize90.0ms (0.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)
0.4b
(*.f32 (*.f32 uy 2) (PI.f32))
0.4b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)))
0.7b
(pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2))) 3)

series1.5s (11%)

Counts
4 → 100
Calls

4 calls:

1.2s
(pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2))) 3)
203.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)))
119.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)
4.0ms
(*.f32 (*.f32 uy 2) (PI.f32))

rewrite82.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
414×log1p-udef_binary32
235×add-sqr-sqrt_binary32
229×log1p-expm1-u_binary32
229×expm1-log1p-u_binary32
222×add-cbrt-cube_binary32
Counts
4 → 63
Calls

4 calls:

79.0ms
(pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)
79.0ms
(*.f32 (*.f32 uy 2) (PI.f32))
79.0ms
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2)))
79.0ms
(pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2))) 3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023138
1494126
24698126
35448126
000
100

prune458.0ms (3.4%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New1612163
Fresh11011
Picked011
Done000
Total16213175
Error
0.0b
Counts
175 → 13
Alt Table
StatusErrorProgram
5.3b
(cbrt.f32 (*.f32 8 (*.f32 (*.f32 (pow.f32 (PI.f32) 3) (pow.f32 uy 3)) (sqrt.f32 (pow.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))))) 3)))))
1.1b
(pow.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 2)
2.2b
(cbrt.f32 (*.f32 (-.f32 (+.f32 (*.f32 8 (*.f32 (pow.f32 uy 3) (pow.f32 (PI.f32) 3))) (*.f32 208/15 (*.f32 (pow.f32 uy 7) (pow.f32 (PI.f32) 7)))) (+.f32 (*.f32 1312/189 (*.f32 (pow.f32 uy 9) (pow.f32 (PI.f32) 9))) (*.f32 16 (*.f32 (pow.f32 uy 5) (pow.f32 (PI.f32) 5))))) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2)))) 3/2)))
0.6b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (*.f32 (pow.f32 (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux)))))) 2) 3/2) (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux)))))) 3/2))))
0.5b
(cbrt.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/2))) 3))
3.9b
(cbrt.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (-.f32 (+.f32 (*.f32 3 (/.f32 (*.f32 maxCos (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos)))) (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (+.f32 (*.f32 3/2 (/.f32 (*.f32 (pow.f32 maxCos 2) (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux)))))) (-.f32 2 (*.f32 2 maxCos)))) (*.f32 3/2 (/.f32 (*.f32 ux (exp.f32 (*.f32 3/2 (+.f32 (log.f32 (-.f32 2 (*.f32 2 maxCos))) (log.f32 ux))))) (-.f32 2 (*.f32 2 maxCos)))))))) 3))
12.8b
(*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (/.f32 (-.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 4)) (+.f32 1 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2)))))
0.8b
(pow.f32 (cbrt.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 (fma.f32 2 (*.f32 maxCos ux) (pow.f32 (*.f32 maxCos ux) 2))))))) 3)
15.3b
(*.f32 (sin.f32 (log.f32 (pow.f32 (pow.f32 (exp.f32 uy) 2) (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)))))))
0.7b
(*.f32 (sin.f32 (pow.f32 (sqrt.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 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)))))))
1.3b
(cbrt.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3) (exp.f32 (*.f32 3/2 (log.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))))))))
0.9b
(cbrt.f32 (pow.f32 (*.f32 (pow.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) 3/2) (pow.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (+.f32 2 (*.f32 maxCos ux))))) 3/4)) 2))
0.6b
(cbrt.f32 (pow.f32 (*.f32 (sin.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (cbrt.f32 (*.f32 (pow.f32 (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (fma.f32 maxCos ux 2))))) 2) 3/2) (pow.f32 (cbrt.f32 (-.f32 (*.f32 2 (fma.f32 maxCos (*.f32 ux ux) ux)) (fma.f32 ux ux (*.f32 (*.f32 maxCos ux) (fma.f32 maxCos ux 2))))) 3/2)))) 3))
Compiler

Compiled 18298 to 13330 computations (27.2% saved)

regimes4.5s (32.6%)

Accuracy

Total 0.4b remaining (81.6%)

Threshold costs 0.4b (81.6%)

Counts
204 → 1
Compiler

Compiled 104153 to 76919 computations (26.1% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02659
13359
23859
34059
44159
54159

end367.0ms (2.7%)

Compiler

Compiled 728 to 522 computations (28.3% saved)

Profiling

Loading profile data...