Details

Time bar (total: 6.5s)

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)

sample4.3s (67%)

Results
3.1s4408×body2048valid
857.0ms2026×body1024valid
270.0ms1086×body512valid
105.0ms736×body256valid

preprocess15.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 6 to 5 computations (16.7% saved)

simplify9.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))

eval0.0ms (0%)

Compiler

Compiled 5 to 4 computations (20% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
29.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
29.0b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 5 to 4 computations (20% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
1.6b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 9 to 5 computations (44.4% saved)

series2.0ms (0%)

Counts
1 → 4
Calls

3 calls:

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

rewrite63.0ms (1%)

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
212506
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 log1p.f64 (expm1.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (neg.f64 (cos.f64 x))))))))

simplify106.0ms (1.6%)

Algorithm
egg-herbie
Rules
601×distribute-rgt-out_binary64
520×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
342570
4201270
5441770
6479470
7530070
8629070
9727470
10771370
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)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -1/24 1/2)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 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 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2) (*.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)))))
(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/720 (pow.f64 x 6) (fma.f64 -1/40320 (pow.f64 x 8) (*.f64 -1/24 (pow.f64 x 4)))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -1/40320 -1/24) (fma.f64 1/720 (pow.f64 x 6) (*.f64 1/2 (*.f64 x x))))

eval8.0ms (0.1%)

Compiler

Compiled 390 to 244 computations (37.4% saved)

prune6.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New32436
Fresh000
Picked011
Done000
Total32537
Error
0.0b
Counts
37 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.6b
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
0.0b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
0.0b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
0.2b
(*.f64 1/2 (*.f64 x x))
29.0b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 47 to 34 computations (27.7% saved)

localize36.0ms (0.6%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 x x))
Compiler

Compiled 11 to 5 computations (54.5% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite43.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
432×pow1_binary64
420×add-sqr-sqrt_binary64
411×*-un-lft-identity_binary64
401×add-log-exp_binary64
401×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11027
211477
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x))) (cbrt.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/4 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))))))

simplify179.0ms (2.8%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
554×fabs-mul_binary64
523×pow-sqr_binary64
456×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22284
34484
410684
533484
6125984
7213684
8230084
9248484
10269284
11299184
12338484
13386584
14443384
15512184
16595484
17634684
18663684
19691084
20698284
21701884
22795984
Stop Event
node limit
Counts
26 → 16
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))

localize11.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 15 computations (42.3% saved)

series4.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite53.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
735×pow1_binary64
684×add-log-exp_binary64
684×log1p-expm1-u_binary64
684×expm1-log1p-u_binary64
669×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
116418
2188418
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(*.f64 x -1/24)
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x -1/24)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x -1/24) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x -1/24) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x -1/24)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x -1/24)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) 1/576))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) -1/24))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x -1/24) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x -1/24)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x -1/24)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x -1/24)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 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 x (*.f64 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 x (*.f64 x -1/24) 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 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 x (*.f64 x -1/24) 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (fma.f64 x (*.f64 x -1/24) 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) (pow.f64 (fma.f64 x (*.f64 x -1/24) 1/2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) (fma.f64 x (*.f64 x -1/24) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x x) 3) (pow.f64 (fma.f64 x (*.f64 x -1/24) 1/2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 x (*.f64 x -1/24) 1/2) 3) (pow.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))))))))

simplify196.0ms (3%)

Algorithm
egg-herbie
Rules
1076×sqr-pow_binary64
670×fma-def_binary64
511×pow-sqr_binary64
446×cube-prod_binary64
427×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012195
124195
246195
3115195
4367195
51445195
62770195
73302195
83493195
93704195
103983195
114350195
124833195
135366195
145990195
156743195
167055195
177279195
187475195
197531195
207553195
Stop Event
node limit
Counts
50 → 32
Calls
Call 1
Inputs
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.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/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 -1/24 x)
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 x (*.f64 x 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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.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 x (*.f64 x 1/2)))
(*.f64 x (*.f64 x (fma.f64 -1/24 (*.f64 x x) 1/2)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))

localize36.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
0.0b
(*.f64 1/2 (pow.f64 x 2))
0.1b
(*.f64 -1/24 (pow.f64 x 4))
Compiler

Compiled 33 to 26 computations (21.2% saved)

series3.0ms (0.1%)

Counts
3 → 3
Calls

9 calls:

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

