Details

Time bar (total: 19.8s)

analyze3.6s (17.9%)

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 48 to 35 computations (27.1% saved)

sample216.0ms (1.1%)

Algorithm
intervals
Results
122.0ms256×body128valid
28.0ms256×pre128true
3.0ms32×pre128false
Compiler

Compiled 81 to 59 computations (27.2% saved)

simplify201.0ms (1%)

Algorithm
egg-herbie
Rules
1132×div-sub_binary32
619×times-frac_binary32
357×sub-neg_binary32
347×unsub-neg_binary32
271×associate-/l*_binary32
Counts
1 → 1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01839
13733
27231
312228
417128
519228
620928
728928
832628
940928
1049928
1191428
12166028
13159428
14156828
15166828
16182028
17199528
18150728
19176528
20153328
21153328
22153328
23153328
24153328
25153328
26134828

prune17.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.7b
Counts
2 → 2
Alt Table
StatusErrorProgram
0.8b
(+.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))
9.0b
(/.f32 (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
Compiler

Compiled 124 to 85 computations (31.5% saved)

localize70.0ms (0.4%)

Local error

Found 4 expressions with local error:

0.1b
(*.f32 (-.f32 1 u) normAngle)
0.1b
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
0.5b
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
1.4b
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))

rewrite329.0ms (1.7%)

Algorithm
rewrite-expression-head
Error
0.4b
Rules
42×add-sqr-sqrt_binary32
39×add-exp-log_binary32
32×associate-*r*_binary32
28×*-un-lft-identity_binary32
25×add-cbrt-cube_binary32
Counts
4 → 119
Calls

4 calls:

9.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
8.0ms
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
7.0ms
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))
7.0ms
(*.f32 (-.f32 1 u) normAngle)
Compiler

Compiled 3651 to 1996 computations (45.3% saved)

series340.0ms (1.7%)

Error
0.2b
Counts
4 → 48
Calls

4 calls:

118.0ms
(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
56.0ms
(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
50.0ms
(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))
30.0ms
(*.f32 (-.f32 1 u) normAngle)
Compiler

Compiled 4310 to 2882 computations (33.1% saved)

simplify139.0ms (0.7%)

Algorithm
egg-herbie
Rules
654×associate-*r*_binary32
561×associate-*l*_binary32
410×times-frac_binary32
280×associate-+r+_binary32
197×associate-+l+_binary32
Counts
167 → 137
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04614970
112474530
248384530
356254530

prune325.0ms (1.6%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New1289137
Fresh011
Picked101
Done000
Total12910139
Error
0.0b
Counts
139 → 10
Alt Table
StatusErrorProgram
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (+.f32 (*.f32 1/6 (/.f32 (*.f32 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 3)) (cos.f32 normAngle)) (sin.f32 normAngle))) (-.f32 1 (+.f32 (/.f32 (*.f32 (*.f32 u normAngle) (cos.f32 normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 u (*.f32 u (*.f32 normAngle normAngle)))))))))
9.0b
(/.f32 (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (/.f32 (*.f32 normAngle (-.f32 1 (pow.f32 u 3))) (+.f32 (*.f32 1 1) (+.f32 (*.f32 u u) (*.f32 1 u))))) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
0.5b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (-.f32 (+.f32 (*.f32 1/216 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 n0_i (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/24 (*.f32 n0_i (*.f32 (pow.f32 normAngle 4) (pow.f32 u 4)))) (+.f32 n0_i (+.f32 (*.f32 1/2 (*.f32 u (*.f32 normAngle (*.f32 normAngle n0_i)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/60 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))))) (+.f32 (*.f32 11/120 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle)))) (*.f32 n0_i (*.f32 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6)) 1/360))))))))))))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/720 (*.f32 (pow.f32 normAngle 6) (pow.f32 u 6)))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/12 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 u n0_i) (+.f32 (*.f32 1/2 (*.f32 n0_i (*.f32 u (*.f32 u (*.f32 normAngle normAngle))))) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))) 11/756) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4))) 5/72) (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))))))))))))))))
0.4b
(+.f32 (*.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.9b
(+.f32 (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle))) n1_i))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))))
6.2b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
Compiler

