Details

Time bar (total: 7.8s)

analyze0.0ms (0%)

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

Compiled 12 to 9 computations (25% saved)

sample5.3s (67.4%)

Results
3.8s4327×body2048valid
920.0ms2088×body1024valid
409.0ms1074×body512valid
179.0ms767×body256valid

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

simplify8.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
28.6b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
28.6b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 5 to 4 computations (20% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 9 to 5 computations (44.4% saved)

series1.0ms (0%)

Counts
1 → 4
Calls

3 calls:

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

rewrite56.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11026
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))))))))

simplify105.0ms (1.3%)

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)

prune8.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.0b
(*.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (/.f64 1 (+.f64 1 (cos.f64 x))))
28.6b
(-.f64 1 (cos.f64 x))
0.0b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2))
0.0b
(/.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (+.f64 1 (cos.f64 x)))
0.2b
(*.f64 1/2 (*.f64 x x))
Compiler

Compiled 46 to 31 computations (32.6% saved)

localize5.0ms (0.1%)

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

rewrite45.0ms (0.6%)

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

simplify174.0ms (2.2%)

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

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

rewrite58.0ms (0.7%)

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

simplify206.0ms (2.6%)

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

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 16 computations (52.9% saved)

series4.0ms (0.1%)

Counts
3 → 32
Calls

9 calls:

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