rewrite68.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
446×log-prod_binary64
335×exp-prod_binary64
304×fma-def_binary64
298×prod-exp_binary64
270×pow-prod-down_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01128
123928
2273128
Stop Event
node limit
Counts
3 → 117
Calls
Call 1
Inputs
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -1/24 (pow.f64 x 4)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 8) 1/576) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -1/24 (pow.f64 x 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (sqrt.f64 -1/24)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 12) -1/13824) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24))) 2)) (cbrt.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)))) (sqrt.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 8) 1/576))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 12) -1/13824))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -1/24 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 -1/24 (pow.f64 x 4)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) (sqrt.f64 -1/24))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 12) -1/13824)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 4 (log.f64 x) (log1p.f64 -25/24)) 3) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x))) 2)) (log.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x)))) (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 x 1/2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) 1/4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 x 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 6) 1/8) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2))) 2)) (cbrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)))) (sqrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 6) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (*.f64 x 1/2)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (sqrt.f64 1/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 6) 1/8)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -1/2)) 3) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 x 4) 1/4) (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4)))) (/.f64 (*.f64 (pow.f64 x 8) 1/576) (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) (pow.f64 (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 2) (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) (sqrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8)) (/.f64 1 (-.f64 (fma.f64 (pow.f64 x 4) 1/4 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (pow.f64 x 8) 1/576)) (/.f64 1 (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/4 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2)))) (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4))) (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (pow.f64 x 8) 1/576))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8)) (-.f64 (fma.f64 (pow.f64 x 4) 1/4 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8)) (fma.f64 (pow.f64 x 8) 1/576 (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (pow.f64 x 8) 1/576)) (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8))) (neg.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/4 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (pow.f64 x 8) 1/576))) (neg.f64 (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 x 8) 1/576) (*.f64 (pow.f64 x 4) 1/4)) (-.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/4 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2)))) (fma.f64 (pow.f64 x 12) -1/13824 (*.f64 (pow.f64 x 6) 1/8))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (*.f64 x 1/2) (*.f64 1/24 (pow.f64 x 4))) (-.f64 (*.f64 (pow.f64 x 4) 1/4) (*.f64 (pow.f64 x 8) 1/576))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))) 2)) (cbrt.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))) (sqrt.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4)))) (sqrt.f64 (pow.f64 (exp.f64 x) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 -1/24) (pow.f64 x 4)) (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4)))) (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 1/2)))) (pow.f64 (exp.f64 -1/24) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 x) x)) (+.f64 1 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 1/2)))) (+.f64 1 (expm1.f64 (*.f64 -1/24 (pow.f64 x 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/24 (pow.f64 x 4) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x 1/2) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) -1/24 (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/24 (pow.f64 x 4)) 1 (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) 1/2 (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (*.f64 (*.f64 x x) -1/24) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (*.f64 x 1/2)) 1 (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (*.f64 x 1/2)) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 x) x) (*.f64 (pow.f64 (cbrt.f64 x) 2) 1/2) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 8) (*.f64 (*.f64 (cbrt.f64 x) x) -1/24) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 -1/24 (pow.f64 x 4))) (cbrt.f64 (*.f64 (pow.f64 x 8) 1/576)) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 8) 1/576)) (cbrt.f64 (*.f64 -1/24 (pow.f64 x 4))) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x (*.f64 x 1/2))) (cbrt.f64 (*.f64 (pow.f64 x 4) 1/4)) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 1/4)) (cbrt.f64 (*.f64 x (*.f64 x 1/2))) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x x) (sqrt.f64 -1/24)) (*.f64 (*.f64 x x) (sqrt.f64 -1/24)) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 1/2)) (*.f64 x (sqrt.f64 1/2)) (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/24 (*.f64 x x)) (*.f64 x x) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/24 (pow.f64 (cbrt.f64 x) 8)) (*.f64 (cbrt.f64 x) x) (*.f64 x (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 x) x (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (*.f64 (cbrt.f64 x) x)) (pow.f64 (cbrt.f64 x) 2) (*.f64 -1/24 (pow.f64 x 4)))))))

simplify188.0ms (2.9%)

Algorithm
egg-herbie
Rules
1319×sqr-pow_binary64
659×pow-sqr_binary64
493×cube-prod_binary64
407×fabs-mul_binary64
391×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01021
11921
23821
39321
429721
5117121
6193721
7206121
8223021
9242921
10270221
11306121
12351421
13404521
14467721
15542821
16574021
17596821
18616421
19621621
20623821
21707221
22798521
Stop Event
node limit
Counts
120 → 120
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))

localize12.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (sin.f64 x) (sin.f64 x))
0.0b
(+.f64 1 (cos.f64 x))
0.2b
(/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x)))
0.7b
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
Compiler

Compiled 38 to 15 computations (60.5% saved)

series6.0ms (0.1%)

Counts
4 → 44
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
1.0ms
x
@-inf
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
1.0ms
x
@inf
(/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x)))
1.0ms
x
@-inf
(/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x)))
1.0ms
x
@0
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))

