Details

Time bar (total: 10.3s)

analyze1.6s (15.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%0.8%99.2%0
0%0.8%99.2%1
0%0.8%99.2%2
0%0.8%99.2%3
0%0.8%99.2%4
0%0.8%99.2%5
0.2%0.4%99.4%6
0.2%0.4%99.4%7
0.2%0.4%99.4%8
0.2%0.4%99.4%9
0.3%0.2%99.5%10
0.3%0.2%99.5%11
0.3%0.2%99.5%12
0.3%0.2%99.5%13
0.3%0.1%99.6%14
Compiler

Compiled 62 to 45 computations (27.4% saved)

sample3.3s (32.2%)

Alt Table
StatusErrorProgram
0.9b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
Results
2.8s8256×body128valid
381.0ms1046×body128invalid
Compiler

Compiled 211 to 150 computations (28.9% saved)

localize54.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
0.2b
(*.f32 (-.f32 1 u) normAngle)
0.5b
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
1.5b
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))

series104.0ms (1%)

Counts
4 → 96
Calls

4 calls:

55.0ms
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
24.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
20.0ms
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))
4.0ms
(*.f32 (-.f32 1 u) normAngle)

rewrite74.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
625×prod-diff_binary32
274×log1p-udef_binary32
157×add-sqr-sqrt_binary32
144×log1p-expm1-u_binary32
144×expm1-log1p-u_binary32
Counts
4 → 90
Calls

4 calls:

72.0ms
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
72.0ms
(*.f32 (-.f32 1 u) normAngle)
72.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
72.0ms
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01549
131249
2378649
3536549
000
100

prune244.0ms (2.4%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New17511186
Fresh000
Picked101
Done000
Total17611187
Error
0.2b
Counts
187 → 11
Alt Table
StatusErrorProgram
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) 2) n1_i))
0.8b
(+.f32 (-.f32 (+.f32 (*.f32 1/2 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 2)))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 n0_i (pow.f32 normAngle 2)))) n0_i)) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 u (pow.f32 normAngle 2)))) (+.f32 (*.f32 n0_i u) (*.f32 1/2 (*.f32 (pow.f32 u 2) (*.f32 n0_i (pow.f32 normAngle 2))))))) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.9b
(+.f32 (*.f32 (expm1.f32 (log1p.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sin.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.9b
(+.f32 (*.f32 (*.f32 (sin.f32 (/.f32 (*.f32 (-.f32 1 (pow.f32 u 3)) normAngle) (+.f32 1 (fma.f32 u u u)))) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (pow.f32 (cbrt.f32 (sin.f32 normAngle)) 2)) (cbrt.f32 (sin.f32 normAngle))) n1_i))
0.8b
(+.f32 (*.f32 (-.f32 1 (+.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 (pow.f32 u 2) (pow.f32 normAngle 2))))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sin.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.5b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
1.4b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (pow.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) 3) 1/3) n1_i))
Compiler

Compiled 6448 to 3594 computations (44.3% saved)

localize240.0ms (2.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
0.1b
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
0.2b
(*.f32 (-.f32 1 u) normAngle)
0.5b
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))

series54.0ms (0.5%)

Counts
4 → 36
Calls

4 calls:

25.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
15.0ms
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
10.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
4.0ms
(*.f32 (-.f32 1 u) normAngle)

rewrite71.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
409×prod-diff_binary32
303×log1p-udef_binary32
177×add-sqr-sqrt_binary32
168×log1p-expm1-u_binary32
168×expm1-log1p-u_binary32
Counts
4 → 75
Calls

4 calls:

69.0ms
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
69.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
69.0ms
(*.f32 (-.f32 1 u) normAngle)
69.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01841
137741
2411141
3523941
000
100

prune415.0ms (4%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New1092111
Fresh1910
Picked101
Done000
Total11111122
Error
0.0b
Counts
122 → 11
Alt Table
StatusErrorProgram
0.8b
(+.f32 (*.f32 (-.f32 1 (+.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 (pow.f32 u 2) (pow.f32 normAngle 2))))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.5b
(+.f32 (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) 2) n1_i))
0.8b
(+.f32 (-.f32 (+.f32 (*.f32 1/2 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 2)))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 n0_i (pow.f32 normAngle 2)))) n0_i)) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 u (pow.f32 normAngle 2)))) (+.f32 (*.f32 n0_i u) (*.f32 1/2 (*.f32 (pow.f32 u 2) (*.f32 n0_i (pow.f32 normAngle 2))))))) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.9b
(+.f32 (*.f32 (expm1.f32 (log1p.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sin.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.9b
(+.f32 (*.f32 (*.f32 (sin.f32 (/.f32 (*.f32 (-.f32 1 (pow.f32 u 3)) normAngle) (+.f32 1 (fma.f32 u u u)))) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (pow.f32 (cbrt.f32 (sin.f32 normAngle)) 2)) (cbrt.f32 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n1_i))
0.4b
(+.f32 (*.f32 (-.f32 1 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
1.4b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (pow.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) 3) 1/3) n1_i))
Compiler

Compiled 12667 to 9413 computations (25.7% saved)

localize195.0ms (1.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
0.1b
(*.f32 (-.f32 1 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))) n0_i)
0.1b
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
1.4b
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))

series88.0ms (0.9%)

Counts
4 → 28
Calls

4 calls:

39.0ms
(*.f32 (-.f32 1 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))) n0_i)
24.0ms
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))
15.0ms
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
11.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))