rewrite81.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
454×log-prod_binary64
368×prod-diff_binary64
340×exp-prod_binary64
287×pow-prod-down_binary64
241×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0926
120218
2281718
Stop Event
node limit
Counts
3 → 149
Calls
Call 1
Inputs
(*.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (/.f64 1 (+.f64 1 (cos.f64 x))))
(*.f64 (sin.f64 x) (sin.f64 x))
(+.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 -1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (cbrt.f64 (pow.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 (sin.f64 x) (/.f64 (+.f64 1 (cos.f64 x)) (sin.f64 x)))))) (#(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 1 (/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (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 1 (cos.f64 (+.f64 x x))) (*.f64 (+.f64 1 (cos.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (sin.f64 x) 2)) (+.f64 -1 (neg.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 (+.f64 x x))) 1) (*.f64 2 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 (+.f64 x x))) -1) (*.f64 2 (+.f64 -1 (neg.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (-.f64 1 (cos.f64 (+.f64 x x)))) (*.f64 (+.f64 -1 (neg.f64 (cos.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (sqrt.f64 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (sin.f64 x) 2) 1) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (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 (-.f64 1 (pow.f64 (cos.f64 x) 3)) (+.f64 1 (fma.f64 (cos.f64 x) (cos.f64 x) (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 (+.f64 x x))) (/.f64 1 (+.f64 1 (cos.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (pow.f64 (sin.f64 x) 2)) (+.f64 -1 (neg.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (sin.f64 x) 2) -1) (+.f64 -1 (neg.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 1 (+.f64 1 (cos.f64 x))) (-.f64 1 (cos.f64 (+.f64 x 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 (E.f64) (log1p.f64 (neg.f64 (cos.f64 x))))))) (#(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 (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 (+.f64 1 (cos.f64 x)) (pow.f64 (sin.f64 x) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 (cos.f64 x)))) 2)) (cbrt.f64 (log1p.f64 (neg.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log1p.f64 (neg.f64 (cos.f64 x))))) (sqrt.f64 (log1p.f64 (neg.f64 (cos.f64 x)))))))) (#(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 (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 exp.f64 (*.f64 (*.f64 (log1p.f64 (neg.f64 (cos.f64 x))) 1) 1))))))
((#(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 (/.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 (-.f64 1 (cos.f64 (+.f64 x x))) 1) 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 (E.f64) (*.f64 2 (log.f64 (sin.f64 x))))))) (#(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 (exp.f64 2) (log.f64 (sin.f64 x)))))) (#(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 pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 2 (log.f64 (sin.f64 x)))) 2)) (cbrt.f64 (*.f64 2 (log.f64 (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (*.f64 2 (log.f64 (sin.f64 x))))) (sqrt.f64 (*.f64 2 (log.f64 (sin.f64 x)))))))) (#(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 (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))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sin.f64 x)) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sin.f64 x)) 2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 2 (log.f64 (sin.f64 x))) 1) 1))))))
((#(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 (-.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 (pow.f64 (sin.f64 x) 2) (/.f64 1 (-.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 (+.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 (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1)))))) (#(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 1 (/.f64 1 (+.f64 1 (cos.f64 x))))))) (#(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 (+.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2) (/.f64 1 (cbrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (+.f64 1 (cos.f64 x))) (pow.f64 (+.f64 1 (cos.f64 x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -1 (neg.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 (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 (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 (/.f64 1 (+.f64 1 (cos.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log1p.f64 (cos.f64 x)))))) (#(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 (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 (exp.f64 (pow.f64 (cbrt.f64 (log1p.f64 (cos.f64 x))) 2)) (cbrt.f64 (log1p.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log1p.f64 (cos.f64 x)))) (sqrt.f64 (log1p.f64 (cos.f64 x))))))) (#(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 exp.f64 (*.f64 (*.f64 (log1p.f64 (cos.f64 x)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 x) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 x)) (cbrt.f64 (pow.f64 (cos.f64 x) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (cos.f64 x) 2)) (cbrt.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 x)) (sqrt.f64 (cos.f64 x)) 1)))))

simplify62.0ms (0.8%)

Algorithm
egg-herbie
Rules
886×distribute-rgt-out_binary64
842×fma-def_binary64
716×associate-*l*_binary64
650×distribute-lft-in_binary64
538×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
055364
1125362
2294360
3954334
44359334
56652334
Stop Event
node limit
Counts
181 → 176
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))
(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)
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)
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 (*.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 x (*.f64 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 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -1/40320 -1/24) (*.f64 1/720 (pow.f64 x 6))))
(/.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)))
(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 (pow.f64 x 4) -1/3 (*.f64 x x))
(fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))
(+.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)))
(fma.f64 x x (fma.f64 (pow.f64 x 4) -1/3 (*.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 (pow.f64 x 6) 2/45 (fma.f64 x x (*.f64 (pow.f64 x 8) -1/315))))
(fma.f64 x x (fma.f64 (pow.f64 x 4) -1/3 (fma.f64 (pow.f64 x 6) 2/45 (*.f64 (pow.f64 x 8) -1/315))))
(fma.f64 x x (fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -1/315 -1/3) (*.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)
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 (pow.f64 x 4) 1/24 (*.f64 x (*.f64 x -1/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 4) 1/24 (*.f64 (pow.f64 x 6) -1/720)))
(+.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)))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x 1/24) -1/2) (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))

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 26 to 10 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite59.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
993×pow1_binary64
931×add-log-exp_binary64
930×log1p-expm1-u_binary64
930×expm1-log1p-u_binary64
95×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0814
11796
226186
Stop Event
node limit
Counts
1 → 42
Calls
Call 1
Inputs
(/.f64 (*.f64 (sin.f64 x) (sin.f64 x)) (+.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 -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 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 (sin.f64 x) (/.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 x) (*.f64 (sin.f64 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 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 (cbrt.f64 (pow.f64 (sin.f64 x) 4)) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 x)) 2) (/.f64 1 (+.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 (neg.f64 (pow.f64 (sin.f64 x) 2)) (/.f64 1 (+.f64 (neg.f64 (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) (/.f64 (sin.f64 x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 x) (+.f64 1 (cos.f64 x))) (sin.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.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 (/.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 1 (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 (cbrt.f64 (pow.f64 (sin.f64 x) 4)) (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 (/.f64 1 (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 (sin.f64 x) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.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 (pow.f64 (sin.f64 x) 2) (+.f64 1 (pow.f64 (cos.f64 x) 3))) (+.f64 1 (-.f64 (pow.f64 (cos.f64 x) 2) (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (pow.f64 (sin.f64 x) 2)) (-.f64 1 (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 pow.f64 (/.f64 1 (-.f64 1 (cos.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (+.f64 (neg.f64 (cos.f64 x)) -1)))))) (#(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 (pow.f64 (sin.f64 x) 2) 3) (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 (log.f64 (-.f64 1 (cos.f64 x))))))))

simplify71.0ms (0.9%)

Algorithm
egg-herbie
Rules
697×associate-/l/_binary64
604×distribute-rgt-out_binary64
478×distribute-lft-out_binary64
425×unswap-sqr_binary64
399×associate-/r/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
032182
168182
2142182
3454158
42090158
54579158
65264158
77348158
Stop Event
node limit
Counts
54 → 53
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))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 1/2 (*.f64 x x) (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 -1/24 (pow.f64 x 4) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 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 x (*.f64 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/720 (pow.f64 x 6) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 -1/40320 (pow.f64 x 8) (*.f64 1/2 (*.f64 x x)))))
(/.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)))

eval113.0ms (1.4%)

Compiler

Compiled 5449 to 3167 computations (41.9% saved)

prune54.0ms (0.7%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New3894393
Fresh000
Picked101
Done404
Total3944398
Error
0b
Counts
398 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 x (*.f64 x 1/2))
0.0b
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
0.0b
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
Compiler

Compiled 44 to 29 computations (34.1% saved)

localize6.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

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

series4.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
2.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)))
1.0ms
x
@0
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))

rewrite57.0ms (0.7%)

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

simplify111.0ms (1.4%)

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

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 44 to 22 computations (50% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite58.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
651×pow1_binary64
604×add-log-exp_binary64
604×log1p-expm1-u_binary64
604×expm1-log1p-u_binary64
589×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify198.0ms (2.5%)

Algorithm
egg-herbie
Rules
1319×sqr-pow_binary64
659×pow-sqr_binary64
576×cube-prod_binary64
404×fabs-mul_binary64
377×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09168
118168
236168
387168
4297168
51115168
61838168
71962168
82131168
92330168
102601168
112960168
123414168
133945168
144577168
155328168
165636168
175860168
186056168
196110168
206134168
216968168
227881168
Stop Event
node limit
Counts
50 → 29
Calls
Call 1
Inputs
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
Outputs
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 2))
(*.f64 -1/24 (*.f64 x x))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))
(*.f64 -1/24 (pow.f64 x 4))

localize20.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (cos.f64 x))
0.0b
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
0.1b
(*.f64 (pow.f64 x 4) -1/3)
Compiler

