Details

Time bar (total: 2.9s)

analyze1.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%0.1%99.9%0
0.1%0%99.9%1
Compiler

Compiled 33 to 24 computations (27.3% saved)

sample1.6s (55.8%)

Results
1.6s8256×body256valid

preprocess68.0ms (2.3%)

Algorithm
egg-herbie
Rules
601×fma-def_binary32
498×fma-neg_binary32
174×cancel-sign-sub-inv_binary32
94×sub-neg_binary32
89×unsub-neg_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01640
14032
210632
322232
454032
5115232
6198032
7231832
8239832
9240932
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
(+.f32 (-.f32 1 uy) (*.f32 uy maxCos))
(+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux))
(+.f32 (-.f32 1 ux) (*.f32 ux uy))
Outputs
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
(fma.f32 ux maxCos (-.f32 1 ux))
(+.f32 (-.f32 1 uy) (*.f32 uy maxCos))
(+.f32 (-.f32 1 uy) (*.f32 maxCos uy))
(fma.f32 maxCos uy (-.f32 1 uy))
(-.f32 (fma.f32 maxCos uy 1) uy)
(+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux))
(+.f32 (*.f32 ux maxCos) (-.f32 1 maxCos))
(fma.f32 ux maxCos (-.f32 1 maxCos))
(-.f32 (fma.f32 ux maxCos 1) maxCos)
(fma.f32 maxCos (+.f32 ux -1) 1)
(+.f32 (-.f32 1 ux) (*.f32 ux uy))
(fma.f32 ux uy (-.f32 1 ux))
(-.f32 (fma.f32 ux uy 1) ux)
(fma.f32 ux (-.f32 uy 1) 1)
Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify23.0ms (0.8%)

Algorithm
egg-herbie
Rules
199×fma-def_binary32
151×fma-neg_binary32
47×cancel-sign-sub-inv_binary32
34×sub-neg_binary32
26×unsub-neg_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0710
1158
2358
3728
41678
53638
66268
77688
88008
98058
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Outputs
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
(fma.f32 ux maxCos (-.f32 1 ux))
(-.f32 (fma.f32 ux maxCos 1) ux)

eval1.0ms (0%)

Compiler