rewrite86.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
551×prod-diff_binary32
199×add-sqr-sqrt_binary32
189×log1p-expm1-u_binary32
189×expm1-log1p-u_binary32
186×add-log-exp_binary32
Counts
4 → 94
Calls

4 calls:

82.0ms
(*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))
82.0ms
(*.f32 (-.f32 1 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))) n0_i)
82.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
82.0ms
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02054
141854
2491654
3595854
000
100

prune558.0ms (5.4%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New1202122
Fresh1910
Picked101
Done000
Total12211133
Error
0.0b
Counts
133 → 11
Alt Table
StatusErrorProgram
0.8b
(+.f32 (*.f32 (-.f32 1 (+.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 (pow.f32 u 2) (pow.f32 normAngle 2))))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.5b
(+.f32 (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) 2) n1_i))
0.8b
(+.f32 (-.f32 (+.f32 (*.f32 1/2 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 2)))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 n0_i (pow.f32 normAngle 2)))) n0_i)) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 u (pow.f32 normAngle 2)))) (+.f32 (*.f32 n0_i u) (*.f32 1/2 (*.f32 (pow.f32 u 2) (*.f32 n0_i (pow.f32 normAngle 2))))))) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (pow.f32 (cbrt.f32 (sin.f32 normAngle)) 2)) (cbrt.f32 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n1_i))
0.4b
(+.f32 (*.f32 (-.f32 1 (pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
0.5b
(+.f32 (*.f32 (-.f32 1 (log.f32 (exp.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
0.9b
(+.f32 (*.f32 (expm1.f32 (log1p.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sin.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.4b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (pow.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) 3) 1/3) n1_i))
Compiler

Compiled 14046 to 9846 computations (29.9% saved)

localize200.0ms (1.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f32 (-.f32 1 (pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)) n0_i)
0.1b
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
0.5b
(pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)
1.4b
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))

series189.0ms (1.8%)

Counts
4 → 56
Calls

4 calls:

78.0ms
(pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)
75.0ms
(*.f32 (-.f32 1 (pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)) n0_i)
24.0ms
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))
12.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))

rewrite91.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
548×prod-diff_binary32
181×add-sqr-sqrt_binary32
173×log1p-expm1-u_binary32
173×expm1-log1p-u_binary32
170×add-log-exp_binary32
Counts
4 → 149
Calls

4 calls:

87.0ms
(*.f32 (-.f32 1 (pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)) n0_i)
87.0ms
(*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))
87.0ms
(pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)
87.0ms
(/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01958
138058
2452358
3558358
000
100

prune893.0ms (8.7%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New2050205
Fresh01010
Picked011
Done000
Total20511216
Error
0.0b
Counts
216 → 11
Alt Table
StatusErrorProgram
0.8b
(+.f32 (*.f32 (-.f32 1 (+.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 u normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 (pow.f32 u 2) (pow.f32 normAngle 2))))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.5b
(+.f32 (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) 2) n1_i))
0.8b
(+.f32 (-.f32 (+.f32 (*.f32 1/2 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 2)))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 n0_i (pow.f32 normAngle 2)))) n0_i)) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 u (pow.f32 normAngle 2)))) (+.f32 (*.f32 n0_i u) (*.f32 1/2 (*.f32 (pow.f32 u 2) (*.f32 n0_i (pow.f32 normAngle 2))))))) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (pow.f32 (cbrt.f32 (sin.f32 normAngle)) 2)) (cbrt.f32 (sin.f32 normAngle))) n1_i))
1.0b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (/.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sqrt.f32 (sin.f32 normAngle))) (sqrt.f32 (sin.f32 normAngle))) n1_i))
0.4b
(+.f32 (*.f32 (-.f32 1 (pow.f32 (sqrt.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))) 2)) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
0.5b
(+.f32 (*.f32 (-.f32 1 (log.f32 (exp.f32 (/.f32 (*.f32 (cos.f32 normAngle) (*.f32 normAngle u)) (sin.f32 normAngle))))) n0_i) (*.f32 (-.f32 (+.f32 (*.f32 1/120 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4))) (+.f32 (*.f32 31/15120 (*.f32 u (pow.f32 normAngle 6))) (+.f32 (*.f32 1/720 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6))) (+.f32 u (+.f32 (*.f32 7/360 (*.f32 u (pow.f32 normAngle 4))) (*.f32 1/6 (*.f32 u (pow.f32 normAngle 2)))))))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 2))) (+.f32 (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6))) (+.f32 (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))) (*.f32 7/2160 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6))))))) n1_i))
0.9b
(+.f32 (*.f32 (expm1.f32 (log1p.f32 (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 u))) (sin.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
1.4b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (pow.f32 (pow.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) 3) 1/3) n1_i))
Compiler

Compiled 22588 to 15756 computations (30.2% saved)

regimes1.4s (13.4%)

Accuracy

Total 0.2b remaining (81.8%)

Threshold costs 0.2b (81.8%)

Counts
132 → 1
Compiler

Compiled 38008 to 27887 computations (26.6% saved)

simplify10.0ms (0.1%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
062154
1106154
2133152
3168152
4209152
5254152
6285152
7300152
8306152
9307152
10303152

end443.0ms (4.3%)

Compiler

Compiled 822 to 601 computations (26.9% saved)

Profiling

Loading profile data...