rewrite102.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
483×log-prod_binary64
386×prod-diff_binary64
299×pow-prod-down_binary64
254×pow2_binary64
207×fma-def_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0943
120727
2305827
Stop Event
node limit
Counts
4 → 210
Calls
Call 1
Inputs
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
(/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x)))
(+.f64 1 (cos.f64 x))
(*.f64 (sin.f64 x) (sin.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 -1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (pow.f64 (cbrt.f64 (cos.f64 x)) 2)) (cbrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (sqrt.f64 (cos.f64 x))) (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (-.f64 1 (cos.f64 x)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (-.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (-.f64 1 (cos.f64 x))))) (log.f64 (sqrt.f64 (exp.f64 (-.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 1 (cos.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (-.f64 1 (cos.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1/2 (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 (cos.f64 (+.f64 x x)) 1/2) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 x) 2) (/.f64 1 (+.f64 1 (cos.f64 x))))))) (#(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 -1 (/.f64 1 (/.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 (/.f64 1 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 x) 1) (tan.f64 (/.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 4) 1) (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) -2) (/.f64 (pow.f64 (sin.f64 x) 2) (cbrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 x) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 (sin.f64 x) (cbrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 4) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) (cbrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 1 (cos.f64 x)) -1/2) (/.f64 (pow.f64 (sin.f64 x) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 x) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (sin.f64 x) (sqrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 4) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 -1 (neg.f64 (cos.f64 x)))) (neg.f64 (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (/.f64 1 (tan.f64 (/.f64 x 2)))) (sin.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (pow.f64 (cos.f64 x) 3))) (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2))) (cbrt.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (+.f64 1 (cos.f64 x))) 1) (pow.f64 (sin.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (+.f64 1 (cos.f64 x))) (sin.f64 x)) (sin.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (pow.f64 (cbrt.f64 (sin.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2) -1/2)))) (#(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 (pow.f64 (-.f64 1 (cos.f64 x)) 2) 1/2)))) (#(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 (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) -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 (pow.f64 (-.f64 1 (cos.f64 x)) -1/2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 1 (cos.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (sin.f64 x) 6) (pow.f64 (+.f64 1 (cos.f64 x)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (neg.f64 (/.f64 -1 (-.f64 1 (cos.f64 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sin.f64 x) (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 log.f64 (+.f64 1 (expm1.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 cbrt.f64 (/.f64 (pow.f64 (sin.f64 x) 6) (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 log1p.f64 (expm1.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 exp.f64 (*.f64 (neg.f64 (log1p.f64 (neg.f64 (cos.f64 x)))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (neg.f64 (cos.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log1p.f64 (neg.f64 (cos.f64 x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (log1p.f64 (neg.f64 (cos.f64 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (log1p.f64 (neg.f64 (cos.f64 x)))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 1 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 1 (-.f64 1 (cos.f64 x))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 1 (-.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 1 (-.f64 1 (cos.f64 x)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 1 (-.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1 (-.f64 1 (cos.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) (cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2)) (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (*.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -1/2) (pow.f64 (-.f64 1 (cos.f64 x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (*.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -1 (neg.f64 (cos.f64 x))) (/.f64 1 (neg.f64 (pow.f64 (sin.f64 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 x) -2) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (tan.f64 (/.f64 x 2))) (/.f64 1 (sin.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) 1) (/.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) 1) (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sin.f64 x)) (/.f64 1 (tan.f64 (/.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (sin.f64 x)) (/.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (sin.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (cbrt.f64 (sin.f64 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (sin.f64 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 1 (cos.f64 x)) (-.f64 1 (cos.f64 (+.f64 x x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2) 1/2)))) (#(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 (pow.f64 (-.f64 1 (cos.f64 x)) 3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) 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 (pow.f64 (-.f64 1 (cos.f64 x)) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 1 (cos.f64 x))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (cos.f64 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (+.f64 1 (cos.f64 x)) 3) (pow.f64 (sin.f64 x) 6)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (cos.f64 x)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (+.f64 1 (cos.f64 x)) (neg.f64 (pow.f64 (sin.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 (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1 (-.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 cbrt.f64 (/.f64 (pow.f64 (+.f64 1 (cos.f64 x)) 3) (pow.f64 (sin.f64 x) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log1p.f64 (neg.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (neg.f64 (log1p.f64 (neg.f64 (cos.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (neg.f64 (log1p.f64 (neg.f64 (cos.f64 x))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -1/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (neg.f64 (cos.f64 x))) -1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 1 (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 (pow.f64 (sin.f64 x) 2) (/.f64 1 (-.f64 1 (cos.f64 x))))))) (#(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 (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1) (+.f64 1 (pow.f64 (cos.f64 x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (sin.f64 x) 2) (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (sin.f64 x) 2)) (neg.f64 (-.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (sin.f64 x) 2)) (-.f64 (cos.f64 x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (cos.f64 x) 3)) (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (cos.f64 x) 3)) (+.f64 (pow.f64 (cos.f64 x) 2) (-.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 (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1)))))) (#(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)) 2) 1/2)))) (#(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 pow.f64 (/.f64 (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1) (+.f64 1 (pow.f64 (cos.f64 x) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (sin.f64 x) 6) (pow.f64 (-.f64 1 (cos.f64 x)) -3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 x) (pow.f64 (-.f64 1 (cos.f64 x)) -1/2)) 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 log.f64 (+.f64 1 (expm1.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 log1p.f64 (expm1.f64 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (cos.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log1p.f64 (cos.f64 x))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (log1p.f64 (cos.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (log1p.f64 (cos.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 1 (-.f64 1 (cos.f64 x))) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 x) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) -2) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) 1 (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) (cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -2)) (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (*.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) -2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 x)) (pow.f64 (cbrt.f64 (cos.f64 x)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 x)) 2) (cbrt.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (-.f64 1 (cos.f64 x)) -1/2) (pow.f64 (-.f64 1 (cos.f64 x)) -1/2) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (*.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) -2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 x)) (sqrt.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 -1 (neg.f64 (cos.f64 x))) (/.f64 1 (neg.f64 (pow.f64 (sin.f64 x) 2))) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (sin.f64 x) -2) (+.f64 1 (cos.f64 x)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (tan.f64 (/.f64 x 2))) (/.f64 1 (sin.f64 x)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) 1) (/.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) 2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) 1) (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (sin.f64 x) 2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (sin.f64 x)) (/.f64 1 (tan.f64 (/.f64 x 2))) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (sin.f64 x)) (/.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) (sin.f64 x)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (cbrt.f64 (sin.f64 x)) 2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 1 (cbrt.f64 (-.f64 1 (cos.f64 x)))) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (sin.f64 x)) 4)) (/.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 (sin.f64 x)) 2)) (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 (cos.f64 x)) (-.f64 1 (cos.f64 (+.f64 x x)))) 2 (neg.f64 (/.f64 (pow.f64 (cos.f64 x) 2) (-.f64 1 (cos.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (neg.f64 (pow.f64 (cos.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (cos.f64 x)) (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (sin.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1/2 (neg.f64 (*.f64 (cos.f64 (+.f64 x x)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1/2 (*.f64 -1/2 (cos.f64 (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (sin.f64 x) 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (sin.f64 x) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (sin.f64 x) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (sin.f64 x) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 1 (pow.f64 (cos.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 1/2 (*.f64 (cos.f64 (+.f64 x x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 1/2 (/.f64 (cos.f64 (+.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (sin.f64 x) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (pow.f64 (sin.f64 x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 2 (-.f64 1 (cos.f64 (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (cos.f64 (+.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (cos.f64 (+.f64 x x)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1/8 (pow.f64 (*.f64 (cos.f64 (+.f64 x x)) 1/2) 3)) (+.f64 1/4 (+.f64 (pow.f64 (*.f64 (cos.f64 (+.f64 x x)) 1/2) 2) (*.f64 1/2 (*.f64 (cos.f64 (+.f64 x x)) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (cos.f64 x) 4)) (+.f64 1 (pow.f64 (cos.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1/4 (pow.f64 (*.f64 (cos.f64 (+.f64 x x)) 1/2) 2)) (pow.f64 (cos.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (cos.f64 x) 6)) (+.f64 1 (+.f64 (pow.f64 (cos.f64 x) 4) (pow.f64 (cos.f64 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 x) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 x) 3) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 x) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 x) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 x)) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 x)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 x) -2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 2 (-.f64 1 (cos.f64 (+.f64 x x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (sin.f64 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 x) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sin.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (sin.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 -2 (log.f64 (sin.f64 x))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (sin.f64 x) 6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (sin.f64 x)))) 3))))))

simplify80.0ms (1.2%)

Algorithm
egg-herbie
Rules
968×fma-def_binary64
705×associate-*r*_binary64
663×distribute-lft-out_binary64
472×associate-/l/_binary64
360×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
070534
1157532
2372530
31135504
43863504
55448504
67577504
Stop Event
node limit
Counts
254 → 248
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)))))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 2 (pow.f64 x 2))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 1/120 (pow.f64 x 2)) (+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (*.f64 1/120 (pow.f64 x 2)) (+.f64 1/6 (+.f64 (*.f64 1/3024 (pow.f64 x 4)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
2
(+.f64 2 (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 2 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/24 (pow.f64 x 4))))
(+.f64 2 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) (*.f64 -1/720 (pow.f64 x 6)))))
(+.f64 (cos.f64 x) 1)
(+.f64 (cos.f64 x) 1)
(+.f64 (cos.f64 x) 1)
(+.f64 (cos.f64 x) 1)
(pow.f64 x 2)
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (pow.f64 x 2))
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (+.f64 (*.f64 2/45 (pow.f64 x 6)) (pow.f64 x 2)))
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (+.f64 (*.f64 -1/315 (pow.f64 x 8)) (+.f64 (*.f64 2/45 (pow.f64 x 6)) (pow.f64 x 2))))
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
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)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 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))))
(+.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)))))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 1 (cos.f64 x)))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 (*.f64 1/120 (pow.f64 x 2)) (+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(fma.f64 1/120 (*.f64 x x) (+.f64 1/6 (/.f64 2 (*.f64 x x))))
(+.f64 (/.f64 2 (*.f64 x x)) (fma.f64 (*.f64 x x) 1/120 1/6))
(+.f64 1/6 (fma.f64 x (*.f64 x 1/120) (/.f64 2 (*.f64 x x))))
(+.f64 (*.f64 1/120 (pow.f64 x 2)) (+.f64 1/6 (+.f64 (*.f64 1/3024 (pow.f64 x 4)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(fma.f64 1/120 (*.f64 x x) (+.f64 1/6 (fma.f64 1/3024 (pow.f64 x 4) (/.f64 2 (*.f64 x x)))))
(+.f64 (fma.f64 (pow.f64 x 4) 1/3024 (/.f64 2 (*.f64 x x))) (fma.f64 (*.f64 x x) 1/120 1/6))
(fma.f64 x (*.f64 x 1/120) (fma.f64 (pow.f64 x 4) 1/3024 (+.f64 1/6 (/.f64 2 (*.f64 x x)))))
(+.f64 (/.f64 2 (*.f64 x x)) (fma.f64 (pow.f64 x 4) 1/3024 (fma.f64 x (*.f64 x 1/120) 1/6)))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 (cos.f64 x) 1) (pow.f64 (sin.f64 x) 2))
(/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2))
2
(+.f64 2 (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 2 (*.f64 (*.f64 x x) -1/2))
(fma.f64 (*.f64 x x) -1/2 2)
(fma.f64 x (*.f64 x -1/2) 2)
(+.f64 2 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/24 (pow.f64 x 4))))
(+.f64 2 (fma.f64 -1/2 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/24)))
(+.f64 2 (fma.f64 (*.f64 x x) -1/2 (*.f64 (pow.f64 x 4) 1/24)))
(fma.f64 (pow.f64 x 4) 1/24 (fma.f64 x (*.f64 x -1/2) 2))
(fma.f64 x (*.f64 x -1/2) (fma.f64 (pow.f64 x 4) 1/24 2))
(+.f64 2 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) (*.f64 -1/720 (pow.f64 x 6)))))
(+.f64 2 (fma.f64 -1/2 (*.f64 x x) (fma.f64 1/24 (pow.f64 x 4) (*.f64 (pow.f64 x 6) -1/720))))
(+.f64 (fma.f64 (*.f64 x x) -1/2 2) (fma.f64 (pow.f64 x 6) -1/720 (*.f64 (pow.f64 x 4) 1/24)))
(+.f64 2 (fma.f64 (pow.f64 x 4) 1/24 (fma.f64 x (*.f64 x -1/2) (*.f64 (pow.f64 x 6) -1/720))))
(fma.f64 x (*.f64 x -1/2) (fma.f64 (pow.f64 x 4) 1/24 (fma.f64 (pow.f64 x 6) -1/720 2)))
(+.f64 (cos.f64 x) 1)
(+.f64 1 (cos.f64 x))
(+.f64 (cos.f64 x) 1)
(+.f64 1 (cos.f64 x))
(+.f64 (cos.f64 x) 1)
(+.f64 1 (cos.f64 x))
(+.f64 (cos.f64 x) 1)
(+.f64 1 (cos.f64 x))
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (pow.f64 x 2))
(fma.f64 -1/3 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))
(fma.f64 (pow.f64 x 4) -1/3 (*.f64 x x))
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (+.f64 (*.f64 2/45 (pow.f64 x 6)) (pow.f64 x 2)))
(fma.f64 -1/3 (pow.f64 x 4) (fma.f64 2/45 (pow.f64 x 6) (*.f64 x x)))
(fma.f64 (pow.f64 x 4) -1/3 (fma.f64 x x (*.f64 (pow.f64 x 6) 2/45)))
(+.f64 (*.f64 -1/3 (pow.f64 x 4)) (+.f64 (*.f64 -1/315 (pow.f64 x 8)) (+.f64 (*.f64 2/45 (pow.f64 x 6)) (pow.f64 x 2))))
(fma.f64 -1/3 (pow.f64 x 4) (fma.f64 -1/315 (pow.f64 x 8) (fma.f64 2/45 (pow.f64 x 6) (*.f64 x x))))
(fma.f64 (pow.f64 x 4) -1/3 (fma.f64 (pow.f64 x 8) -1/315 (fma.f64 x x (*.f64 (pow.f64 x 6) 2/45))))
(fma.f64 (pow.f64 x 4) -1/3 (fma.f64 x x (fma.f64 (pow.f64 x 8) -1/315 (*.f64 (pow.f64 x 6) 2/45))))
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)
(pow.f64 (sin.f64 x) 2)