Compiled 4310 to 2368 computations (45.1% saved)

localize195.0ms (1%)

Local error

Found 4 expressions with local error:

0.2b
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
0.3b
(/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle))
0.5b
(*.f32 7/360 u)
0.5b
(*.f32 1/120 (pow.f32 u 5))

rewrite425.0ms (2.1%)

Algorithm
rewrite-expression-head
Error
0.0b
Rules
25×add-sqr-sqrt_binary32
22×add-exp-log_binary32
19×add-cbrt-cube_binary32
18×*-un-lft-identity_binary32
18×add-cube-cbrt_binary32
Counts
4 → 91
Calls

4 calls:

6.0ms
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
5.0ms
(*.f32 1/120 (pow.f32 u 5))
4.0ms
(/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle))
3.0ms
(*.f32 7/360 u)
Compiler

Compiled 5304 to 3394 computations (36% saved)

series259.0ms (1.3%)

Error
0.0b
Counts
4 → 24
Calls

4 calls:

117.0ms
(/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle))
45.0ms
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
22.0ms
(*.f32 1/120 (pow.f32 u 5))
20.0ms
(*.f32 7/360 u)
Compiler

Compiled 3450 to 2455 computations (28.8% saved)

simplify201.0ms (1%)

Algorithm
egg-herbie
Rules
361×cancel-sign-sub-inv_binary32
298×associate-*r*_binary32
295×associate--l+_binary32
251×associate-*l*_binary32
203×distribute-rgt-in_binary32
Counts
115 → 67
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02913752
16423436
222413352
348613349
449663349
549993349
649373349

prune262.0ms (1.3%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New65267
Fresh279
Picked101
Done000
Total68977
Error
0.0b
Counts
77 → 9
Alt Table
StatusErrorProgram
0.6b
(+.f32 (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (+.f32 (*.f32 1/6 (/.f32 (*.f32 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 3)) (cos.f32 normAngle)) (sin.f32 normAngle))) (-.f32 1 (+.f32 (/.f32 (*.f32 (*.f32 u normAngle) (cos.f32 normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 u (*.f32 u (*.f32 normAngle normAngle)))))))))
9.0b
(/.f32 (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
0.7b
(+.f32 (*.f32 (*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)))) (/.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
0.5b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (-.f32 (+.f32 (*.f32 1/216 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 n0_i (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/24 (*.f32 n0_i (*.f32 (pow.f32 normAngle 4) (pow.f32 u 4)))) (+.f32 n0_i (+.f32 (*.f32 1/2 (*.f32 u (*.f32 normAngle (*.f32 normAngle n0_i)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/60 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))))) (+.f32 (*.f32 11/120 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle)))) (*.f32 n0_i (*.f32 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6)) 1/360))))))))))))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/720 (*.f32 (pow.f32 normAngle 6) (pow.f32 u 6)))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/12 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 u n0_i) (+.f32 (*.f32 1/2 (*.f32 n0_i (*.f32 u (*.f32 u (*.f32 normAngle normAngle))))) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))) 11/756) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4))) 5/72) (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))))))))))))))))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle))) n1_i))
6.2b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
Compiler

Compiled 3590 to 2358 computations (34.3% saved)

localize554.0ms (2.8%)

Local error

Found 4 expressions with local error:

0.1b
(*.f32 normAngle (*.f32 normAngle n0_i))
0.1b
(*.f32 u (*.f32 u (*.f32 normAngle normAngle)))
0.2b
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
1.1b
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))

rewrite984.0ms (5%)

Algorithm
rewrite-expression-head
Error
0.0b
Rules
29×add-cbrt-cube_binary32
29×add-exp-log_binary32
27×pow1_binary32
15×cbrt-unprod_binary32
15×prod-exp_binary32
Counts
4 → 87
Calls

4 calls:

9.0ms
(*.f32 u (*.f32 u (*.f32 normAngle normAngle)))
9.0ms
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
5.0ms
(*.f32 normAngle (*.f32 normAngle n0_i))
4.0ms
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))
Compiler

Compiled 19703 to 12164 computations (38.3% saved)

series778.0ms (3.9%)

Error
0.0b
Counts
4 → 29
Calls

4 calls:

