Details

Time bar (total: 5.8s)

analyze0.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%49.6%50.4%0
49.6%0%50.4%1
Compiler

Compiled 12 to 9 computations (25% saved)

sample5.0s (86.8%)

Results
3.4s4408×body2048valid
943.0ms2044×body1024valid
371.0ms1055×body512valid
175.0ms503×body256valid
52.0ms246×body128valid

preprocess14.0ms (0.2%)

Algorithm
egg-herbie
Rules
sub-neg_binary64
fma-def_binary64
+-commutative_binary64
associate-+l-_binary64
associate--r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
196
2136
3196
4266
5366
6476
7596
8626
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 1 (cos.f64 x))
Outputs
(-.f64 1 (cos.f64 x))
Compiler

Compiled 5 to 4 computations (20% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
sub-neg_binary64
fma-def_binary64
+-commutative_binary64
associate-+l-_binary64
associate--r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
196
2136
3196
4266
5366
6476
7596
8626
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
Outputs
(-.f64 1 (cos.f64 x))

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
29.2b
Counts
2 → 1
Alt Table
StatusErrorProgram
29.2b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 15 to 12 computations (20% saved)

localize2.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
3.5b
(-.f64 1 (cos.f64 x))

series1.0ms (0%)

Counts
1 → 4
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
(-.f64 1 (cos.f64 x))
0.0ms
x
@inf
(-.f64 1 (cos.f64 x))
0.0ms
x
@-inf
(-.f64 1 (cos.f64 x))

rewrite39.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
517×pow1_binary64
503×add-sqr-sqrt_binary64
481×add-log-exp_binary64
481×log1p-expm1-u_binary64
481×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11026
212496
Stop Event
node limit
Counts
1 → 28
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (neg.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (cos.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (-.f64 1 (cos.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 1 (cos.f64 x))) 2) (cbrt.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 1 (cos.f64 x))) (sqrt.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (cos.f64 x) 3)) (/.f64 1 (+.f64 1 (*.f64 (cos.f64 x) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (/.f64 1 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (*.f64 (cos.f64 x) (+.f64 1 (cos.f64 x)))) (-.f64 1 (pow.f64 (cos.f64 x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (cos.f64 x) 3)) (+.f64 1 (*.f64 (cos.f64 x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (cos.f64 x) 3))) (neg.f64 (+.f64 1 (*.f64 (cos.f64 x) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (sin.f64 x) (sin.f64 x))) (neg.f64 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (neg.f64 (cos.f64 x)) 3)) (+.f64 1 (-.f64 (*.f64 (neg.f64 (cos.f64 x)) (neg.f64 (cos.f64 x))) (neg.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (neg.f64 (cos.f64 x)) (neg.f64 (cos.f64 x)))) (-.f64 1 (neg.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (cos.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 1 (cos.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 1 (cos.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (neg.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 1 (cos.f64 x))))))))

simplify87.0ms (1.5%)

Algorithm
egg-herbie
Rules
603×distribute-rgt-out_binary64
532×sqr-pow_binary64
482×associate-+l+_binary64
478×distribute-lft-out_binary64
413×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02470
15670
212870
342670
4190670
5429470
6466870
7517470
8616470
9714870
10758370
Stop Event
node limit
Counts
32 → 36
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 1/720 (pow.f64 x 6))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/720 (pow.f64 x 6)) (*.f64 -1/40320 (pow.f64 x 8)))))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 1/720 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/720 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 1/720 (pow.f64 x 6) (*.f64 -1/24 (pow.f64 x 4))))
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/720 (pow.f64 x 6)) (*.f64 -1/40320 (pow.f64 x 8)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 1/720 (pow.f64 x 6) (*.f64 -1/40320 (pow.f64 x 8)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/40320 (pow.f64 x 8) (fma.f64 1/720 (pow.f64 x 6) (*.f64 -1/24 (pow.f64 x 4)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -1/40320 -1/24) (*.f64 1/720 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2) (fma.f64 1/720 (pow.f64 x 6) (*.f64 -1/40320 (pow.f64 x 8))))

prune40.0ms (0.7%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New35136
Fresh000
Picked101
Done000
Total36137
Error
0.0b
Counts
37 → 1
Alt Table
StatusErrorProgram
0.0b
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
Compiler

Compiled 422 to 262 computations (37.9% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
1.0ms
x
@0
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
0.0ms
x
@-inf
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))

rewrite42.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
635×pow1_binary64
593×add-log-exp_binary64
593×log1p-expm1-u_binary64
593×expm1-log1p-u_binary64
581×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0714
114414
2162414
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (*.f64 x x) -1/24) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x x) (*.f64 (*.f64 x x) -1/24)) (*.f64 (*.f64 x x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))))