eval256.0ms (3.9%)

Compiler

Compiled 6369 to 4278 computations (32.8% saved)

prune54.0ms (0.8%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New4133416
Fresh000
Picked101
Done314
Total4174421
Error
0b
Counts
421 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
0.0b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
0.1b
(*.f64 x (*.f64 x 1/2))
0.6b
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
Compiler

Compiled 35 to 25 computations (28.6% saved)

localize5.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
Compiler

Compiled 19 to 12 computations (36.8% saved)

series6.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
4.0ms
x
@0
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
1.0ms
x
@inf
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
1.0ms
x
@-inf
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))

rewrite51.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
709×pow1_binary64
657×add-log-exp_binary64
657×log1p-expm1-u_binary64
657×expm1-log1p-u_binary64
645×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify113.0ms (1.7%)

Algorithm
egg-herbie
Rules
600×distribute-rgt-out_binary64
520×sqr-pow_binary64
480×associate-+l+_binary64
478×distribute-lft-out_binary64
413×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030222
166222
2140222
3432222
42017222
54405222
64780222
75286222
86276222
97260222
107699222
Stop Event
node limit
Counts
27 → 25
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)))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
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)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 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 (*.f64 x x) (fma.f64 (*.f64 x x) -1/24 1/2) (*.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)))))
(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))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))
(/.f64 (*.f64 (sin.f64 x) (sin.f64 (*.f64 1/2 x))) (cos.f64 (*.f64 1/2 x)))
(*.f64 (sin.f64 (*.f64 1/2 x)) (/.f64 (sin.f64 x) (cos.f64 (*.f64 1/2 x))))
(*.f64 (sin.f64 x) (/.f64 (sin.f64 (*.f64 1/2 x)) (cos.f64 (*.f64 1/2 x))))

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
0.2b
(/.f64 2 (*.f64 x x))
0.7b
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
Compiler