194.0ms
(*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))
185.0ms
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))
143.0ms
(*.f32 normAngle (*.f32 normAngle n0_i))
130.0ms
(*.f32 u (*.f32 u (*.f32 normAngle normAngle)))
Compiler

Compiled 16635 to 11318 computations (32% saved)

simplify305.0ms (1.5%)

Algorithm
egg-herbie
Rules
503×associate-*r*_binary32
456×cancel-sign-sub-inv_binary32
394×associate-*l*_binary32
249×unswap-sqr_binary32
207×*-commutative_binary32
Counts
116 → 63
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
032612689
177311938
2300710858
3470510844
4496710844

prune366.0ms (1.8%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New63063
Fresh088
Picked011
Done000
Total63972
Error
0.0b
Counts
72 → 9
Alt Table
StatusErrorProgram
0.6b
(+.f32 (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (+.f32 (*.f32 1/6 (/.f32 (*.f32 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 3)) (cos.f32 normAngle)) (sin.f32 normAngle))) (-.f32 1 (+.f32 (/.f32 (*.f32 (*.f32 u normAngle) (cos.f32 normAngle)) (sin.f32 normAngle)) (*.f32 1/2 (*.f32 u (*.f32 u (*.f32 normAngle normAngle)))))))))
9.0b
(/.f32 (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
0.7b
(+.f32 (*.f32 (*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)))) (/.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
0.5b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (-.f32 (+.f32 (*.f32 1/216 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 n0_i (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/24 (*.f32 n0_i (*.f32 (pow.f32 normAngle 4) (pow.f32 u 4)))) (+.f32 n0_i (+.f32 (*.f32 1/2 (*.f32 u (*.f32 normAngle (*.f32 normAngle n0_i)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/60 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))))) (+.f32 (*.f32 11/120 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle)))) (*.f32 n0_i (*.f32 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6)) 1/360))))))))))))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/720 (*.f32 (pow.f32 normAngle 6) (pow.f32 u 6)))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/12 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 u n0_i) (+.f32 (*.f32 1/2 (*.f32 n0_i (*.f32 u (*.f32 u (*.f32 normAngle normAngle))))) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))) 11/756) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4))) 5/72) (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))))))))))))))))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle))) n1_i))
6.2b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (log.f32 (exp.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
Compiler

Compiled 8010 to 5130 computations (36% saved)

localize56.0ms (0.3%)

Local error

Found 4 expressions with local error:

0.1b
(-.f32 normAngle (*.f32 u normAngle))
0.1b
(*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle)))
0.3b
(/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))
1.1b
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))

rewrite213.0ms (1.1%)

Algorithm
rewrite-expression-head
Error
0.0b
Rules
33×add-sqr-sqrt_binary32
29×*-un-lft-identity_binary32
28×times-frac_binary32
28×add-cube-cbrt_binary32
13×associate-*r*_binary32
Counts
4 → 100
Calls

4 calls:

9.0ms
(*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle)))
5.0ms
(/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))
4.0ms
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))
3.0ms
(-.f32 normAngle (*.f32 u normAngle))
Compiler

Compiled 2960 to 487 computations (83.5% saved)

series353.0ms (1.8%)

Error
0.0b
Counts
4 → 48
Calls

4 calls:

106.0ms
(*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle)))
56.0ms
(/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))
51.0ms
(/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))
32.0ms
(-.f32 normAngle (*.f32 u normAngle))
Compiler

Compiled 4057 to 2475 computations (39% saved)

simplify150.0ms (0.8%)

Algorithm
egg-herbie
Rules
515×associate-*r*_binary32
404×associate-*l*_binary32
285×associate-+r+_binary32
278×*-commutative_binary32
257×+-commutative_binary32
Counts
148 → 83
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04625011
112304696
247494696
350514696