Compiled 40 to 26 computations (35% saved)

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
1.0ms
x
@inf
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
1.0ms
x
@inf
(*.f64 (pow.f64 x 4) -1/3)
1.0ms
x
@0
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
1.0ms
x
@0
(*.f64 (pow.f64 x 4) -1/3)

rewrite70.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
487×log-prod_binary64
386×exp-prod_binary64
324×prod-diff_binary64
283×pow2_binary64
280×pow-prod-down_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01126
123426
2284826
Stop Event
node limit
Counts
2 → 73
Calls
Call 1
Inputs
(*.f64 (pow.f64 x 4) -1/3)
(/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 x 4) -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 (pow.f64 x 4) -1/3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 (pow.f64 x 4) -1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 (pow.f64 x 4) -1/3)))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 (pow.f64 x 4) -1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 x 4) -1/3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) -1/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/9 (pow.f64 x 8)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 x 4) -1/3) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) -1/3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (sqrt.f64 -1/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3))) 2)) (cbrt.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3)))) (sqrt.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/9 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 4) -1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 x 4) -1/3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (pow.f64 x 4) -1/3))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) -1/3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 4) -1/3)) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (/.f64 1 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) (pow.f64 (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) 2) (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) 2) (*.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (/.f64 1 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) (sqrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) (*.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) (/.f64 1 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (/.f64 1 (+.f64 (neg.f64 (cos.f64 x)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 1 (cos.f64 x))) (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) 2) 1) (/.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) 1) (/.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) -2) (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (cbrt.f64 (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) 2) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 -1/3))) (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 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (hypot.f64 1 (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) 2) (hypot.f64 1 (sqrt.f64 (cos.f64 x)))) (/.f64 (cbrt.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (hypot.f64 1 (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.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 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (pow.f64 (sin.f64 x) 2)) (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 (cos.f64 x)) (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) 3) (pow.f64 (+.f64 1 (cos.f64 x)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (+.f64 1 (cos.f64 x)) (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))) 2)) (cbrt.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x))))) (sqrt.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 (neg.f64 (cos.f64 x)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) 3) (pow.f64 (+.f64 1 (cos.f64 x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (log1p.f64 (cos.f64 x)) (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3)))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (-.f64 (log.f64 (fma.f64 x x (*.f64 (pow.f64 x 4) -1/3))) (log1p.f64 (cos.f64 x))) 1) 1))))))