simplify143.0ms (2.5%)

Algorithm
egg-herbie
Rules
1075×sqr-pow_binary64
538×fma-def_binary64
520×pow-sqr_binary64
444×cube-prod_binary64
415×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011147
122147
244147
3110147
4355147
51353147
62566147
73028147
83197147
93396147
103669147
114028147
124479147
135003147
145635147
156388147
166696147
176920147
187118147
197172147
207194147
Stop Event
node limit
Counts
25 → 18
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 x (fma.f64 -1/24 (pow.f64 x 3) (*.f64 1/2 x)))
(*.f64 x (fma.f64 1/2 x (*.f64 -1/24 (pow.f64 x 3))))

prune23.0ms (0.4%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New17118
Fresh000
Picked011
Done000
Total17219
Error
0b
Counts
19 → 2
Alt Table
StatusErrorProgram
0.0b
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
15.0b
(fma.f64 1/720 (pow.f64 x 6) (sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))
Compiler

Compiled 349 to 228 computations (34.7% saved)

localize10.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))
0.0b
(pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)
15.0b
(sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)))

series4.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))
0.0ms
x
@0
(*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))
0.0ms
x
@inf
(pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)
0.0ms
x
@0
(sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)))
0.0ms
x
@0
(pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)

rewrite57.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
923×pow1_binary64
858×add-log-exp_binary64
858×log1p-expm1-u_binary64
858×expm1-log1p-u_binary64
838×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01247
124742
2251442
Stop Event
node limit
Counts
3 → 54
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)))
(pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)
(*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 x x) -1/24 1/2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 2) (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) (pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) x) (*.f64 (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4) (pow.f64 x 8)))) (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4) (pow.f64 x 8))) 1/2) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (*.f64 x x) -1/24) (fma.f64 (*.f64 x x) -1/24 1/2)) (*.f64 1/2 (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 (*.f64 x x) -1/24 1/2) (*.f64 (*.f64 x x) -1/24)) (*.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 x x) -1/24 1/2) (fma.f64 (*.f64 x x) -1/24 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) 2) (cbrt.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) 2) (*.f64 (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4)) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) (*.f64 (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 (*.f64 x x) -1/24 1/2) (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2))) (sqrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 (*.f64 x x) -1/24 1/2) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)) 2)) (cbrt.f64 (fma.f64 (*.f64 x x) -1/24 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (fma.f64 (*.f64 x x) -1/24 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4) (pow.f64 x 8)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 4) (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2)) (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) 3) (pow.f64 (pow.f64 x 4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 x 4) 3) (pow.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))))))

simplify97.0ms (1.7%)