Compiled 29 to 17 computations (41.4% saved)

series4.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

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

rewrite76.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
939×pow1_binary64
882×add-log-exp_binary64
881×log1p-expm1-u_binary64
881×expm1-log1p-u_binary64
97×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0930
119926
2245726
Stop Event
node limit
Counts
3 → 82
Calls
Call 1
Inputs
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
(/.f64 2 (*.f64 x x))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6))) (cbrt.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -2)) (/.f64 1 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -1/2) (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (neg.f64 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 2) -1) (pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) -1) (pow.f64 (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3)))) (+.f64 1/36 (-.f64 (/.f64 4 (pow.f64 x 4)) (/.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 1/36 (/.f64 4 (pow.f64 x 4)))) (+.f64 1/6 (*.f64 -2 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (fma.f64 2 (pow.f64 x -2) 1/6))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 2 (pow.f64 x -2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (pow.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (pow.f64 x -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 x -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (pow.f64 x -2))) (cbrt.f64 (/.f64 4 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 4 (pow.f64 x 4))) (cbrt.f64 (*.f64 2 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 2) x) (/.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (/.f64 1 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x -2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 2 x) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (pow.f64 x -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2 (pow.f64 x -2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 2) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 8 (pow.f64 (pow.f64 x -2) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) 1/2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 4 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 2) (pow.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 2 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 8 (pow.f64 (pow.f64 x -2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2 (pow.f64 x -2))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 2 (pow.f64 x -2) 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1/36 (+.f64 1/6 (*.f64 -2 (pow.f64 x -2)))) (/.f64 (/.f64 4 (pow.f64 x 4)) (+.f64 1/6 (*.f64 -2 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) (pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 2) (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3))) (/.f64 1 (+.f64 1/36 (-.f64 (/.f64 4 (pow.f64 x 4)) (/.f64 1/3 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1/36 (/.f64 4 (pow.f64 x 4))) (/.f64 1 (+.f64 1/6 (*.f64 -2 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 1 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1/36 (-.f64 (/.f64 4 (pow.f64 x 4)) (/.f64 1/3 (*.f64 x x)))) (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1/6 (*.f64 -2 (pow.f64 x -2))) (-.f64 1/36 (/.f64 4 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 2) (/.f64 1 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3))) (+.f64 1/36 (-.f64 (/.f64 4 (pow.f64 x 4)) (/.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3))) (+.f64 (/.f64 4 (pow.f64 x 4)) (-.f64 1/36 (/.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1/36 (/.f64 4 (pow.f64 x 4))) (+.f64 1/6 (*.f64 -2 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 1/216 (*.f64 8 (pow.f64 (pow.f64 x -2) 3)))) (neg.f64 (+.f64 1/36 (-.f64 (/.f64 4 (pow.f64 x 4)) (/.f64 1/3 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1/36 (/.f64 4 (pow.f64 x 4)))) (neg.f64 (+.f64 1/6 (*.f64 -2 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (/.f64 4 (pow.f64 x 4)) 1/36) (-.f64 (*.f64 2 (pow.f64 x -2)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 2 (pow.f64 x -2) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 2 (pow.f64 x -2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 2 (pow.f64 x -2) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 2 (pow.f64 x -2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 2 (pow.f64 x -2)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (pow.f64 x -2) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 4 (pow.f64 x 4))) (cbrt.f64 (*.f64 2 (pow.f64 x -2))) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 2) x) (/.f64 (sqrt.f64 2) x) 1/6)))))

simplify51.0ms (0.8%)

Algorithm
egg-herbie
Rules
625×times-frac_binary64
478×distribute-lft-out_binary64
413×unswap-sqr_binary64
410×associate-/l/_binary64
393×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
041369
1103369
2249369
3724369
43145369
Stop Event
node limit
Counts
118 → 102
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/288 (pow.f64 x 6)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4))))
(+.f64 (*.f64 1/288 (pow.f64 x 6)) (+.f64 (*.f64 -1/3456 (pow.f64 x 8)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))))
6
(-.f64 6 (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 72 (/.f64 1 (pow.f64 x 2))) (*.f64 10368 (/.f64 1 (pow.f64 x 6)))))
6
(-.f64 6 (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 72 (/.f64 1 (pow.f64 x 2))) (*.f64 10368 (/.f64 1 (pow.f64 x 6)))))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (pow.f64 x 2))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
1/6
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
1/6
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
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 1/288 (pow.f64 x 6)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4))))
(fma.f64 1/288 (pow.f64 x 6) (fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4))))
(fma.f64 -1/24 (pow.f64 x 4) (fma.f64 1/288 (pow.f64 x 6) (*.f64 1/2 (*.f64 x x))))
(fma.f64 1/288 (pow.f64 x 6) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x))))
(+.f64 (*.f64 1/288 (pow.f64 x 6)) (+.f64 (*.f64 -1/3456 (pow.f64 x 8)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))))
(fma.f64 1/288 (pow.f64 x 6) (fma.f64 -1/3456 (pow.f64 x 8) (fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))))
(fma.f64 -1/3456 (pow.f64 x 8) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 1/288 (pow.f64 x 6) (*.f64 1/2 (*.f64 x x)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -1/3456 -1/24) (*.f64 1/288 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 1/288 (pow.f64 x 6) (*.f64 -1/3456 (pow.f64 x 8)))))
6
(-.f64 6 (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 6 (/.f64 72 (*.f64 x x)))
(+.f64 6 (/.f64 -72 (*.f64 x x)))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (/.f64 864 (pow.f64 x 4))) (/.f64 72 (*.f64 x x)))
(+.f64 (/.f64 864 (pow.f64 x 4)) (-.f64 6 (/.f64 72 (*.f64 x x))))
(+.f64 6 (+.f64 (/.f64 864 (pow.f64 x 4)) (/.f64 -72 (*.f64 x x))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 72 (/.f64 1 (pow.f64 x 2))) (*.f64 10368 (/.f64 1 (pow.f64 x 6)))))
(+.f64 6 (-.f64 (/.f64 864 (pow.f64 x 4)) (+.f64 (/.f64 72 (*.f64 x x)) (/.f64 10368 (pow.f64 x 6)))))
(+.f64 (/.f64 864 (pow.f64 x 4)) (-.f64 6 (+.f64 (/.f64 72 (*.f64 x x)) (/.f64 10368 (pow.f64 x 6)))))
(+.f64 (/.f64 -72 (*.f64 x x)) (+.f64 (+.f64 6 (/.f64 864 (pow.f64 x 4))) (/.f64 -10368 (pow.f64 x 6))))
(+.f64 (+.f64 6 (/.f64 -72 (*.f64 x x))) (+.f64 (/.f64 864 (pow.f64 x 4)) (/.f64 -10368 (pow.f64 x 6))))
(+.f64 6 (+.f64 (/.f64 864 (pow.f64 x 4)) (+.f64 (/.f64 -72 (*.f64 x x)) (/.f64 -10368 (pow.f64 x 6)))))
6
(-.f64 6 (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 6 (/.f64 72 (*.f64 x x)))
(+.f64 6 (/.f64 -72 (*.f64 x x)))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (*.f64 72 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 6 (/.f64 864 (pow.f64 x 4))) (/.f64 72 (*.f64 x x)))
(+.f64 (/.f64 864 (pow.f64 x 4)) (-.f64 6 (/.f64 72 (*.f64 x x))))
(+.f64 6 (+.f64 (/.f64 864 (pow.f64 x 4)) (/.f64 -72 (*.f64 x x))))
(-.f64 (+.f64 6 (*.f64 864 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 72 (/.f64 1 (pow.f64 x 2))) (*.f64 10368 (/.f64 1 (pow.f64 x 6)))))
(+.f64 6 (-.f64 (/.f64 864 (pow.f64 x 4)) (+.f64 (/.f64 72 (*.f64 x x)) (/.f64 10368 (pow.f64 x 6)))))
(+.f64 (/.f64 864 (pow.f64 x 4)) (-.f64 6 (+.f64 (/.f64 72 (*.f64 x x)) (/.f64 10368 (pow.f64 x 6)))))
(+.f64 (/.f64 -72 (*.f64 x x)) (+.f64 (+.f64 6 (/.f64 864 (pow.f64 x 4))) (/.f64 -10368 (pow.f64 x 6))))
(+.f64 (+.f64 6 (/.f64 -72 (*.f64 x x))) (+.f64 (/.f64 864 (pow.f64 x 4)) (/.f64 -10368 (pow.f64 x 6))))
(+.f64 6 (+.f64 (/.f64 864 (pow.f64 x 4)) (+.f64 (/.f64 -72 (*.f64 x x)) (/.f64 -10368 (pow.f64 x 6)))))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(/.f64 2 (pow.f64 x 2))
(/.f64 2 (*.f64 x x))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
1/6
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
1/6
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))
(+.f64 1/6 (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/6 (/.f64 2 (*.f64 x x)))

eval48.0ms (0.7%)

Compiler

Compiled 1655 to 1384 computations (16.4% saved)

prune20.0ms (0.3%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New1261127
Fresh000
Picked011
Done033
Total1265131
Error
0b
Counts
131 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
61.4b
6
0.0b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
0.1b
(*.f64 x (*.f64 x 1/2))
0.6b
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
Compiler

Compiled 37 to 27 computations (27% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0%)

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
61.4b
6
0.0b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
0.1b
(*.f64 x (*.f64 x 1/2))
0.6b
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
Compiler

Compiled 37 to 27 computations (27% saved)

regimes20.0ms (0.3%)

Counts
9 → 1
Calls
Call 1
Inputs
6
(*.f64 x (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x x))
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 (sin.f64 x) (sin.f64 x))))
Outputs
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
Calls