simplify83.0ms (1.1%)

Algorithm
egg-herbie
Rules
535×distribute-rgt-out_binary64
504×associate-*l/_binary64
478×distribute-lft-out_binary64
415×*-commutative_binary64
413×unswap-sqr_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
038346
183346
2166346
3509346
42349346
55712328
66566328
78000328
Stop Event
node limit
Counts
97 → 88
Calls
Call 1
Inputs
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (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)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 -1/48 (pow.f64 x 6))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 -1/48 (pow.f64 x 6)) (*.f64 -23/5760 (pow.f64 x 8)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
Outputs
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.f64 -1/3 (pow.f64 x 4))
(*.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 (pow.f64 x 4) -1/24))
(fma.f64 (pow.f64 x 4) -1/24 (*.f64 1/2 (*.f64 x x)))
(fma.f64 x (*.f64 x 1/2) (*.f64 (pow.f64 x 4) -1/24))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 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/48 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 (pow.f64 x 4) -1/24 (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 4) -1/24 (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2) (*.f64 -1/48 (pow.f64 x 6)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 -1/48 (pow.f64 x 6)) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 (pow.f64 x 4) -1/24 (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 4) -1/24 (fma.f64 -23/5760 (pow.f64 x 8) (*.f64 -1/48 (pow.f64 x 6)))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -23/5760 -1/24) (fma.f64 x (*.f64 x 1/2) (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 4) -1/24 (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(*.f64 (pow.f64 x 4) (/.f64 -1/3 (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1)))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(*.f64 (pow.f64 x 4) (/.f64 -1/3 (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 (*.f64 -1/3 (*.f64 x x)) 1) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))

eval99.0ms (1.3%)

Compiler

Compiled 4036 to 2622 computations (35% saved)

prune57.0ms (0.7%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New2311232
Fresh000
Picked101
Done033
Total2324236
Error
0b
Counts
236 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 x (*.f64 x 1/2))
0.0b
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))
0.0b
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
Compiler

Compiled 47 to 31 computations (34% saved)

localize47.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (cos.f64 x))
0.0b
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
0.0b
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
0.2b
(*.f64 -1/3 (*.f64 x x))
Compiler

Compiled 55 to 29 computations (47.3% saved)

series9.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

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