Algorithm
egg-herbie
Rules
896×fma-def_binary64
734×distribute-lft-out_binary64
727×distribute-rgt-out_binary64
532×sqr-pow_binary64
413×unswap-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
029491
165489
2137477
3387477
41677477
55034477
65266477
75627477
86097477
96585477
107149477
Stop Event
node limit
Counts
90 → 77
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
1/4
(+.f64 1/4 (*.f64 -1/24 (pow.f64 x 2)))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(*.f64 1/576 (pow.f64 x 4))
(+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4)))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(*.f64 1/576 (pow.f64 x 4))
(+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4)))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(*.f64 1/4 (pow.f64 x 4))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/4 (pow.f64 x 4)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(*.f64 1/576 (pow.f64 x 8))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/576 (pow.f64 x 8)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(*.f64 1/576 (pow.f64 x 8))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/576 (pow.f64 x 8)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
1/4
(+.f64 1/4 (*.f64 -1/24 (pow.f64 x 2)))
(+.f64 1/4 (*.f64 (*.f64 x x) -1/24))
(fma.f64 (*.f64 x x) -1/24 1/4)
(fma.f64 x (*.f64 x -1/24) 1/4)
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(*.f64 1/576 (pow.f64 x 4))
(*.f64 (pow.f64 x 4) 1/576)
(+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4)))
(fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576))
(fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576))
(fma.f64 x (*.f64 x -1/24) (*.f64 (pow.f64 x 4) 1/576))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) 1/576 -1/24)))
(*.f64 x (fma.f64 x -1/24 (*.f64 1/576 (pow.f64 x 3))))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(*.f64 1/576 (pow.f64 x 4))
(*.f64 (pow.f64 x 4) 1/576)
(+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4)))
(fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576))
(fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576))
(fma.f64 x (*.f64 x -1/24) (*.f64 (pow.f64 x 4) 1/576))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) 1/576 -1/24)))
(*.f64 x (fma.f64 x -1/24 (*.f64 1/576 (pow.f64 x 3))))
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(+.f64 1/4 (+.f64 (*.f64 -1/24 (pow.f64 x 2)) (*.f64 1/576 (pow.f64 x 4))))
(+.f64 1/4 (fma.f64 -1/24 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/576)))
(+.f64 1/4 (fma.f64 (*.f64 x x) -1/24 (*.f64 (pow.f64 x 4) 1/576)))
(fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) 1/576 -1/24) 1/4)
(*.f64 1/4 (pow.f64 x 4))
(*.f64 (pow.f64 x 4) 1/4)
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/4 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) 1/4))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) 1/4))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(*.f64 1/576 (pow.f64 x 8))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/576 (pow.f64 x 8)))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8)))
(*.f64 (pow.f64 x 6) (fma.f64 (*.f64 x x) 1/576 -1/24))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(*.f64 1/576 (pow.f64 x 8))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (*.f64 1/576 (pow.f64 x 8)))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8)))
(*.f64 (pow.f64 x 6) (fma.f64 (*.f64 x x) 1/576 -1/24))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(+.f64 (*.f64 -1/24 (pow.f64 x 6)) (+.f64 (*.f64 1/576 (pow.f64 x 8)) (*.f64 1/4 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 1/576 (pow.f64 x 8) (*.f64 (pow.f64 x 4) 1/4)))
(fma.f64 -1/24 (pow.f64 x 6) (fma.f64 (pow.f64 x 4) 1/4 (*.f64 1/576 (pow.f64 x 8))))
(fma.f64 -1/24 (pow.f64 x 6) (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/576 1/4)))
(fma.f64 (pow.f64 x 4) 1/4 (fma.f64 -1/24 (pow.f64 x 6) (*.f64 1/576 (pow.f64 x 8))))
(*.f64 (pow.f64 x 4) (fma.f64 x (*.f64 x -1/24) (fma.f64 (pow.f64 x 4) 1/576 1/4)))

prune159.0ms (2.8%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New77077
Fresh000
Picked011
Done011
Total77279
Error
0b
Counts
79 → 2
Alt Table
StatusErrorProgram
0.0b
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
15.0b
(fma.f64 1/720 (pow.f64 x 6) (sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))
Compiler

Compiled 1592 to 1119 computations (29.7% saved)

regimes8.0ms (0.1%)

Accuracy

Total -29.2b remaining (-748083.7%)

Threshold costs -29.2b (-748083.7%)

Counts
3 → 1
Calls
Call 1
Inputs
(fma.f64 1/720 (pow.f64 x 6) (sqrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -1/24 1/2) 2) (pow.f64 x 4))))
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
(-.f64 1 (cos.f64 x))
Outputs
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
Results
3.0ms0.0bx
2.0ms0.0b(-.f64 1 (cos.f64 x))
2.0ms0.0b(cos.f64 x)
Compiler

Compiled 48 to 33 computations (31.3% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01121
11221
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))
Outputs
(fma.f64 1/720 (pow.f64 x 6) (*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2)))

end17.0ms (0.3%)

Stop Event
done
Compiler

Compiled 32 to 20 computations (37.5% saved)

Profiling

Loading profile data...