Compiled 16 to 10 computations (37.5% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(-.f32 (fma.f32 ux maxCos 1) ux)
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Compiler

Compiled 19 to 13 computations (31.6% saved)

localize21.0ms (0.7%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Compiler

Compiled 19 to 10 computations (47.4% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
ux
@-inf
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
1.0ms
ux
@inf
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
1.0ms
ux
@0
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0ms
maxCos
@inf
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0ms
maxCos
@-inf
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))

rewrite60.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
897×pow1_binary32
836×add-log-exp_binary32
836×log1p-expm1-u_binary32
836×expm1-log1p-u_binary32
820×add-exp-log_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0710
11548
222158
Stop Event
node limit
Counts
1 → 39
Calls
Call 1
Inputs
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f32 1 (*.f32 ux (-.f32 1 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (+.f32 1 (fma.f32 ux maxCos (-.f32 1 ux))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (/.f32 (pow.f32 (-.f32 1 ux) 2) (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))) (/.f32 (pow.f32 (*.f32 ux maxCos) 2) (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (+.f32 (*.f32 ux maxCos) 1) ux)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (fma.f32 ux maxCos (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) (pow.f32 (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) 2) (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) (sqrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (pow.f32 (-.f32 1 ux) 3) (pow.f32 (*.f32 ux maxCos) 3)) (/.f32 1 (+.f32 (pow.f32 (-.f32 1 ux) 2) (*.f32 (*.f32 ux maxCos) (-.f32 (*.f32 ux maxCos) (-.f32 1 ux))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 (pow.f32 (-.f32 1 ux) 2) (pow.f32 (*.f32 ux maxCos) 2)) (/.f32 1 (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 (pow.f32 (-.f32 1 ux) 2) (*.f32 (*.f32 ux maxCos) (-.f32 (*.f32 ux maxCos) (-.f32 1 ux)))) (+.f32 (pow.f32 (-.f32 1 ux) 3) (pow.f32 (*.f32 ux maxCos) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (-.f32 1 (+.f32 ux (*.f32 ux maxCos))) (-.f32 (pow.f32 (-.f32 1 ux) 2) (pow.f32 (*.f32 ux maxCos) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 (pow.f32 (-.f32 1 ux) 3) (pow.f32 (*.f32 ux maxCos) 3)) (+.f32 (pow.f32 (-.f32 1 ux) 2) (*.f32 (*.f32 ux maxCos) (-.f32 (*.f32 ux maxCos) (-.f32 1 ux)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 (pow.f32 (-.f32 1 ux) 3) (pow.f32 (*.f32 ux maxCos) 3)) (+.f32 (pow.f32 (*.f32 ux maxCos) 2) (-.f32 (pow.f32 (-.f32 1 ux) 2) (*.f32 (*.f32 (-.f32 1 ux) ux) maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (-.f32 1 ux) 2) (pow.f32 (*.f32 ux maxCos) 2)) (-.f32 1 (+.f32 ux (*.f32 ux maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (+.f32 (pow.f32 (-.f32 1 ux) 3) (pow.f32 (*.f32 ux maxCos) 3))) (neg.f32 (+.f32 (pow.f32 (-.f32 1 ux) 2) (*.f32 (*.f32 ux maxCos) (-.f32 (*.f32 ux maxCos) (-.f32 1 ux))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 (pow.f32 (-.f32 1 ux) 2) (pow.f32 (*.f32 ux maxCos) 2))) (neg.f32 (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (+.f32 1 (+.f32 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos))) (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (*.f32 ux maxCos) 2) (pow.f32 (-.f32 1 ux) 2)) (-.f32 (*.f32 ux maxCos) (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (fma.f32 ux maxCos (-.f32 1 ux))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (fma.f32 ux maxCos (-.f32 1 ux)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log.f32 (fma.f32 ux maxCos (-.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (-.f32 1 ux) (*.f32 ux maxCos))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (*.f32 ux maxCos) (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 ux maxCos (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 maxCos ux (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (*.f32 ux maxCos)) 2) (cbrt.f32 (*.f32 ux maxCos)) (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (-.f32 1 ux)) 2) (cbrt.f32 (-.f32 1 ux)) (*.f32 ux maxCos))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (*.f32 ux maxCos)) (sqrt.f32 (*.f32 ux maxCos)) (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (-.f32 1 ux)) (sqrt.f32 (-.f32 1 ux)) (*.f32 ux maxCos))))))

simplify27.0ms (0.9%)

Algorithm
egg-herbie
Rules
185×fma-def_binary32
162×fma-neg_binary32
31×sub-neg_binary32
25×unsub-neg_binary32
23×cancel-sign-sub-inv_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017207
145171
2111171
3230171
4465171
5664171
6772171
7790171
Stop Event
saturated
Counts
63 → 49
Calls
Call 1
Inputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 (-.f32 maxCos 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
Outputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 (-.f32 maxCos 1) ux)
(*.f32 (+.f32 maxCos -1) ux)
(-.f32 (*.f32 maxCos ux) ux)
(*.f32 ux (+.f32 maxCos -1))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos))))
(*.f32 (+.f32 maxCos -1) ux)
(-.f32 (*.f32 maxCos ux) ux)
(*.f32 ux (+.f32 maxCos -1))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)

localize17.0ms (0.6%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(-.f32 (fma.f32 ux maxCos 1) ux)
Compiler

Compiled 16 to 9 computations (43.8% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
ux
@0
(-.f32 (fma.f32 ux maxCos 1) ux)
0.0ms
maxCos
@-inf
(-.f32 (fma.f32 ux maxCos 1) ux)
0.0ms
ux
@-inf
(-.f32 (fma.f32 ux maxCos 1) ux)
0.0ms
maxCos
@inf
(-.f32 (fma.f32 ux maxCos 1) ux)
0.0ms
maxCos
@0
(-.f32 (fma.f32 ux maxCos 1) ux)

rewrite49.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
672×pow1_binary32
624×add-log-exp_binary32
624×log1p-expm1-u_binary32
624×expm1-log1p-u_binary32
610×add-exp-log_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
11248
216378
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(-.f32 (fma.f32 ux maxCos 1) ux)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (fma.f32 ux maxCos 1) (neg.f32 ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (fma.f32 ux maxCos 1) (*.f32 (neg.f32 ux) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (fma.f32 (neg.f32 ux) 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (fma.f32 (neg.f32 (cbrt.f32 ux)) (pow.f32 (cbrt.f32 ux) 2) ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (fma.f32 (neg.f32 (sqrt.f32 ux)) (sqrt.f32 ux) ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 ux maxCos) (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 ux maxCos) (+.f32 1 (neg.f32 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (neg.f32 ux) (fma.f32 ux maxCos 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (-.f32 (fma.f32 ux maxCos 1) ux))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 (fma.f32 ux maxCos 1) ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) (pow.f32 (cbrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) 2) (cbrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) (sqrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 3) (pow.f32 ux 3)) (/.f32 1 (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux (+.f32 ux (fma.f32 ux maxCos 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux ux)) (/.f32 1 (+.f32 ux (fma.f32 ux maxCos 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (sqrt.f32 (fma.f32 ux maxCos 1)) (sqrt.f32 ux)) (-.f32 (sqrt.f32 (fma.f32 ux maxCos 1)) (sqrt.f32 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux (+.f32 ux (fma.f32 ux maxCos 1)))) (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 3) (pow.f32 ux 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 ux (fma.f32 ux maxCos 1)) (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 3) (pow.f32 ux 3)) (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux (+.f32 ux (fma.f32 ux maxCos 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux ux)) (+.f32 ux (fma.f32 ux maxCos 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 3) (pow.f32 ux 3))) (neg.f32 (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux (+.f32 ux (fma.f32 ux maxCos 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 ux ux))) (neg.f32 (+.f32 ux (fma.f32 ux maxCos 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 3) (pow.f32 (neg.f32 ux) 3)) (+.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (-.f32 (*.f32 (neg.f32 ux) (neg.f32 ux)) (*.f32 (fma.f32 ux maxCos 1) (neg.f32 ux)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (fma.f32 ux maxCos 1) 2) (*.f32 (neg.f32 ux) (neg.f32 ux))) (-.f32 (fma.f32 ux maxCos 1) (neg.f32 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (-.f32 (fma.f32 ux maxCos 1) ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 (fma.f32 ux maxCos 1) ux) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (-.f32 (fma.f32 ux maxCos 1) ux)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (-.f32 (fma.f32 ux maxCos 1) ux) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (-.f32 (fma.f32 ux maxCos 1) ux) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log.f32 (-.f32 (fma.f32 ux maxCos 1) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (fma.f32 ux maxCos 1) (neg.f32 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (fma.f32 ux maxCos 1)) 2) (cbrt.f32 (fma.f32 ux maxCos 1)) (neg.f32 ux))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (fma.f32 ux maxCos 1)) (sqrt.f32 (fma.f32 ux maxCos 1)) (neg.f32 ux))))))

simplify27.0ms (0.9%)

Algorithm
egg-herbie
Rules
185×fma-def_binary32
162×fma-neg_binary32
31×sub-neg_binary32
25×unsub-neg_binary32
23×cancel-sign-sub-inv_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017207
145171
2111171
3230171
4465171
5664171
6772171
7790171
Stop Event
saturated
Counts
61 → 47
Calls
Call 1
Inputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 (-.f32 maxCos 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
Outputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 (-.f32 maxCos 1) ux)
(*.f32 (+.f32 maxCos -1) ux)
(-.f32 (*.f32 maxCos ux) ux)
(*.f32 ux (+.f32 maxCos -1))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos))))
(*.f32 (+.f32 maxCos -1) ux)
(-.f32 (*.f32 maxCos ux) ux)
(*.f32 ux (+.f32 maxCos -1))
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(+.f32 1 (*.f32 -1 (*.f32 ux (+.f32 1 (*.f32 -1 maxCos)))))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(-.f32 (fma.f32 maxCos ux 1) ux)

eval24.0ms (0.8%)

Compiler

Compiled 1223 to 740 computations (39.5% saved)

prune18.0ms (0.6%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New92496
Fresh000
Picked101
Done011
Total93598
Error
0b
Counts
98 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
8.2b
1
0.4b
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0b
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.8b
(-.f32 1 ux)
Compiler

Compiled 54 to 42 computations (22.2% saved)

localize8.0ms (0.3%)

Compiler

Compiled 8 to 6 computations (25% saved)

localize22.0ms (0.7%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.0b
(*.f32 ux (-.f32 1 maxCos))
Compiler

Compiled 21 to 14 computations (33.3% saved)

series5.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
maxCos
@0
(*.f32 ux (-.f32 1 maxCos))
1.0ms
ux
@0
(*.f32 ux (-.f32 1 maxCos))
0.0ms
ux
@inf
(*.f32 ux (-.f32 1 maxCos))
0.0ms
ux
@-inf
(*.f32 ux (-.f32 1 maxCos))
0.0ms
maxCos
@-inf
(*.f32 ux (-.f32 1 maxCos))

rewrite57.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
847×pow1_binary32
787×add-log-exp_binary32
787×log1p-expm1-u_binary32
787×expm1-log1p-u_binary32
773×add-exp-log_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
115417
2207717
Stop Event
node limit
Counts
2 → 45
Calls
Call 1
Inputs
(*.f32 ux (-.f32 1 maxCos))
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 ux (*.f32 (neg.f32 maxCos) ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 ux (*.f32 ux (neg.f32 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (+.f32 1 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 (-.f32 1 (pow.f32 maxCos 3)) ux) (+.f32 1 (fma.f32 maxCos maxCos maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 (-.f32 1 (*.f32 maxCos maxCos)) ux) (+.f32 1 maxCos))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 ux (-.f32 1 (pow.f32 maxCos 3))) (+.f32 1 (fma.f32 maxCos maxCos maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 ux (-.f32 1 (*.f32 maxCos maxCos))) (+.f32 1 maxCos))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (*.f32 ux (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (pow.f32 (exp.f32 ux) (-.f32 1 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log.f32 (*.f32 ux (-.f32 1 maxCos))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (*.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2) (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (/.f32 1 (+.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (+.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (/.f32 1 (+.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 1 (*.f32 ux (-.f32 1 maxCos))) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (+.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))) (neg.f32 (+.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (+.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (neg.f32 (+.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 1 (pow.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)) 3)) (+.f32 1 (-.f32 (*.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)) (*.f32 (-.f32 1 maxCos) (neg.f32 ux))) (*.f32 (-.f32 1 maxCos) (neg.f32 ux)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (*.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux)) (*.f32 (-.f32 1 maxCos) (neg.f32 ux)))) (-.f32 1 (*.f32 (-.f32 1 maxCos) (neg.f32 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log1p.f32 (*.f32 (-.f32 1 maxCos) (neg.f32 ux))))))))

simplify36.0ms (1.2%)

Algorithm
egg-herbie
Rules
203×fma-def_binary32
147×fma-neg_binary32
52×cancel-sign-sub-inv_binary32
36×sub-neg_binary32
32×associate--r+_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
018367
145331
296331
3180331
4377331
5620331
6784331
7839331
8848331
Stop Event
saturated
Counts
93 → 61
Calls
Call 1
Inputs
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 (-.f32 1 maxCos) ux)
ux
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 -1 (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 -1 (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 (-.f32 maxCos 1) ux)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
Outputs
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
ux
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 -1 (*.f32 maxCos ux))
(neg.f32 (*.f32 maxCos ux))
(*.f32 maxCos (neg.f32 ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(*.f32 -1 (*.f32 maxCos ux))
(neg.f32 (*.f32 maxCos ux))
(*.f32 maxCos (neg.f32 ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
(+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux)
(*.f32 (-.f32 1 maxCos) ux)
(-.f32 ux (*.f32 maxCos ux))
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(*.f32 (-.f32 maxCos 1) ux)
(*.f32 ux (+.f32 maxCos -1))
(-.f32 (*.f32 maxCos ux) ux)
(fma.f32 maxCos ux (neg.f32 ux))
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(*.f32 ux (+.f32 maxCos -1))
(-.f32 (*.f32 maxCos ux) ux)
(fma.f32 maxCos ux (neg.f32 ux))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 1 ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(*.f32 maxCos ux)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)
(-.f32 (+.f32 1 (*.f32 maxCos ux)) ux)
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 (fma.f32 maxCos ux 1) ux)
(fma.f32 ux (+.f32 maxCos -1) 1)

localize51.0ms (1.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.0b
(*.f32 ux (-.f32 1 maxCos))
0.1b
(*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))
0.4b
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
Compiler

Compiled 66 to 45 computations (31.8% saved)

series11.0ms (0.4%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
2.0ms
maxCos
@0
(*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))
1.0ms
maxCos
@0
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
1.0ms
maxCos
@inf
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
1.0ms
ux
@inf
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
1.0ms
ux
@0
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))

rewrite81.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
642×log-prod_binary32
444×fma-def_binary32
311×pow2_binary32
262×fma-neg_binary32
213×pow1/3_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01045
123428
2361128
Stop Event
node limit
Counts
3 → 155
Calls
Call 1
Inputs
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
(*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (*.f32 ux (neg.f32 (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1)) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (pow.f32 (cbrt.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) 2)) (log.f32 (cbrt.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (sqrt.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))) (log.f32 (sqrt.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 1 (*.f32 ux (-.f32 1 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1)) (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (exp.f32 (log1p.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2)) (*.f32 (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2) (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (*.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (neg.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (/.f32 1 (fma.f32 (-.f32 1 maxCos) (neg.f32 ux) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1)) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2))) (/.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))) (/.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2)) 1) (/.f32 (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) 1) (/.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2)) (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2))) (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2))) (/.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2)) (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))) (/.f32 (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))) (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 3) (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f32 (/.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (fma.f32 (-.f32 1 maxCos) (neg.f32 ux) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (+.f32 1 (expm1.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (/.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 3) (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log1p.f32 (*.f32 ux (neg.f32 (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (*.f32 (log1p.f32 (*.f32 ux (neg.f32 (-.f32 1 maxCos)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1)) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))) 2) (cbrt.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))) (sqrt.f32 (/.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 1 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 1 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))) (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (fma.f32 ux (-.f32 1 maxCos) 1))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) 1) (*.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (neg.f32 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (pow.f32 (cbrt.f32 (exp.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) 2)) (log.f32 (cbrt.f32 (exp.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (sqrt.f32 (exp.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (log.f32 (sqrt.f32 (exp.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (-.f32 1 (pow.f32 maxCos 3))) (+.f32 1 (fma.f32 maxCos maxCos maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (*.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (-.f32 1 (*.f32 maxCos maxCos))) (+.f32 1 maxCos))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (+.f32 1 (expm1.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (*.f32 (log.f32 (*.f32 ux (-.f32 1 maxCos))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (*.f32 (log.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 ux (*.f32 ux (-.f32 1 maxCos)) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (-.f32 1 maxCos) (*.f32 ux ux) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 ux (-.f32 1 maxCos)) ux (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2) (*.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) ux) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) (*.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) ux) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) 1 (*.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux)) (neg.f32 maxCos)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) 2) (cbrt.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))) 2) (cbrt.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (hypot.f32 1 (*.f32 ux (-.f32 1 maxCos))) (hypot.f32 1 (*.f32 ux (-.f32 1 maxCos))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))) (sqrt.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) (sqrt.f32 ux)) (*.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) (sqrt.f32 ux)) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (pow.f32 (cbrt.f32 ux) 2)) (cbrt.f32 ux) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (sqrt.f32 ux)) (sqrt.f32 ux) (*.f32 (neg.f32 maxCos) (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (exp.f32 (log1p.f32 (fma.f32 ux (-.f32 1 maxCos) 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (fma.f32 ux (-.f32 1 maxCos) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2)) (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (/.f32 1 (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1) (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2)) (/.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (/.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (neg.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 6)) (*.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (+.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4)) (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3)) (+.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4)) (*.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) 1) (fma.f32 ux (-.f32 1 maxCos) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))) (neg.f32 (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 (fma.f32 (*.f32 ux (-.f32 1 maxCos)) (fma.f32 ux (-.f32 1 maxCos) -1) 1) (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (+.f32 1 (expm1.f32 (fma.f32 ux (-.f32 1 maxCos) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (fma.f32 ux (-.f32 1 maxCos) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log1p.f32 (*.f32 ux (-.f32 1 maxCos))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (*.f32 (log1p.f32 (*.f32 ux (-.f32 1 maxCos))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (*.f32 ux (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 1 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 ux (-.f32 1 maxCos) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (-.f32 1 maxCos) ux 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 ux (-.f32 1 maxCos)) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (fma.f32 ux (-.f32 1 maxCos) 1) (/.f32 1 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (cbrt.f32 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (cbrt.f32 (-.f32 1 maxCos)) ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) (pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2) (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 ux) 2) (*.f32 (cbrt.f32 ux) (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (-.f32 1 maxCos)) (*.f32 (sqrt.f32 (-.f32 1 maxCos)) ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) (sqrt.f32 (*.f32 ux (-.f32 1 maxCos))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 ux) (sqrt.f32 (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 ux) (*.f32 (sqrt.f32 ux) (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (pow.f32 (cbrt.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) 2) (cbrt.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) (sqrt.f32 (/.f32 1 (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (cbrt.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4))) (sqrt.f32 (pow.f32 (cbrt.f32 (*.f32 ux (-.f32 1 maxCos))) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (sqrt.f32 (*.f32 (-.f32 1 maxCos) (*.f32 ux ux))) (sqrt.f32 (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2)) 1) (/.f32 (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) 1) (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 1 (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2))) (/.f32 (fma.f32 ux (-.f32 1 maxCos) 1) (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2)) (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2))) (/.f32 (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (cbrt.f32 (pow.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) 2))) (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (cbrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 1 (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (/.f32 (fma.f32 ux (-.f32 1 maxCos) 1) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (cbrt.f32 (pow.f32 (fma.f32 ux (-.f32 1 maxCos) 1) 2)) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (/.f32 (cbrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (/.f32 (sqrt.f32 (fma.f32 ux (-.f32 1 maxCos) 1)) (sqrt.f32 (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)))) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (fma.f32 ux (-.f32 1 maxCos) 1) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 6))) (+.f32 (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4)) (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (/.f32 (fma.f32 ux (-.f32 1 maxCos) 1) (-.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 4))) (+.f32 1 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2)) (neg.f32 (/.f32 (pow.f32 (*.f32 ux (-.f32 1 maxCos)) 2) (-.f32 1 (*.f32 ux (-.f32 1 maxCos))))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 ux (cbrt.f32 (pow.f32 (-.f32 1 maxCos) 2))) (cbrt.f32 (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 ux (sqrt.f32 (-.f32 1 maxCos))) (sqrt.f32 (-.f32 1 maxCos)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (-.f32 1 maxCos) (pow.f32 (cbrt.f32 ux) 2)) (cbrt.f32 ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f32 (*.f32 (-.f32 1 maxCos) (sqrt.f32 ux)) (sqrt.f32 ux) 1)))))

simplify58.0ms (2%)

Algorithm
egg-herbie
Rules
606×fma-def_binary32
567×times-frac_binary32
464×associate-*r*_binary32
427×associate-*l*_binary32
348×associate-/l*_binary32
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01131584
14321370
216001238
Stop Event
node limit
Counts
227 → 201
Calls
Call 1
Inputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (+.f32 (*.f32 (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 maxCos 1) (-.f32 1 maxCos))) (pow.f32 ux 2)) (*.f32 (-.f32 maxCos 1) ux)))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 (-.f32 1 maxCos) (*.f32 (pow.f32 ux 3) (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 1 maxCos) (-.f32 maxCos 1)))))) (+.f32 (*.f32 (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 maxCos 1) (-.f32 1 maxCos))) (pow.f32 ux 2)) (*.f32 (-.f32 maxCos 1) ux))))
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(/.f32 (-.f32 1 (pow.f32 ux 2)) (+.f32 1 ux))
(-.f32 (+.f32 (/.f32 1 (+.f32 1 ux)) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos)) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(-.f32 (+.f32 (/.f32 1 (+.f32 1 ux)) (+.f32 (*.f32 (pow.f32 maxCos 2) (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux))))) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos))) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(-.f32 (+.f32 (/.f32 (*.f32 (pow.f32 maxCos 3) (*.f32 (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux)))) ux)) (+.f32 1 ux)) (+.f32 (/.f32 1 (+.f32 1 ux)) (+.f32 (*.f32 (pow.f32 maxCos 2) (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux))))) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos)))) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(*.f32 maxCos ux)
(-.f32 (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux)) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) (*.f32 maxCos ux))) (*.f32 maxCos ux))) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux))))
(-.f32 (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) (*.f32 maxCos ux))) (+.f32 (/.f32 (*.f32 (-.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) ux)) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) (+.f32 1 ux)) (*.f32 (pow.f32 maxCos 2) ux)) (*.f32 maxCos ux)))) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux))))
(*.f32 maxCos ux)
(-.f32 (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux)) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (+.f32 (*.f32 -1 (/.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) maxCos)) (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (+.f32 (*.f32 -1 (/.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) maxCos)) (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) (+.f32 1 ux)) (*.f32 (pow.f32 maxCos 2) ux))) (*.f32 maxCos ux)))) (*.f32 -1 (+.f32 1 ux)))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(pow.f32 ux 2)
(+.f32 (pow.f32 ux 2) (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))
(+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))
(+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
1
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(*.f32 (-.f32 1 maxCos) ux)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(*.f32 (-.f32 1 maxCos) ux)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 ux)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(*.f32 -1 (*.f32 maxCos ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(*.f32 -1 (*.f32 maxCos ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
Outputs
1
(+.f32 1 (*.f32 (-.f32 maxCos 1) ux))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (+.f32 (*.f32 (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 maxCos 1) (-.f32 1 maxCos))) (pow.f32 ux 2)) (*.f32 (-.f32 maxCos 1) ux)))
(+.f32 1 (fma.f32 (-.f32 (neg.f32 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (+.f32 maxCos -1) (-.f32 1 maxCos))) (*.f32 ux ux) (*.f32 (+.f32 maxCos -1) ux)))
(+.f32 (fma.f32 (+.f32 maxCos -1) ux 1) (*.f32 (*.f32 ux ux) (fma.f32 -1 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 (-.f32 1 maxCos) 2))))
(fma.f32 (*.f32 ux ux) (*.f32 0 (pow.f32 (-.f32 1 maxCos) 2)) (fma.f32 ux (+.f32 maxCos -1) 1))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 (-.f32 1 maxCos) (*.f32 (pow.f32 ux 3) (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 1 maxCos) (-.f32 maxCos 1)))))) (+.f32 (*.f32 (-.f32 (*.f32 -1 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (-.f32 maxCos 1) (-.f32 1 maxCos))) (pow.f32 ux 2)) (*.f32 (-.f32 maxCos 1) ux))))
(+.f32 1 (fma.f32 -1 (*.f32 (-.f32 1 maxCos) (*.f32 (pow.f32 ux 3) (-.f32 (neg.f32 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (+.f32 maxCos -1) (-.f32 1 maxCos))))) (fma.f32 (-.f32 (neg.f32 (pow.f32 (-.f32 1 maxCos) 2)) (*.f32 (+.f32 maxCos -1) (-.f32 1 maxCos))) (*.f32 ux ux) (*.f32 (+.f32 maxCos -1) ux))))
(+.f32 (fma.f32 (+.f32 maxCos -1) ux (*.f32 (*.f32 ux ux) (fma.f32 -1 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 (-.f32 1 maxCos) 2)))) (-.f32 1 (*.f32 (pow.f32 ux 3) (*.f32 (fma.f32 -1 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 (-.f32 1 maxCos) 2)) (-.f32 1 maxCos)))))
(+.f32 (*.f32 (*.f32 0 (pow.f32 (-.f32 1 maxCos) 2)) (+.f32 (*.f32 ux ux) (*.f32 (pow.f32 ux 3) (+.f32 maxCos -1)))) (fma.f32 ux (+.f32 maxCos -1) 1))
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(neg.f32 (*.f32 ux (-.f32 1 maxCos)))
(*.f32 ux (neg.f32 (-.f32 1 maxCos)))
(-.f32 (*.f32 maxCos ux) ux)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(*.f32 -1 (*.f32 (-.f32 1 maxCos) ux))
(neg.f32 (*.f32 ux (-.f32 1 maxCos)))
(*.f32 ux (neg.f32 (-.f32 1 maxCos)))
(-.f32 (*.f32 maxCos ux) ux)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(+.f32 1 (*.f32 -1 (*.f32 (-.f32 1 maxCos) ux)))
(+.f32 1 (*.f32 (+.f32 maxCos -1) ux))
(fma.f32 (+.f32 maxCos -1) ux 1)
(fma.f32 ux (+.f32 maxCos -1) 1)
(/.f32 (-.f32 1 (pow.f32 ux 2)) (+.f32 1 ux))
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
(-.f32 (+.f32 (/.f32 1 (+.f32 1 ux)) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos)) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(+.f32 (/.f32 1 (+.f32 1 ux)) (-.f32 (*.f32 maxCos (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux))))))) (/.f32 (*.f32 ux ux) (+.f32 1 ux))))
(+.f32 (*.f32 maxCos (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux))))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux)))
(fma.f32 maxCos (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux)))
(-.f32 (+.f32 (/.f32 1 (+.f32 1 ux)) (+.f32 (*.f32 (pow.f32 maxCos 2) (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux))))) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos))) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(+.f32 (/.f32 1 (+.f32 1 ux)) (-.f32 (fma.f32 (*.f32 maxCos maxCos) (*.f32 -1 (-.f32 (/.f32 (*.f32 ux ux) (+.f32 1 ux)) (/.f32 (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux)))))) (/.f32 (+.f32 1 ux) ux)))) (*.f32 maxCos (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux)))))))) (/.f32 (*.f32 ux ux) (+.f32 1 ux))))
(+.f32 (fma.f32 (*.f32 maxCos maxCos) (fma.f32 -1 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux)) ux)) (*.f32 maxCos (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux)))))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux)))
(+.f32 (*.f32 maxCos (+.f32 (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2))) (*.f32 (-.f32 (*.f32 (/.f32 ux (+.f32 1 ux)) (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2)))) (*.f32 ux (/.f32 ux (+.f32 1 ux)))) maxCos))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux)))
(-.f32 (+.f32 (/.f32 (*.f32 (pow.f32 maxCos 3) (*.f32 (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux)))) ux)) (+.f32 1 ux)) (+.f32 (/.f32 1 (+.f32 1 ux)) (+.f32 (*.f32 (pow.f32 maxCos 2) (-.f32 (*.f32 -1 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) ux) (+.f32 1 ux))))) (*.f32 (-.f32 (*.f32 2 (/.f32 (pow.f32 ux 2) (+.f32 1 ux))) (*.f32 -1 (/.f32 (*.f32 ux (-.f32 1 (pow.f32 ux 2))) (pow.f32 (+.f32 1 ux) 2)))) maxCos)))) (/.f32 (pow.f32 ux 2) (+.f32 1 ux)))
(+.f32 (/.f32 (pow.f32 maxCos 3) (/.f32 (+.f32 1 ux) (*.f32 ux (*.f32 -1 (-.f32 (/.f32 (*.f32 ux ux) (+.f32 1 ux)) (/.f32 (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux)))))) (/.f32 (+.f32 1 ux) ux))))))) (+.f32 (/.f32 1 (+.f32 1 ux)) (-.f32 (fma.f32 (*.f32 maxCos maxCos) (*.f32 -1 (-.f32 (/.f32 (*.f32 ux ux) (+.f32 1 ux)) (/.f32 (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux)))))) (/.f32 (+.f32 1 ux) ux)))) (*.f32 maxCos (-.f32 (*.f32 2 (/.f32 (*.f32 ux ux) (+.f32 1 ux))) (neg.f32 (/.f32 ux (/.f32 (pow.f32 (+.f32 1 ux) 2) (-.f32 1 (*.f32 ux ux)))))))) (/.f32 (*.f32 ux ux) (+.f32 1 ux)))))
(+.f32 (+.f32 (fma.f32 (*.f32 maxCos maxCos) (fma.f32 -1 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux)) ux)) (*.f32 maxCos (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux)))))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))) (*.f32 (/.f32 (pow.f32 maxCos 3) (+.f32 1 ux)) (*.f32 ux (fma.f32 -1 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 (fma.f32 2 (/.f32 ux (/.f32 (+.f32 1 ux) ux)) (*.f32 (/.f32 ux (pow.f32 (+.f32 1 ux) 2)) (-.f32 1 (*.f32 ux ux)))) (+.f32 1 ux)) ux)))))
(+.f32 (fma.f32 (/.f32 (pow.f32 maxCos 3) (+.f32 1 ux)) (*.f32 ux (-.f32 (*.f32 (/.f32 ux (+.f32 1 ux)) (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2)))) (*.f32 ux (/.f32 ux (+.f32 1 ux))))) (*.f32 maxCos (+.f32 (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2))) (*.f32 (-.f32 (*.f32 (/.f32 ux (+.f32 1 ux)) (fma.f32 2 (*.f32 ux (/.f32 ux (+.f32 1 ux))) (/.f32 (+.f32 ux (neg.f32 (pow.f32 ux 3))) (pow.f32 (+.f32 1 ux) 2)))) (*.f32 ux (/.f32 ux (+.f32 1 ux)))) maxCos)))) (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux)))
(*.f32 maxCos ux)
(-.f32 (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux)) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (*.f32 ux (+.f32 -2 maxCos)) (neg.f32 (+.f32 1 ux)))
(fma.f32 ux (+.f32 maxCos -2) (+.f32 1 ux))
(+.f32 (fma.f32 ux (+.f32 maxCos -2) 1) ux)
(-.f32 (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) (*.f32 maxCos ux))) (*.f32 maxCos ux))) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux))))
(-.f32 (fma.f32 -2 ux (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)) (*.f32 maxCos ux))) (fma.f32 -1 (*.f32 (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) maxCos) (/.f32 (+.f32 1 ux) ux)) (neg.f32 (+.f32 1 ux))))
(-.f32 (fma.f32 ux -2 (-.f32 (*.f32 maxCos ux) (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)))) (neg.f32 (fma.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) maxCos) (/.f32 (+.f32 1 ux) ux) (+.f32 1 ux))))
(+.f32 (+.f32 (fma.f32 ux (+.f32 maxCos -2) 1) ux) (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) maxCos))
(-.f32 (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) (*.f32 maxCos ux))) (+.f32 (/.f32 (*.f32 (-.f32 (*.f32 -1 (/.f32 (-.f32 1 (pow.f32 ux 2)) ux)) (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) (+.f32 1 ux)) (*.f32 (pow.f32 maxCos 2) ux)) (*.f32 maxCos ux)))) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux))))
(-.f32 (fma.f32 -2 ux (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)) (+.f32 (*.f32 maxCos ux) (*.f32 (/.f32 (*.f32 -1 (-.f32 (/.f32 (-.f32 1 (*.f32 ux ux)) ux) (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) (/.f32 ux (+.f32 1 ux))))) (*.f32 maxCos maxCos)) (/.f32 (+.f32 1 ux) ux))))) (fma.f32 -1 (*.f32 (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) maxCos) (/.f32 (+.f32 1 ux) ux)) (neg.f32 (+.f32 1 ux))))
(-.f32 (fma.f32 ux -2 (-.f32 (fma.f32 (/.f32 (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) ux) (*.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) ux) (+.f32 1 ux))) (*.f32 maxCos maxCos)) (/.f32 (+.f32 1 ux) ux) (*.f32 maxCos ux)) (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)))) (neg.f32 (fma.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) maxCos) (/.f32 (+.f32 1 ux) ux) (+.f32 1 ux))))
(+.f32 (+.f32 1 ux) (+.f32 (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) maxCos) (fma.f32 ux (+.f32 maxCos -2) (*.f32 (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) (*.f32 maxCos (*.f32 maxCos ux))) (+.f32 1 ux)))))
(*.f32 maxCos ux)
(-.f32 (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux)) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (*.f32 ux (+.f32 -2 maxCos)) (neg.f32 (+.f32 1 ux)))
(fma.f32 ux (+.f32 maxCos -2) (+.f32 1 ux))
(+.f32 (fma.f32 ux (+.f32 maxCos -2) 1) ux)
(-.f32 (+.f32 (*.f32 -1 (/.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) maxCos)) (+.f32 (*.f32 -2 ux) (*.f32 maxCos ux))) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (fma.f32 -2 ux (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)) (*.f32 maxCos ux))) (fma.f32 -1 (*.f32 (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) maxCos) (/.f32 (+.f32 1 ux) ux)) (neg.f32 (+.f32 1 ux))))
(-.f32 (fma.f32 ux -2 (-.f32 (*.f32 maxCos ux) (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)))) (neg.f32 (fma.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) maxCos) (/.f32 (+.f32 1 ux) ux) (+.f32 1 ux))))
(+.f32 (+.f32 (fma.f32 ux (+.f32 maxCos -2) 1) ux) (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) maxCos))
(-.f32 (+.f32 (*.f32 -1 (/.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) maxCos)) (+.f32 (*.f32 -2 ux) (+.f32 (*.f32 -1 (/.f32 (*.f32 (-.f32 (/.f32 1 ux) (+.f32 ux (/.f32 (*.f32 (-.f32 (*.f32 -2 ux) (*.f32 -1 (+.f32 1 ux))) (+.f32 1 ux)) ux))) (+.f32 1 ux)) (*.f32 (pow.f32 maxCos 2) ux))) (*.f32 maxCos ux)))) (*.f32 -1 (+.f32 1 ux)))
(-.f32 (fma.f32 -2 ux (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)) (+.f32 (*.f32 maxCos ux) (*.f32 (/.f32 (*.f32 -1 (-.f32 (/.f32 (-.f32 1 (*.f32 ux ux)) ux) (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) (/.f32 ux (+.f32 1 ux))))) (*.f32 maxCos maxCos)) (/.f32 (+.f32 1 ux) ux))))) (fma.f32 -1 (*.f32 (/.f32 (-.f32 (*.f32 ux -2) (neg.f32 (+.f32 1 ux))) maxCos) (/.f32 (+.f32 1 ux) ux)) (neg.f32 (+.f32 1 ux))))
(-.f32 (fma.f32 ux -2 (-.f32 (fma.f32 (/.f32 (fma.f32 -1 (/.f32 (-.f32 1 (*.f32 ux ux)) ux) (*.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) ux) (+.f32 1 ux))) (*.f32 maxCos maxCos)) (/.f32 (+.f32 1 ux) ux) (*.f32 maxCos ux)) (/.f32 (-.f32 1 (*.f32 ux ux)) (*.f32 maxCos ux)))) (neg.f32 (fma.f32 (/.f32 (fma.f32 ux -2 (+.f32 1 ux)) maxCos) (/.f32 (+.f32 1 ux) ux) (+.f32 1 ux))))
(+.f32 (+.f32 1 ux) (+.f32 (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) maxCos) (fma.f32 ux (+.f32 maxCos -2) (*.f32 (/.f32 (+.f32 (fma.f32 (/.f32 (+.f32 (fma.f32 ux -2 1) ux) ux) (+.f32 1 ux) ux) (/.f32 -1 ux)) (*.f32 maxCos (*.f32 maxCos ux))) (+.f32 1 ux)))))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (pow.f32 ux 2))
(*.f32 (pow.f32 (-.f32 1 maxCos) 2) (*.f32 ux ux))
(*.f32 ux (*.f32 (pow.f32 (-.f32 1 maxCos) 2) ux))
(pow.f32 ux 2)
(*.f32 ux ux)
(+.f32 (pow.f32 ux 2) (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (*.f32 (*.f32 -2 maxCos) (*.f32 ux ux)))
(*.f32 (+.f32 (*.f32 maxCos -2) 1) (*.f32 ux ux))
(*.f32 (fma.f32 maxCos -2 1) (*.f32 ux ux))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
(*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))
(*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))
(*.f32 ux (*.f32 maxCos (*.f32 maxCos ux)))
(*.f32 (*.f32 maxCos ux) (*.f32 maxCos ux))
(+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)))
(fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos)))
(*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos)))
(*.f32 ux (*.f32 ux (*.f32 maxCos (+.f32 maxCos -2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
(*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))
(*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))
(*.f32 ux (*.f32 maxCos (*.f32 maxCos ux)))
(*.f32 (*.f32 maxCos ux) (*.f32 maxCos ux))
(+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2)))
(fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos)))
(*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos)))
(*.f32 ux (*.f32 ux (*.f32 maxCos (+.f32 maxCos -2))))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
(+.f32 (pow.f32 ux 2) (+.f32 (*.f32 -2 (*.f32 maxCos (pow.f32 ux 2))) (*.f32 (pow.f32 maxCos 2) (pow.f32 ux 2))))
(+.f32 (*.f32 ux ux) (fma.f32 -2 (*.f32 maxCos (*.f32 ux ux)) (*.f32 (*.f32 ux ux) (*.f32 maxCos maxCos))))
(fma.f32 ux ux (*.f32 (*.f32 ux ux) (+.f32 (*.f32 maxCos -2) (*.f32 maxCos maxCos))))
(fma.f32 (*.f32 ux ux) (*.f32 maxCos (+.f32 maxCos -2)) (*.f32 ux ux))
1
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 ux (-.f32 1 maxCos))
(-.f32 ux (*.f32 maxCos ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(*.f32 (-.f32 1 maxCos) ux)
(*.f32 ux (-.f32 1 maxCos))
(-.f32 ux (*.f32 maxCos ux))
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (*.f32 (-.f32 1 maxCos) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 ux)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(*.f32 -1 (*.f32 maxCos ux))
(neg.f32 (*.f32 maxCos ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(*.f32 -1 (*.f32 maxCos ux))
(neg.f32 (*.f32 maxCos ux))
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)
(+.f32 1 (+.f32 (*.f32 -1 (*.f32 maxCos ux)) ux))
(+.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(fma.f32 ux (-.f32 1 maxCos) 1)

eval211.0ms (7.2%)

Compiler

Compiled 8052 to 5826 computations (27.6% saved)

prune51.0ms (1.7%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New3301331
Fresh011
Picked101
Done033
Total3315336
Error
0b
Counts
336 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
8.2b
1
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0b
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.8b
(-.f32 1 ux)
Compiler

Compiled 42 to 33 computations (21.4% saved)

localize25.0ms (0.9%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f32 1 (*.f32 ux ux))
0.4b
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
Compiler

Compiled 25 to 14 computations (44% saved)

series2.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
ux
@inf
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
1.0ms
ux
@0
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
0.0ms
ux
@-inf
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
0.0ms
ux
@inf
(-.f32 1 (*.f32 ux ux))
0.0ms
ux
@0
(-.f32 1 (*.f32 ux ux))

rewrite64.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
920×pow1_binary32
864×add-log-exp_binary32
863×log1p-expm1-u_binary32
863×expm1-log1p-u_binary32
846×add-exp-log_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0720
116111
2240111
Stop Event
node limit
Counts
2 → 65
Calls
Call 1
Inputs
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
(-.f32 1 (*.f32 ux ux))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (neg.f32 ux))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (/.f32 1 (+.f32 1 ux)) (neg.f32 (/.f32 (*.f32 ux ux) (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 1 ux)))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (/.f32 1 (+.f32 1 ux)) (/.f32 (*.f32 ux ux) (+.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f32 (+.f32 1 (-.f32 1 ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (*.f32 ux ux)) (/.f32 1 (+.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2) (*.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) (/.f32 1 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (-.f32 1 ux)) (pow.f32 (cbrt.f32 (-.f32 1 ux)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 1 ux)) 2) (cbrt.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (*.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (/.f32 1 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 ux)) (sqrt.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (neg.f32 (-.f32 1 (*.f32 ux ux))) (/.f32 1 (+.f32 (neg.f32 ux) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (+.f32 1 ux)) (-.f32 1 (*.f32 ux ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2) 1) (/.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) (+.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) 1) (/.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (+.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (pow.f32 (cbrt.f32 (+.f32 1 ux)) 2)) (/.f32 (-.f32 1 (*.f32 ux ux)) (cbrt.f32 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2) (pow.f32 (cbrt.f32 (+.f32 1 ux)) 2)) (cbrt.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (pow.f32 (cbrt.f32 (+.f32 1 ux)) 2)) (/.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (cbrt.f32 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 1 (sqrt.f32 (+.f32 1 ux))) (/.f32 (-.f32 1 (*.f32 ux ux)) (sqrt.f32 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2) (sqrt.f32 (+.f32 1 ux))) (/.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) (sqrt.f32 (+.f32 1 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (-.f32 1 (*.f32 ux ux)) (-.f32 1 (*.f32 ux ux))) (-.f32 1 ux))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 (pow.f32 ux 3))) (+.f32 1 (-.f32 (*.f32 ux ux) ux)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (-.f32 1 ux) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 1 ux) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (-.f32 1 ux)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (-.f32 1 ux)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (/.f32 1 (-.f32 1 ux)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f32 (/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 (neg.f32 ux) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (-.f32 1 ux) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (-.f32 1 ux) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (/.f32 (pow.f32 (-.f32 1 (*.f32 ux ux)) 3) (pow.f32 (+.f32 1 ux) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (-.f32 1 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log.f32 (-.f32 1 ux)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (*.f32 ux (neg.f32 ux)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 1 (*.f32 (*.f32 ux (neg.f32 ux)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 ux (neg.f32 ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (-.f32 1 (*.f32 ux ux)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (*.f32 ux ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 2) (cbrt.f32 (-.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) (sqrt.f32 (-.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 ux 6)) (/.f32 1 (+.f32 1 (+.f32 (*.f32 ux ux) (pow.f32 ux 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (pow.f32 ux 4)) (/.f32 1 (+.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 1 (+.f32 (*.f32 ux ux) (pow.f32 ux 4))) (-.f32 1 (pow.f32 ux 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 1 (/.f32 (+.f32 1 (*.f32 ux ux)) (-.f32 1 (pow.f32 ux 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 ux 6)) (+.f32 1 (+.f32 (*.f32 ux ux) (pow.f32 ux 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (pow.f32 ux 4)) (+.f32 1 (*.f32 ux ux)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 1 (pow.f32 ux 6))) (neg.f32 (+.f32 1 (+.f32 (*.f32 ux ux) (pow.f32 ux 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (neg.f32 (-.f32 1 (pow.f32 ux 4))) (neg.f32 (+.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (+.f32 1 (pow.f32 (*.f32 ux (neg.f32 ux)) 3)) (+.f32 1 (-.f32 (*.f32 (*.f32 ux (neg.f32 ux)) (*.f32 ux (neg.f32 ux))) (*.f32 ux (neg.f32 ux)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f32 (-.f32 1 (*.f32 (*.f32 ux (neg.f32 ux)) (*.f32 ux (neg.f32 ux)))) (-.f32 1 (*.f32 ux (neg.f32 ux))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (-.f32 1 (*.f32 ux ux)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (pow.f32 (-.f32 1 (*.f32 ux ux)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (cbrt.f32 (-.f32 1 (*.f32 ux ux))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f32 (sqrt.f32 (-.f32 1 (*.f32 ux ux))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f32 (pow.f32 (-.f32 1 (*.f32 ux ux)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f32 (exp.f32 (-.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f32 (pow.f32 (-.f32 1 (*.f32 ux ux)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f32 (log1p.f32 (-.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f32 (expm1.f32 (-.f32 1 (*.f32 ux ux))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f32 (log1p.f32 (*.f32 ux (neg.f32 ux))))))))

simplify54.0ms (1.8%)

Algorithm
egg-herbie
Rules
632×fma-neg_binary32
553×fma-def_binary32
472×associate-*l*_binary32
434×unswap-sqr_binary32
371×distribute-lft-neg-in_binary32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
010146
123119
237119
370119
4176119
5535119
61915119
74817119
Stop Event
node limit
Counts
89 → 73
Calls
Call 1
Inputs
1
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
(*.f32 -1 ux)
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
(*.f32 -1 ux)
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
(+.f32 (*.f32 -1 ux) 1)
1
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(*.f32 -1 (pow.f32 ux 2))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(*.f32 -1 (pow.f32 ux 2))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
Outputs
1
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(*.f32 -1 ux)
(neg.f32 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(*.f32 -1 ux)
(neg.f32 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
(+.f32 (*.f32 -1 ux) 1)
(fma.f32 -1 ux 1)
(-.f32 1 ux)
1
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(*.f32 -1 (pow.f32 ux 2))
(neg.f32 (*.f32 ux ux))
(*.f32 ux (neg.f32 ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(*.f32 -1 (pow.f32 ux 2))
(neg.f32 (*.f32 ux ux))
(*.f32 ux (neg.f32 ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))
(+.f32 1 (*.f32 -1 (pow.f32 ux 2)))
(+.f32 1 (neg.f32 (*.f32 ux ux)))
(-.f32 1 (*.f32 ux ux))

eval19.0ms (0.6%)

Compiler

Compiled 899 to 596 computations (33.7% saved)

prune13.0ms (0.4%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New73073
Fresh011
Picked011
Done033
Total73578
Error
0b
Counts
78 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
8.2b
1
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0b
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.8b
(-.f32 1 ux)
Compiler

Compiled 42 to 33 computations (21.4% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done044
Total055
Error
0b
Counts
5 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
8.2b
1
0.0b
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0b
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
0.8b
(-.f32 1 ux)
Compiler

Compiled 42 to 33 computations (21.4% saved)

regimes125.0ms (4.3%)

Counts
7 → 1
Calls
Call 1
Inputs
1
(-.f32 1 ux)
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
(/.f32 (-.f32 1 (*.f32 ux ux)) (+.f32 1 ux))
(/.f32 (-.f32 1 (*.f32 (*.f32 ux (-.f32 1 maxCos)) (*.f32 ux (-.f32 1 maxCos)))) (+.f32 1 (*.f32 ux (-.f32 1 maxCos))))
(-.f32 (fma.f32 ux maxCos 1) ux)
Outputs
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
Calls

5 calls:

69.0ms
maxCos
6.0ms
uy
6.0ms
ux
5.0ms
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
5.0ms
(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Results
ErrorSegmentsBranch
0.0b1ux
0.0b1uy
0.0b1maxCos
0.0b1(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
0.0b1(+.f32 (-.f32 1 ux) (*.f32 ux maxCos))
Compiler

Compiled 89 to 62 computations (30.3% saved)

regimes33.0ms (1.1%)

Accuracy

Total -7.4b remaining (-961.9%)

Threshold costs -7.4b (-961.9%)

Counts
2 → 1
Calls
Call 1
Inputs
1
(-.f32 1 ux)
Outputs
(-.f32 1 ux)
Calls

3 calls:

24.0ms
maxCos
4.0ms
ux
4.0ms
uy
Results
ErrorSegmentsBranch
0.8b1ux
0.8b1uy
0.8b1maxCos
Compiler

Compiled 19 to 15 computations (21.1% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative_binary32
sub-neg_binary32
distribute-neg-in_binary32
cancel-sign-sub-inv_binary32
*-commutative_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
11915
23415
34615
46215
57215
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(-.f32 1 ux)
1
Outputs
(-.f32 1 (*.f32 ux (-.f32 1 maxCos)))
(+.f32 1 (*.f32 ux (+.f32 maxCos -1)))
(-.f32 1 ux)
1
Compiler

Compiled 20 to 17 computations (15% saved)

soundness0.0ms (0%)

end18.0ms (0.6%)

Compiler

Compiled 14 to 11 computations (21.4% saved)

Profiling

Loading profile data...