rewrite126.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
663×log-prod_binary64
504×prod-diff_binary64
481×fma-def_binary64
232×pow1/3_binary64
225×expm1-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01243
126141
2362341
Stop Event
node limit
Counts
3 → 147
Calls
Call 1
Inputs
(*.f64 -1/3 (*.f64 x x))
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -1/3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x))) (cbrt.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 -1/3 (*.f64 x x) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/3 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -1/3 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 -1/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/27 (pow.f64 (*.f64 x x) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/9 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -1/3) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 -1/27 (pow.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 -1/3 (*.f64 x x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 x) (log.f64 -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 x) (log.f64 -1/3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 -1/3 (*.f64 x x) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 -1/3 (*.f64 x x) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 -1/3 (*.f64 x x) 1)) (pow.f64 (cbrt.f64 (fma.f64 -1/3 (*.f64 x x) 1)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 -1/3 (*.f64 x x) 1)) 2) (cbrt.f64 (fma.f64 -1/3 (*.f64 x x) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 1 (*.f64 x (sqrt.f64 -1/3))) (hypot.f64 1 (*.f64 x (sqrt.f64 -1/3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 -1/27 (pow.f64 (*.f64 x x) 3) 1) (/.f64 1 (+.f64 1 (fma.f64 1/9 (pow.f64 x 4) (*.f64 1/3 (*.f64 x x))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 1/9 (pow.f64 x 4))) (/.f64 1 (+.f64 1 (*.f64 1/3 (*.f64 x x)))) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1))) (cbrt.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (fma.f64 -1/3 (*.f64 x x) 1)) (/.f64 (+.f64 1 (cos.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 -1/27 (pow.f64 (*.f64 x x) 3) 1) (*.f64 x x)) (*.f64 (+.f64 1 (fma.f64 1/9 (pow.f64 x 4) (*.f64 1/3 (*.f64 x x)))) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 1/9 (pow.f64 x 4))) (*.f64 x x)) (*.f64 (+.f64 1 (*.f64 1/3 (*.f64 x x))) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (fma.f64 -1/27 (pow.f64 (*.f64 x x) 3) 1)) (*.f64 (+.f64 1 (cos.f64 x)) (+.f64 1 (fma.f64 1/9 (pow.f64 x 4) (*.f64 1/3 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (-.f64 1 (*.f64 1/9 (pow.f64 x 4)))) (*.f64 (+.f64 1 (cos.f64 x)) (+.f64 1 (*.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 -1/27 (pow.f64 (*.f64 x x) 3) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (+.f64 1 (fma.f64 1/9 (pow.f64 x 4) (*.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 1/9 (pow.f64 x 4))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (+.f64 1 (*.f64 1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (fma.f64 -1/3 (*.f64 x x) 1)) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (*.f64 x x)) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (fma.f64 -1/27 (pow.f64 (*.f64 x x) 3) 1)) (+.f64 1 (fma.f64 1/9 (pow.f64 x 4) (*.f64 1/3 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (-.f64 1 (*.f64 1/9 (pow.f64 x 4)))) (+.f64 1 (*.f64 1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (fma.f64 -1/3 (*.f64 x x) 1)) x) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (fma.f64 -1/3 (*.f64 x x) 1)) 1) (/.f64 (+.f64 1 (cos.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (fma.f64 -1/3 (*.f64 x x) 1)) (neg.f64 x)) (+.f64 (neg.f64 (cos.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) (hypot.f64 1 (*.f64 x (sqrt.f64 -1/3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 -1/3 (*.f64 x x) 1) 3) (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3) (pow.f64 (fma.f64 -1/3 (*.f64 x x) 1) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (fma.f64 -1/3 (*.f64 x x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 -1/3 (*.f64 x x) 1) 3) (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3) (pow.f64 (fma.f64 -1/3 (*.f64 x x) 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 -1/3 (*.f64 x x) 1) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (*.f64 (*.f64 x x) (fma.f64 -1/3 (*.f64 x x) 1))) (log1p.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (log.f64 (*.f64 (*.f64 x x) (fma.f64 -1/3 (*.f64 x x) 1))) (log1p.f64 (cos.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 x (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 x (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (/.f64 1 (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (/.f64 1 (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 1 (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 1 (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 2) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 2) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 2) (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 2) (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) 2) (*.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) x) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) 2) (*.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) x) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) x) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) x) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x 1) (/.f64 x (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x 1) (/.f64 x (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) 1) (/.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 1 (cos.f64 x))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) 1) (/.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 x (cbrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 x (cbrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 (*.f64 x x) (cbrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (/.f64 (*.f64 x x) (cbrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (*.f64 x x) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (*.f64 x x) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (+.f64 1 (pow.f64 (cos.f64 x) 3))) (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (+.f64 1 (pow.f64 (cos.f64 x) 3))) (fma.f64 (cos.f64 x) (-.f64 (cos.f64 x) 1) 1) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (*.f64 (sin.f64 x) (sin.f64 x))) (-.f64 1 (cos.f64 x)) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 x x) (*.f64 (sin.f64 x) (sin.f64 x))) (-.f64 1 (cos.f64 x)) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) 2)) (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) 2)) (cbrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x))))) (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x))))) (sqrt.f64 (/.f64 x (+.f64 1 (cos.f64 x)))) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (*.f64 -1/3 (*.f64 x x)) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) (*.f64 -1/3 (*.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))) (cbrt.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (/.f64 (+.f64 1 (cos.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (pow.f64 x 4)) (/.f64 (+.f64 1 (cos.f64 x)) (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x x)) (+.f64 (neg.f64 (cos.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) x) (+.f64 (neg.f64 (cos.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (neg.f64 x)) (+.f64 (neg.f64 (cos.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x x) (sqrt.f64 (+.f64 1 (cos.f64 x)))) (sqrt.f64 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x x) 1) (+.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x x) (pow.f64 (cbrt.f64 (+.f64 1 (cos.f64 x))) 2)) (cbrt.f64 (+.f64 1 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x (sqrt.f64 (+.f64 1 (cos.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (*.f64 x x) 3) (pow.f64 (+.f64 1 (cos.f64 x)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) (pow.f64 (/.f64 x (+.f64 1 (cos.f64 x))) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (/.f64 x (+.f64 1 (cos.f64 x))) 3) (pow.f64 x 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 (cos.f64 x)) (*.f64 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 x 4) (pow.f64 (+.f64 1 (cos.f64 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 x x) 3) (pow.f64 (+.f64 1 (cos.f64 x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (/.f64 x (+.f64 1 (cos.f64 x))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 x (+.f64 1 (cos.f64 x))) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 2 (log.f64 x)) (log1p.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (*.f64 2 (log.f64 x)) (log1p.f64 (cos.f64 x))) 1))))))

simplify101.0ms (1.3%)

Algorithm
egg-herbie
Rules
946×distribute-rgt-out_binary64
629×fma-def_binary64
608×associate-*l*_binary64
524×distribute-lft-in_binary64
490×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
050512
1115512
2248512
3789512
43788512
56436512
67818512
Stop Event
node limit
Counts
183 → 172
Calls
Call 1
Inputs
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (pow.f64 x 2))
(*.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/48 (pow.f64 x 6))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 -1/48 (pow.f64 x 6)) (*.f64 -23/5760 (pow.f64 x 8)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/48 (pow.f64 x 6))))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 17/5760 (pow.f64 x 8)) (*.f64 1/48 (pow.f64 x 6)))))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
Outputs
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 -1/3 (pow.f64 x 2))
(*.f64 -1/3 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 (*.f64 x x) 1/2)
(*.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 (*.f64 x x) 1/2 (*.f64 -1/24 (pow.f64 x 4)))
(fma.f64 x (*.f64 x 1/2) (*.f64 -1/24 (pow.f64 x 4)))
(*.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/48 (pow.f64 x 6))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) 1/2 (fma.f64 -1/24 (pow.f64 x 4) (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 -1/48 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -1/24) 1/2) (*.f64 -1/48 (pow.f64 x 6)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 -1/48 (pow.f64 x 6)) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 1/2 (*.f64 x x) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 (*.f64 x x) 1/2 (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 -1/24 (pow.f64 x 4) (fma.f64 -1/48 (pow.f64 x 6) (*.f64 -23/5760 (pow.f64 x 8)))))
(fma.f64 x (*.f64 x 1/2) (fma.f64 -1/48 (pow.f64 x 6) (fma.f64 -1/24 (pow.f64 x 4) (*.f64 -23/5760 (pow.f64 x 8)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(*.f64 (pow.f64 x 4) (/.f64 -1/3 (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x)))) (/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1)))
(*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))))
(*.f64 (pow.f64 x 4) (/.f64 -1/3 (+.f64 1 (cos.f64 x))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(+.f64 (*.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 (cos.f64 x) 1))) (/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1)))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x))))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x))
(fma.f64 -1/3 (/.f64 (pow.f64 x 4) (+.f64 1 (cos.f64 x))) (*.f64 x (/.f64 x (+.f64 1 (cos.f64 x)))))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 (*.f64 x x) 1/2)
(*.f64 x (*.f64 x 1/2))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 1/8 (pow.f64 x 4) (*.f64 (*.f64 x x) 1/2))
(fma.f64 (*.f64 x x) 1/2 (*.f64 (pow.f64 x 4) 1/8))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x 1/8) 1/2)))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/48 (pow.f64 x 6))))
(fma.f64 1/8 (pow.f64 x 4) (fma.f64 1/2 (*.f64 x x) (*.f64 (pow.f64 x 6) 1/48)))
(fma.f64 (pow.f64 x 4) 1/8 (fma.f64 (*.f64 x x) 1/2 (*.f64 (pow.f64 x 6) 1/48)))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 6) 1/48 (*.f64 (pow.f64 x 4) 1/8)))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 4) 1/8 (*.f64 (pow.f64 x 6) 1/48)))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x 1/8) 1/2) (*.f64 (pow.f64 x 6) 1/48))
(+.f64 (*.f64 1/8 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 17/5760 (pow.f64 x 8)) (*.f64 1/48 (pow.f64 x 6)))))
(fma.f64 1/8 (pow.f64 x 4) (fma.f64 1/2 (*.f64 x x) (fma.f64 17/5760 (pow.f64 x 8) (*.f64 (pow.f64 x 6) 1/48))))
(fma.f64 (pow.f64 x 4) 1/8 (fma.f64 (*.f64 x x) 1/2 (fma.f64 (pow.f64 x 6) 1/48 (*.f64 (pow.f64 x 8) 17/5760))))
(fma.f64 (pow.f64 x 4) 1/8 (fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 6) 1/48 (*.f64 (pow.f64 x 8) 17/5760))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x 1/8) 1/2) (fma.f64 (pow.f64 x 6) 1/48 (*.f64 (pow.f64 x 8) 17/5760)))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 1 (cos.f64 x)))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))
(/.f64 (pow.f64 x 2) (+.f64 (cos.f64 x) 1))
(/.f64 (*.f64 x x) (+.f64 1 (cos.f64 x)))
(*.f64 (/.f64 x (+.f64 1 (cos.f64 x))) x)
(*.f64 x (/.f64 x (+.f64 1 (cos.f64 x))))