5 calls:

6.0ms
x
5.0ms
(-.f64 1 (cos.f64 x))
2.0ms
(cos.f64 x)
2.0ms
(cos.f64 x)
2.0ms
(-.f64 1 (cos.f64 x))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 1 (cos.f64 x))
0.0b1(-.f64 1 (cos.f64 x))
0.0b1(cos.f64 x)
0.0b1(cos.f64 x)
Compiler

Compiled 83 to 55 computations (33.7% saved)

regimes19.0ms (0.3%)

Counts
6 → 1
Calls
Call 1
Inputs
6
(*.f64 x (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x x))
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
Outputs
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
Calls

5 calls:

6.0ms
(cos.f64 x)
5.0ms
x
2.0ms
(cos.f64 x)
2.0ms
(-.f64 1 (cos.f64 x))
2.0ms
(-.f64 1 (cos.f64 x))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 1 (cos.f64 x))
0.0b1(-.f64 1 (cos.f64 x))
0.0b1(cos.f64 x)
0.0b1(cos.f64 x)
Compiler

Compiled 53 to 35 computations (34% saved)

regimes16.0ms (0.3%)

Accuracy

Total -61.6b remaining (-43951%)

Threshold costs -61.6b (-43951%)

Counts
5 → 1
Calls
Call 1
Inputs
6
(*.f64 x (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x x))
(/.f64 1 (+.f64 1/6 (/.f64 2 (*.f64 x x))))
(-.f64 1 (cos.f64 x))
Outputs
(*.f64 x (*.f64 x 1/2))
Calls

5 calls:

5.0ms
(cos.f64 x)
4.0ms
x
2.0ms
(-.f64 1 (cos.f64 x))
2.0ms
(-.f64 1 (cos.f64 x))
2.0ms
(cos.f64 x)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(-.f64 1 (cos.f64 x))
0.1b1(-.f64 1 (cos.f64 x))
0.1b1(cos.f64 x)
0.1b1(cos.f64 x)
Compiler

Compiled 43 to 30 computations (30.2% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01633
12133
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
(*.f64 x (*.f64 x 1/2))
6
Outputs
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
(*.f64 x (*.f64 x 1/2))
6
Compiler

Compiled 27 to 19 computations (29.6% saved)

soundness101.0ms (1.6%)

Algorithm
egg-herbie
Rules
968×fma-def_binary64
705×associate-*r*_binary64
663×distribute-lft-out_binary64
472×associate-/l/_binary64
360×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
070534
1157532
2372530
31135504
43863504
55448504
67577504
Stop Event
node limit
Compiler

Compiled 40 to 28 computations (30% saved)

end29.0ms (0.4%)

Compiler

Compiled 24 to 16 computations (33.3% saved)

Profiling

Loading profile data...