prune170.0ms (0.9%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New80383
Fresh347
Picked101
Done011
Total84892
Error
0.0b
Counts
92 → 8
Alt Table
StatusErrorProgram
0.7b
(+.f32 (*.f32 (*.f32 (*.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)))) (/.f32 (cbrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.8b
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (sqrt.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)))) n1_i))
0.5b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (-.f32 (+.f32 (*.f32 1/216 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 n0_i (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/5040 (*.f32 (pow.f32 u 7) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/24 (*.f32 n0_i (*.f32 (pow.f32 normAngle 4) (pow.f32 u 4)))) (+.f32 n0_i (+.f32 (*.f32 1/2 (*.f32 u (*.f32 normAngle (*.f32 normAngle n0_i)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/60 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))))) (+.f32 (*.f32 11/120 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 1/6 (*.f32 n0_i (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle)))) (*.f32 n0_i (*.f32 (*.f32 (pow.f32 u 5) (pow.f32 normAngle 6)) 1/360))))))))))))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 5) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/720 (*.f32 (pow.f32 normAngle 6) (pow.f32 u 6)))) (+.f32 (*.f32 1/120 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 6)))) (+.f32 (*.f32 1/12 (*.f32 n0_i (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4)))) (+.f32 (*.f32 n0_i (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle)))) (+.f32 (*.f32 1/12 (*.f32 (*.f32 u u) (*.f32 n0_i (pow.f32 normAngle 4)))) (+.f32 (*.f32 u n0_i) (+.f32 (*.f32 1/2 (*.f32 n0_i (*.f32 u (*.f32 u (*.f32 normAngle normAngle))))) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6))) 11/756) (+.f32 (*.f32 (*.f32 u (*.f32 n0_i (pow.f32 normAngle 4))) 5/72) (*.f32 1/72 (*.f32 u (*.f32 u (*.f32 n0_i (pow.f32 normAngle 6)))))))))))))))))
0.6b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 n0_i (+.f32 (-.f32 1 (+.f32 (*.f32 1/2 (*.f32 u (*.f32 u (*.f32 normAngle normAngle)))) (/.f32 (*.f32 (*.f32 u normAngle) (cos.f32 normAngle)) (sin.f32 normAngle)))) (*.f32 1/6 (/.f32 (*.f32 (pow.f32 (*.f32 u normAngle) 3) (cos.f32 normAngle)) (sin.f32 normAngle))))))
0.9b
(+.f32 (*.f32 n1_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))) (*.f32 (/.f32 n0_i (*.f32 (cbrt.f32 (sin.f32 normAngle)) (cbrt.f32 (sin.f32 normAngle)))) (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (cbrt.f32 (sin.f32 normAngle)))))
0.6b
(+.f32 (*.f32 (*.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle))) n0_i) (*.f32 n1_i (+.f32 (+.f32 (*.f32 (pow.f32 normAngle 4) (+.f32 (*.f32 1/120 (pow.f32 u 5)) (*.f32 7/360 u))) u) (-.f32 (*.f32 1/6 (*.f32 u (*.f32 normAngle normAngle))) (+.f32 (*.f32 1/6 (*.f32 (pow.f32 u 3) (*.f32 normAngle normAngle))) (*.f32 1/36 (*.f32 (pow.f32 u 3) (pow.f32 normAngle 4))))))))
0.7b
(+.f32 (*.f32 n1_i (*.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (/.f32 (sqrt.f32 (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)))) (*.f32 n0_i (/.f32 (sin.f32 (-.f32 normAngle (*.f32 u normAngle))) (sin.f32 normAngle))))
9.0b
(/.f32 (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
Compiler

Compiled 2654 to 1147 computations (56.8% saved)

regimes5.1s (25.8%)

Accuracy

Total 0.2b remaining (84.6%)

Threshold costs 0.2b (84.6%)

Compiler

Compiled 73168 to 46022 computations (37.1% saved)

simplify31.0ms (0.2%)

Algorithm
egg-herbie
Rules
98×*-commutative_binary32
73×+-commutative_binary32
52×distribute-lft-neg-in_binary32
52×distribute-rgt-neg-in_binary32
47×sub-neg_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0117373
1200373
2212373
3232373
4261373
5312373
6380373
7465373
8540373
9602373
10622373
11630373
12631373
13623373

end10.0ms (0%)

Compiler

Compiled 253 to 175 computations (30.8% saved)

sample4.2s (21.2%)

Algorithm
intervals
Results
1.6s8000×body128valid
460.0ms8000×pre128true
51.0ms969×pre128false
Compiler

Compiled 888 to 593 computations (33.2% saved)

Profiling

Loading profile data...