eval102.0ms (1.3%)

Compiler

Compiled 5273 to 3054 computations (42.1% saved)

prune32.0ms (0.4%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New2331234
Fresh000
Picked101
Done033
Total2344238
Error
0b
Counts
238 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 x (*.f64 x 1/2))
0.2b
(*.f64 (+.f64 1 (*.f64 -1/3 (*.f64 x x))) (*.f64 x (/.f64 x 2)))
0.0b
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))
0.0b
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
Compiler

Compiled 44 to 29 computations (34.1% saved)

regimes14.0ms (0.2%)

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

3 calls:

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

Compiled 121 to 68 computations (43.8% saved)

regimes17.0ms (0.2%)

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

3 calls:

11.0ms
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(cos.f64 x)
Compiler

Compiled 79 to 46 computations (41.8% saved)

regimes5.0ms (0.1%)

Accuracy

Total -0.0b remaining (-17.1%)

Threshold costs -0.0b (-17.1%)

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

1 calls:

4.0ms
x
Results
ErrorSegmentsBranch
0.2b1x
Compiler

Compiled 26 to 16 computations (38.5% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01740
12540
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x 1/2))
Outputs
(*.f64 (sin.f64 x) (tan.f64 (/.f64 x 2)))
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 1/2 (*.f64 x x)))
(+.f64 (*.f64 (*.f64 x (*.f64 x -1/24)) (*.f64 x x)) (*.f64 (*.f64 x x) 1/2))
(*.f64 x (*.f64 x 1/2))
Compiler

Compiled 30 to 19 computations (36.7% saved)

soundness89.0ms (1.1%)

Algorithm
egg-herbie
Rules
886×distribute-rgt-out_binary64
842×fma-def_binary64
716×associate-*l*_binary64
650×distribute-lft-in_binary64
538×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
055364
1125362
2294360
3954334
44359334
56652334
Stop Event
node limit
Compiler

Compiled 40 to 28 computations (30% saved)

end23.0ms (0.3%)

Compiler

Compiled 28 to 17 computations (39.3% saved)

Profiling

Loading profile data...