Details

Time bar (total: 21.2s)

analyze3.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%50%50%0
0%50%50%1
0%50%50%2
37.5%12.5%50%3
43.7%6.2%50%4
46.8%3.1%50%5
48.4%1.6%50%6
49.2%0.8%50%7
49.6%0.4%50%8
49.8%0.2%50%9
49.9%0.1%50%10
49.9%0%50%11
49.9%0%50%12
Compiler

Compiled 15 to 10 computations (33.3% saved)

sample17.2s (81.3%)

Results
14.0s4370×body2048valid
2.5s2065×body1024valid
423.0ms993×body512valid
194.0ms828×body256valid

preprocess87.0ms (0.4%)

Algorithm
egg-herbie
Rules
577×fma-def_binary64
278×fma-neg_binary64
236×times-frac_binary64
190×associate-/r*_binary64
175×div-sub_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
11111
21811
32911
45611
58611
615011
723911
840311
974011
10167411
11287011
12351711
13358011
14361811
15362811
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Outputs
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 9 to 6 computations (33.3% saved)

simplify68.0ms (0.3%)

Algorithm
egg-herbie
Rules
577×fma-def_binary64
278×fma-neg_binary64
236×times-frac_binary64
190×associate-/r*_binary64
175×div-sub_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
11111
21811
32911
45611
58611
615011
723911
840311
974011
10167411
11287011
12351711
13358011
14361811
15362811
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Outputs
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))

eval0.0ms (0%)

Compiler

Compiled 8 to 5 computations (37.5% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 8 to 5 computations (37.5% saved)

localize10.0ms (0%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.1b
(-.f64 x (sin.f64 x))
Compiler

Compiled 17 to 5 computations (70.6% saved)

series7.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
2.0ms
x
@inf
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
1.0ms
x
@0
(-.f64 x (sin.f64 x))
1.0ms
x
@0
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
1.0ms
x
@inf
(-.f64 x (sin.f64 x))

rewrite94.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
924×pow1_binary64
864×add-log-exp_binary64
864×log1p-expm1-u_binary64
864×expm1-log1p-u_binary64
845×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify95.0ms (0.4%)

Algorithm
egg-herbie
Rules
766×distribute-rgt-out_binary64
740×distribute-lft-out_binary64
663×fma-def_binary64
638×associate-*l*_binary64
493×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
052314
1132296
2302296
3872284
43807284
56577284
67472284
Stop Event
node limit
Counts
93 → 91
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5))))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 -1/362880 (pow.f64 x 9)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5)))))
x
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(+.f64 (*.f64 -1 (sin.f64 x)) x)
x
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
Outputs
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5)))
(fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5))))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/5040 (pow.f64 x 7) (*.f64 -1/120 (pow.f64 x 5))))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 -1/120 (pow.f64 x 5) (*.f64 1/5040 (pow.f64 x 7))))
(fma.f64 -1/120 (pow.f64 x 5) (fma.f64 1/6 (pow.f64 x 3) (*.f64 1/5040 (pow.f64 x 7))))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 -1/362880 (pow.f64 x 9)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5)))))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 -1/362880 (pow.f64 x 9) (fma.f64 1/5040 (pow.f64 x 7) (*.f64 -1/120 (pow.f64 x 5)))))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 -1/362880 (pow.f64 x 9) (fma.f64 -1/120 (pow.f64 x 5) (*.f64 1/5040 (pow.f64 x 7)))))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 -1/120 (pow.f64 x 5) (fma.f64 1/5040 (pow.f64 x 7) (*.f64 -1/362880 (pow.f64 x 9)))))
(fma.f64 1/5040 (pow.f64 x 7) (fma.f64 1/6 (pow.f64 x 3) (fma.f64 -1/362880 (pow.f64 x 9) (*.f64 -1/120 (pow.f64 x 5)))))
x
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
x
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
(+.f64 (*.f64 -1 (sin.f64 x)) x)
(fma.f64 -1 (sin.f64 x) x)
(-.f64 x (sin.f64 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 -143/604800 (pow.f64 x 8) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -143/604800 (pow.f64 x 8)))))
(fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -143/604800 (pow.f64 x 8))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x)
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(*.f64 (cos.f64 x) (/.f64 x (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x)
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(*.f64 (cos.f64 x) (/.f64 x (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))

eval33.0ms (0.2%)

Compiler

Compiled 1218 to 470 computations (61.4% saved)

prune43.0ms (0.2%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New791291
Fresh000
Picked011
Done000
Total791392
Error
0.1b
Counts
92 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
28.9b
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.7b
(*.f64 1/6 (*.f64 x x))
11.2b
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
28.9b
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
28.9b
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
28.9b
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
10.8b
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5)))) (tan.f64 x))
0.3b
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
0.3b
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
10.9b
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
29.4b
(/.f64 (exp.f64 (log.f64 (-.f64 x (sin.f64 x)))) (tan.f64 x))
0.4b
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
28.9b
(pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 3)
Compiler

Compiled 320 to 231 computations (27.8% saved)

localize65.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -143/604800 (pow.f64 x 8))
0.0b
(*.f64 -11/15120 (pow.f64 x 6))
0.1b
(*.f64 -23/360 (pow.f64 x 4))
0.2b
(*.f64 1/6 (pow.f64 x 2))
Compiler

Compiled 93 to 75 computations (19.4% saved)

series11.0ms (0.1%)

Counts
4 → 0
Calls

12 calls:

TimeVariablePointExpression
2.0ms
x
@0
(*.f64 -23/360 (pow.f64 x 4))
1.0ms
x
@-inf
(*.f64 -143/604800 (pow.f64 x 8))
1.0ms
x
@0
(*.f64 -143/604800 (pow.f64 x 8))
1.0ms
x
@0
(*.f64 -11/15120 (pow.f64 x 6))
1.0ms
x
@0
(*.f64 1/6 (pow.f64 x 2))

rewrite89.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
619×log-prod_binary64
381×pow2_binary64
310×pow-prod-down_binary64
263×expm1-udef_binary64
263×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01828
137428
2373828
Stop Event
node limit
Counts
4 → 68
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 -23/360 (pow.f64 x 4))
(*.f64 -11/15120 (pow.f64 x 6))
(*.f64 -143/604800 (pow.f64 x 8))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/6 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 1/6))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 1/6)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 1/6 (*.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) 1/36) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 1/6)) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 x 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/6)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/6 (*.f64 x x))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -23/360 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) -23/360)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) -23/360))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) -23/360))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) -23/360))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -23/360 (pow.f64 x 4)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -23/360 (pow.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 8) 529/129600) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -23/360 (pow.f64 x 4)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -23/360 (pow.f64 x 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (sqrt.f64 -23/360)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 8) 529/129600))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) -23/360))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -23/360 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -23/360 (pow.f64 x 4)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -23/360 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -23/360 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 4 (log.f64 x) (log.f64 -23/360)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 4 (log.f64 x) (log.f64 -23/360)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -11/15120 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -11/15120) (pow.f64 x 6))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -11/15120) (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -11/15120) (pow.f64 x 6)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -11/15120) (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -11/15120 (pow.f64 x 6)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -11/15120 (pow.f64 x 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 121/228614400 (pow.f64 x 12)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -11/15120 (pow.f64 x 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (cbrt.f64 -11/15120)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 -11/15120)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 121/228614400 (pow.f64 x 12)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -11/15120) (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -11/15120 (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -11/15120 (pow.f64 x 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -11/15120 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -11/15120 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 6 (log.f64 x) (log.f64 -11/15120)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 6 (log.f64 x) (log.f64 -11/15120)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -143/604800 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -143/604800) (pow.f64 x 8))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -143/604800) (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -143/604800) (pow.f64 x 8)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -143/604800) (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -143/604800 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -143/604800 (pow.f64 x 8)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 20449/365783040000 (pow.f64 x 16)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -143/604800 (pow.f64 x 8)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -143/604800 (pow.f64 x 8))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) (sqrt.f64 -143/604800)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 20449/365783040000 (pow.f64 x 16)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -143/604800) (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -143/604800 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -143/604800 (pow.f64 x 8)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -143/604800 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -143/604800 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 8 (log.f64 x) (log.f64 -143/604800)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 8 (log.f64 x) (log.f64 -143/604800)) 1))))))

simplify12.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
68 → 68
Calls
Call 1
Inputs
Outputs

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 1/6 (*.f64 x x))
Compiler

Compiled 11 to 5 computations (54.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite41.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify172.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
26 → 16
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 1/6 (pow.f64 x 3))
10.6b
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
Compiler

Compiled 22 to 15 computations (31.8% saved)

series5.0ms (0%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
1.0ms
x
@-inf
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
1.0ms
x
@0
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
0.0ms
x
@-inf
(*.f64 1/6 (pow.f64 x 3))
0.0ms
x
@inf
(*.f64 1/6 (pow.f64 x 3))

rewrite76.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
879×pow1_binary64
827×add-log-exp_binary64
827×log1p-expm1-u_binary64
827×expm1-log1p-u_binary64
810×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
117919
2220019
Stop Event
node limit
Counts
2 → 53
Calls
Call 1
Inputs
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 1/6 (pow.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (/.f64 1 (/.f64 (tan.f64 x) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) (*.f64 1/6 (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/6 (pow.f64 x 3)) (/.f64 1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))) (pow.f64 (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))) 2) (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (cbrt.f64 1/6)) 2) (*.f64 (*.f64 x (cbrt.f64 1/6)) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))) (sqrt.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (*.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) -1/6) (/.f64 1 (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (tan.f64 x)) (*.f64 1/6 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 3) 1) (/.f64 1/6 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/6 (tan.f64 x)) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (*.f64 x (cbrt.f64 1/6)) 2) 1) (/.f64 (*.f64 x (cbrt.f64 1/6)) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) 1) (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/6 (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (pow.f64 x 3) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 3) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 1/6 (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 1/6 (pow.f64 x 3)) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (*.f64 x (cbrt.f64 1/6)) 2) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/6 (sqrt.f64 (tan.f64 x))) (/.f64 (pow.f64 x 3) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 3) (sqrt.f64 (tan.f64 x))) (/.f64 1/6 (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (tan.f64 x))) (/.f64 (*.f64 1/6 (pow.f64 x 3)) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (*.f64 x (cbrt.f64 1/6)) 2) (sqrt.f64 (tan.f64 x))) (/.f64 (*.f64 x (cbrt.f64 1/6)) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 1/6 (pow.f64 x 3)) (sin.f64 x)) (cos.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 x (cbrt.f64 1/6)) (cbrt.f64 (tan.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 6 (/.f64 (tan.f64 x) (pow.f64 x 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 1/6 (pow.f64 x 3)) (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (*.f64 (pow.f64 x 6) 1/36) (pow.f64 (tan.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 1/6 (pow.f64 x 3)) 3) (pow.f64 (tan.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (/.f64 (pow.f64 x 3) (tan.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 (pow.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 (pow.f64 x 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (cbrt.f64 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 6) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 (pow.f64 x 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (pow.f64 x 3))))))))

simplify39.0ms (0.2%)

Algorithm
egg-herbie
Rules
747×unswap-sqr_binary64
724×distribute-lft-out_binary64
644×associate-*l*_binary64
584×distribute-rgt-out_binary64
540×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031206
175206
2193206
3669206
43687206
Stop Event
node limit
Counts
65 → 63
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (*.f64 1/6 (pow.f64 x 2)))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -1/270 (pow.f64 x 6))))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -1/2835 (pow.f64 x 8)) (*.f64 -1/270 (pow.f64 x 6)))))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (*.f64 1/6 (pow.f64 x 2)))
(fma.f64 -1/18 (pow.f64 x 4) (*.f64 1/6 (*.f64 x x)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -1/18 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -1/18) 1/6)))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -1/270 (pow.f64 x 6))))
(fma.f64 -1/18 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (*.f64 -1/270 (pow.f64 x 6))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -1/18 (pow.f64 x 4) (*.f64 -1/270 (pow.f64 x 6))))
(+.f64 (*.f64 -1/18 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -1/2835 (pow.f64 x 8)) (*.f64 -1/270 (pow.f64 x 6)))))
(fma.f64 -1/18 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (fma.f64 -1/2835 (pow.f64 x 8) (*.f64 -1/270 (pow.f64 x 6)))))
(fma.f64 -1/18 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (fma.f64 -1/270 (pow.f64 x 6) (*.f64 -1/2835 (pow.f64 x 8)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -1/18 (pow.f64 x 4) (fma.f64 -1/270 (pow.f64 x 6) (*.f64 -1/2835 (pow.f64 x 8)))))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))
(*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x)))
(*.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))))
(*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3)))
(/.f64 1/6 (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) (cos.f64 x)))
(/.f64 (cos.f64 x) (/.f64 (/.f64 (sin.f64 x) (pow.f64 x 3)) 1/6))
(*.f64 (pow.f64 x 3) (*.f64 (/.f64 1/6 (sin.f64 x)) (cos.f64 x)))

localize10.0ms (0%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))
0.0b
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
3.1b
(-.f64 x (sin.f64 x))
Compiler

Compiled 27 to 8 computations (70.4% saved)

series7.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
3.0ms
x
@inf
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
2.0ms
x
@-inf
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
1.0ms
x
@0
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
1.0ms
x
@inf
(/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))
0.0ms
x
@-inf
(/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))

rewrite69.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
432×log-prod_binary64
402×prod-diff_binary64
334×exp-prod_binary64
268×pow-prod-down_binary64
239×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0825
117922
2251322
Stop Event
node limit
Counts
2 → 114
Calls
Call 1
Inputs
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
(/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 x (tan.f64 x)) (/.f64 (sin.f64 x) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (sin.f64 x)) (/.f64 1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) (cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -2)) (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) (sqrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2) 1) (/.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) 1) (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (tan.f64 x)) -2) (/.f64 (-.f64 x (sin.f64 x)) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2) (cbrt.f64 (pow.f64 (tan.f64 x) 2))) (/.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (cbrt.f64 (pow.f64 (tan.f64 x) 2))) (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (tan.f64 x) -1/2) (/.f64 (-.f64 x (sin.f64 x)) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2) (sqrt.f64 (tan.f64 x))) (/.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (sqrt.f64 (tan.f64 x))) (/.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (tan.f64 x)) (-.f64 x (sin.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (neg.f64 (tan.f64 x))) (neg.f64 (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (sin.f64 x)) (sin.f64 x)) (cos.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) -2) (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2) (/.f64 (tan.f64 x) (cbrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 x (sin.f64 x))) (/.f64 (tan.f64 x) (sqrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 x (sin.f64 x))) (neg.f64 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x 3) (pow.f64 (sin.f64 x) 3)) (*.f64 (tan.f64 x) (fma.f64 x x (*.f64 (sin.f64 x) (+.f64 x (sin.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 x) 2)) (*.f64 (tan.f64 x) (+.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x (sin.f64 x)) (sqrt.f64 (tan.f64 x))) (sqrt.f64 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x (sin.f64 x)) 1) (tan.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (tan.f64 x)) (/.f64 1 (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) -2) (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x (sin.f64 x)) (cbrt.f64 (pow.f64 (tan.f64 x) 2))) (cbrt.f64 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (-.f64 x (sin.f64 x)) 3) (pow.f64 (tan.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) -1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (-.f64 x (sin.f64 x))) 1) (log.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (-.f64 x (sin.f64 x))) (*.f64 (log.f64 (tan.f64 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (-.f64 x (sin.f64 x))) 1) (*.f64 (log.f64 (tan.f64 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) -1/2) (log.f64 (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (tan.f64 x) (/.f64 1 (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) (cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 2)) (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (tan.f64 x) 2)) (*.f64 (cbrt.f64 (tan.f64 x)) (/.f64 1 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (tan.f64 x)) (*.f64 (sqrt.f64 (tan.f64 x)) (/.f64 1 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (tan.f64 x)) (/.f64 1 (neg.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 x (sin.f64 x))) (tan.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (tan.f64 x) 2)) 1) (/.f64 (cbrt.f64 (tan.f64 x)) (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (tan.f64 x)) 1) (/.f64 (sqrt.f64 (tan.f64 x)) (-.f64 x (sin.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) -2) (/.f64 (tan.f64 x) (cbrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (tan.f64 x) 2)) (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2)) (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (tan.f64 x)) (pow.f64 (cbrt.f64 (-.f64 x (sin.f64 x))) 2)) (/.f64 (sqrt.f64 (tan.f64 x)) (cbrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (-.f64 x (sin.f64 x)) -1/2) (/.f64 (tan.f64 x) (sqrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (tan.f64 x) 2)) (sqrt.f64 (-.f64 x (sin.f64 x)))) (/.f64 (cbrt.f64 (tan.f64 x)) (sqrt.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (tan.f64 x) (-.f64 (pow.f64 x 3) (pow.f64 (sin.f64 x) 3))) (fma.f64 x x (*.f64 (sin.f64 x) (+.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (tan.f64 x) (-.f64 (*.f64 x x) (pow.f64 (sin.f64 x) 2))) (+.f64 x (sin.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) -3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (tan.f64 x) 3) (pow.f64 (-.f64 x (sin.f64 x)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 2)) (cbrt.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))) (sqrt.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (tan.f64 x) (neg.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (tan.f64 x) 3) (pow.f64 (-.f64 x (sin.f64 x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (tan.f64 x)) 1) (log.f64 (-.f64 x (sin.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (tan.f64 x)) (*.f64 (log.f64 (-.f64 x (sin.f64 x))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (tan.f64 x)) 1) (*.f64 (log.f64 (-.f64 x (sin.f64 x))) 1)))))))

simplify46.0ms (0.2%)

Algorithm
egg-herbie
Rules
763×associate-/l*_binary64
586×associate-/r*_binary64
370×fma-def_binary64
310×fma-neg_binary64
309×associate-*l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
089574
1257562
2825550
33092490
Stop Event
node limit
Counts
138 → 146
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (cos.f64 x)) (*.f64 -1 (/.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) x))))
(+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -1 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2))) (+.f64 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2)) (*.f64 -1 (*.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) (sin.f64 x))))) (pow.f64 x 2))) (+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (cos.f64 x)) (*.f64 -1 (/.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) x)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x) (+.f64 (*.f64 -1 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x)) (*.f64 -1 (cos.f64 x)))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -1 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2))) (+.f64 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2)) (*.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) (sin.f64 x)))) (pow.f64 x 2))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x)) (+.f64 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x) (*.f64 -1 (cos.f64 x))))))
(/.f64 6 (pow.f64 x 2))
(+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2))))
(+.f64 23/10 (+.f64 (*.f64 1271/1400 (pow.f64 x 2)) (*.f64 6 (/.f64 1 (pow.f64 x 2)))))
(+.f64 23/10 (+.f64 (*.f64 46187/126000 (pow.f64 x 4)) (+.f64 (*.f64 1271/1400 (pow.f64 x 2)) (*.f64 6 (/.f64 1 (pow.f64 x 2))))))
(/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (cos.f64 x) (pow.f64 x 4))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))))
(/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (cos.f64 x) (pow.f64 x 4))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 1/6 (*.f64 x x)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6))))
(fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 1/6 (*.f64 x x))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -143/604800 (pow.f64 x 8)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x)
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (cos.f64 x)) (*.f64 -1 (/.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) x))))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -1 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2))) (+.f64 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2)) (*.f64 -1 (*.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) (sin.f64 x))))) (pow.f64 x 2))) (+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (cos.f64 x)) (*.f64 -1 (/.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) x)))))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x)
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x) (+.f64 (*.f64 -1 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x)) (*.f64 -1 (cos.f64 x)))))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -1 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2))) (+.f64 (*.f64 (cos.f64 x) (pow.f64 (sin.f64 x) 2)) (*.f64 (+.f64 (*.f64 (cos.f64 x) (sin.f64 x)) (*.f64 -1 (*.f64 (cos.f64 x) (sin.f64 x)))) (sin.f64 x)))) (pow.f64 x 2))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x)) (+.f64 (/.f64 (*.f64 (cos.f64 x) (sin.f64 x)) x) (*.f64 -1 (cos.f64 x))))))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) x) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2))))
(+.f64 23/10 (/.f64 6 (*.f64 x x)))
(+.f64 23/10 (+.f64 (*.f64 1271/1400 (pow.f64 x 2)) (*.f64 6 (/.f64 1 (pow.f64 x 2)))))
(+.f64 23/10 (fma.f64 1271/1400 (*.f64 x x) (/.f64 6 (*.f64 x x))))
(+.f64 23/10 (fma.f64 (*.f64 x x) 1271/1400 (/.f64 6 (*.f64 x x))))
(+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10))
(+.f64 23/10 (+.f64 (*.f64 46187/126000 (pow.f64 x 4)) (+.f64 (*.f64 1271/1400 (pow.f64 x 2)) (*.f64 6 (/.f64 1 (pow.f64 x 2))))))
(+.f64 23/10 (fma.f64 46187/126000 (pow.f64 x 4) (fma.f64 1271/1400 (*.f64 x x) (/.f64 6 (*.f64 x x)))))
(+.f64 23/10 (fma.f64 (pow.f64 x 4) 46187/126000 (fma.f64 (*.f64 x x) 1271/1400 (/.f64 6 (*.f64 x x)))))
(+.f64 (fma.f64 x (*.f64 x 1271/1400) (/.f64 6 (*.f64 x x))) (fma.f64 (pow.f64 x 4) 46187/126000 23/10))
(/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))
(/.f64 (sin.f64 x) (*.f64 x (cos.f64 x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))))
(*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))))
(+.f64 (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x)))) (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))) (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3)))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (sin.f64 x) (*.f64 x x)) (/.f64 (pow.f64 (sin.f64 x) 2) (pow.f64 x 3)))))
(+.f64 (*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x)))) (/.f64 (pow.f64 (/.f64 (sin.f64 x) x) 3) (cos.f64 x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (cos.f64 x) (pow.f64 x 4))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))))
(+.f64 (+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (pow.f64 x 4) (cos.f64 x)))) (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x)))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))) (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (pow.f64 x 4) (cos.f64 x))))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (+.f64 (/.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (cos.f64 x)) (pow.f64 x 4)) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (sin.f64 x) (*.f64 x x)) (/.f64 (pow.f64 (sin.f64 x) 2) (pow.f64 x 3))))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (pow.f64 x 4)) (*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x x))))))
(/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))
(/.f64 (sin.f64 x) (*.f64 x (cos.f64 x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))))
(*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x))))
(+.f64 (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x)))) (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))) (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3)))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (sin.f64 x) (*.f64 x x)) (/.f64 (pow.f64 (sin.f64 x) 2) (pow.f64 x 3)))))
(+.f64 (*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x)))) (/.f64 (pow.f64 (/.f64 (sin.f64 x) x) 3) (cos.f64 x)))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (cos.f64 x) (pow.f64 x 4))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (cos.f64 x) (pow.f64 x 2))) (/.f64 (sin.f64 x) (*.f64 (cos.f64 x) x)))))
(+.f64 (+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (pow.f64 x 4) (cos.f64 x)))) (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 (*.f64 x x) (cos.f64 x)))))
(+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (*.f64 (cos.f64 x) (pow.f64 x 3))) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 2) (*.f64 x (*.f64 x (cos.f64 x)))) (+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (/.f64 (pow.f64 (sin.f64 x) 4) (*.f64 (pow.f64 x 4) (cos.f64 x))))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (+.f64 (/.f64 (/.f64 (pow.f64 (sin.f64 x) 4) (cos.f64 x)) (pow.f64 x 4)) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (sin.f64 x) (*.f64 x x)) (/.f64 (pow.f64 (sin.f64 x) 2) (pow.f64 x 3))))))
(+.f64 (/.f64 (sin.f64 x) (*.f64 x (cos.f64 x))) (*.f64 (/.f64 (sin.f64 x) (cos.f64 x)) (+.f64 (/.f64 (pow.f64 (sin.f64 x) 3) (pow.f64 x 4)) (*.f64 (+.f64 (/.f64 (sin.f64 x) x) 1) (/.f64 (sin.f64 x) (*.f64 x x))))))

localize21.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -1/120 (pow.f64 x 5))
0.1b
(*.f64 1/6 (pow.f64 x 3))
10.6b
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
Compiler

Compiled 49 to 37 computations (24.5% saved)

series4.0ms (0%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
1.0ms
x
@-inf
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
1.0ms
x
@0
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
0.0ms
x
@0
(*.f64 -1/120 (pow.f64 x 5))
0.0ms
x
@-inf
(*.f64 -1/120 (pow.f64 x 5))

rewrite68.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
624×log-prod_binary64
354×pow2_binary64
318×fma-def_binary64
244×expm1-udef_binary64
244×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01326
129526
2363326
Stop Event
node limit
Counts
2 → 57
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
(*.f64 -1/120 (pow.f64 x 5))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (/.f64 1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 2)) (*.f64 (cbrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) (pow.f64 (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) 2) (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (*.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) (sqrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (/.f64 1 (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (tan.f64 x)) (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 2)) 1) (/.f64 (cbrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) 1) (/.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (tan.f64 x)) -2) (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 2)) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (sqrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (tan.f64 x) -1/2) (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 2)) (sqrt.f64 (tan.f64 x))) (/.f64 (cbrt.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) (sqrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (sin.f64 x)) (cos.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (tan.f64 x) (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 3) (pow.f64 (tan.f64 x) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (tan.f64 x) (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) 3) (pow.f64 (tan.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (fma.f64 1/6 (pow.f64 x 3) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -1/120 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 5)) -1/120)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 5)) -1/120))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 5)) -1/120))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 5)) -1/120))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -1/120 (pow.f64 x 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/120 (pow.f64 x 5)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 10) 1/14400) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -1/120 (pow.f64 x 5))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 -1/120) (pow.f64 x 5/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 15) -1/1728000) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 10) 1/14400))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 5)) -1/120))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -1/120 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 15) -1/1728000))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -1/120 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -1/120 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 5 (log.f64 x) (log.f64 -1/120)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 5 (log.f64 x) (log.f64 -1/120)) 1))))))

simplify47.0ms (0.2%)

Algorithm
egg-herbie
Rules
772×unswap-sqr_binary64
742×distribute-lft-out_binary64
719×associate-*l*_binary64
627×distribute-rgt-out_binary64
604×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
037308
192308
2236308
3809260
44306260
Stop Event
node limit
Counts
69 → 69
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 -1/1080 (pow.f64 x 6))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -19/113400 (pow.f64 x 8)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 -1/1080 (pow.f64 x 6)))))
(*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x)))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x)))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 -1/1080 (pow.f64 x 6))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -1/1080 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -1/1080 (pow.f64 x 6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -19/113400 (pow.f64 x 8)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 -1/1080 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -19/113400 (pow.f64 x 8) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -1/1080 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -1/1080 (pow.f64 x 6) (*.f64 -19/113400 (pow.f64 x 8)))))
(fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -1/1080 (pow.f64 x 6) (fma.f64 -19/113400 (pow.f64 x 8) (*.f64 1/6 (*.f64 x x)))))
(*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x)))
(*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5))))
(*.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)))
(/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))
(*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x)))
(*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5))))
(*.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)))
(/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/6 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 3)) (sin.f64 x))) (*.f64 -1/120 (/.f64 (*.f64 (cos.f64 x) (pow.f64 x 5)) (sin.f64 x))))
(fma.f64 1/6 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 3))) (*.f64 -1/120 (/.f64 (cos.f64 x) (/.f64 (sin.f64 x) (pow.f64 x 5)))))
(fma.f64 -1/120 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 5)) (*.f64 1/6 (*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (pow.f64 x 3))))
(fma.f64 1/6 (*.f64 (pow.f64 x 3) (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 (*.f64 (pow.f64 x 5) (*.f64 -1/120 (cos.f64 x))) (sin.f64 x)))
(*.f64 (/.f64 (cos.f64 x) (sin.f64 x)) (+.f64 (*.f64 -1/120 (pow.f64 x 5)) (*.f64 1/6 (pow.f64 x 3))))

eval149.0ms (0.7%)

Compiler

Compiled 7246 to 4445 computations (38.7% saved)

prune72.0ms (0.3%)

Pruning

20 alts after pruning (18 fresh and 2 done)

PrunedKeptTotal
New40414418
Fresh347
Picked101
Done325
Total41120431
Error
0.0b
Counts
431 → 20
Alt Table
Click to see full alt table
StatusErrorProgram
1.3b
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
33.7b
(*.f64 (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (cbrt.f64 (tan.f64 x))))
0.4b
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
0.7b
(*.f64 x (*.f64 1/6 x))
28.9b
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
15.9b
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
28.9b
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.7b
(*.f64 1/6 (*.f64 x x))
0.8b
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
28.9b
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
1.3b
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
0.3b
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
29.1b
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
1.2b
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
28.9b
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
1.2b
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
1.5b
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
0.3b
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
29.4b
(/.f64 (exp.f64 (log.f64 (-.f64 x (sin.f64 x)))) (tan.f64 x))
28.9b
(pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 3)
Compiler

Compiled 444 to 327 computations (26.4% saved)

localize38.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -143/604800 (pow.f64 x 8))
0.0b
(*.f64 -11/15120 (pow.f64 x 6))
0.1b
(*.f64 -23/360 (pow.f64 x 4))
0.2b
(*.f64 1/6 (*.f64 x x))
Compiler

Compiled 102 to 76 computations (25.5% saved)

localize5.0ms (0%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 1/6 x))
0.3b
(*.f64 1/6 x)
Compiler

Compiled 11 to 7 computations (36.4% saved)

series2.0ms (0%)

Counts
2 → 12
Calls

6 calls:

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

rewrite46.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
446×pow1_binary64
432×add-sqr-sqrt_binary64
423×*-un-lft-identity_binary64
413×add-log-exp_binary64
413×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
110111
2113311
Stop Event
node limit
Counts
2 → 28
Calls
Call 1
Inputs
(*.f64 1/6 x)
(*.f64 x (*.f64 1/6 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/6 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) 1/6))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 1/6)) (cbrt.f64 (pow.f64 (exp.f64 x) 1/6)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/6 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/6 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x))) (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/6 (*.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (*.f64 x x))))))))

simplify173.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
40 → 30
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

localize12.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
0.3b
(*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))
Compiler

Compiled 31 to 16 computations (48.4% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))
1.0ms
x
@inf
(*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))
0.0ms
x
@-inf
(*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))
0.0ms
x
@0
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
0.0ms
x
@inf
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))

rewrite58.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
722×pow1_binary64
673×add-log-exp_binary64
673×log1p-expm1-u_binary64
673×expm1-log1p-u_binary64
660×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0825
116325
2185625
Stop Event
node limit
Counts
2 → 31
Calls
Call 1
Inputs
(*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x (*.f64 x -23/360))) (*.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 (*.f64 x x) -23/360 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 (*.f64 x x) -23/360 1/6) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -23/360 1/6) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x x) (*.f64 x (*.f64 x -23/360))) (*.f64 (*.f64 x x) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (fma.f64 (*.f64 x x) -23/360 1/6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) (pow.f64 (fma.f64 (*.f64 x x) -23/360 1/6) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) (fma.f64 (*.f64 x x) -23/360 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x x) 3) (pow.f64 (fma.f64 (*.f64 x x) -23/360 1/6) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))))))))

simplify182.0ms (0.9%)

Algorithm
egg-herbie
Rules
957×sqr-pow_binary64
803×unswap-sqr_binary64
635×cube-prod_binary64
536×fabs-mul_binary64
385×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016264
138264
276264
3181264
4601264
51169264
62602264
72721264
82895264
93110264
103395264
113769264
124217264
134769264
145459264
155920264
166227264
176495264
186703264
196889264
207672264
Stop Event
node limit
Counts
55 → 40
Calls
Call 1
Inputs
(*.f64 1/6 x)
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 -23/360 (pow.f64 x 3))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 -23/360 (pow.f64 x 3))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
Outputs
(*.f64 1/6 x)
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(*.f64 -23/360 (pow.f64 x 3))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(*.f64 -23/360 (pow.f64 x 3))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 x) (*.f64 -23/360 (pow.f64 x 3)))
(fma.f64 1/6 x (*.f64 -23/360 (pow.f64 x 3)))
(*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))

localize9.0ms (0%)

Local error

Found 3 expressions with local error:

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

Compiled 26 to 10 computations (61.5% saved)

series6.0ms (0%)

Counts
3 → 28
Calls

9 calls:

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

rewrite77.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
446×log-prod_binary64
351×prod-exp_binary64
339×exp-prod_binary64
310×prod-diff_binary64
294×pow-prod-down_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify75.0ms (0.4%)

Algorithm
egg-herbie
Rules
899×distribute-rgt-out_binary64
744×fma-def_binary64
563×associate-*l*_binary64
522×distribute-lft-in_binary64
431×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
050384
1123370
2280370
3849358
43683358
55743358
67270358
Stop Event
node limit
Counts
201 → 200
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (*.f64 1/6 (pow.f64 x 2)))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 31/15120 (pow.f64 x 6))))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 127/604800 (pow.f64 x 8)) (*.f64 31/15120 (pow.f64 x 6)))))
(/.f64 x (sin.f64 x))
(-.f64 (/.f64 x (sin.f64 x)) 1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(/.f64 x (sin.f64 x))
(-.f64 (/.f64 x (sin.f64 x)) 1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
1
(+.f64 (*.f64 1/6 (pow.f64 x 2)) 1)
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) 1))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 1 (*.f64 31/15120 (pow.f64 x 6)))))
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (*.f64 1/6 (pow.f64 x 2)))
(fma.f64 7/360 (pow.f64 x 4) (*.f64 1/6 (*.f64 x x)))
(fma.f64 1/6 (*.f64 x x) (*.f64 7/360 (pow.f64 x 4)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x 7/360) 1/6))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 31/15120 (pow.f64 x 6))))
(fma.f64 7/360 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (*.f64 31/15120 (pow.f64 x 6))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 7/360 (pow.f64 x 4) (*.f64 31/15120 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x 7/360) 1/6) (*.f64 31/15120 (pow.f64 x 6)))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 127/604800 (pow.f64 x 8)) (*.f64 31/15120 (pow.f64 x 6)))))
(fma.f64 7/360 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (fma.f64 127/604800 (pow.f64 x 8) (*.f64 31/15120 (pow.f64 x 6)))))
(fma.f64 7/360 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (fma.f64 31/15120 (pow.f64 x 6) (*.f64 127/604800 (pow.f64 x 8)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 7/360 (pow.f64 x 4) (fma.f64 31/15120 (pow.f64 x 6) (*.f64 127/604800 (pow.f64 x 8)))))
(/.f64 x (sin.f64 x))
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
(/.f64 x (sin.f64 x))
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
(-.f64 (/.f64 x (sin.f64 x)) 1)
(+.f64 (/.f64 x (sin.f64 x)) -1)
1
(+.f64 (*.f64 1/6 (pow.f64 x 2)) 1)
(fma.f64 1/6 (*.f64 x x) 1)
(fma.f64 x (*.f64 1/6 x) 1)
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) 1))
(fma.f64 7/360 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) 1))
(fma.f64 1/6 (*.f64 x x) (fma.f64 7/360 (pow.f64 x 4) 1))
(+.f64 (*.f64 7/360 (pow.f64 x 4)) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 1 (*.f64 31/15120 (pow.f64 x 6)))))
(fma.f64 7/360 (pow.f64 x 4) (+.f64 (fma.f64 1/6 (*.f64 x x) 1) (*.f64 31/15120 (pow.f64 x 6))))
(fma.f64 7/360 (pow.f64 x 4) (fma.f64 1/6 (*.f64 x x) (fma.f64 31/15120 (pow.f64 x 6) 1)))
(fma.f64 1/6 (*.f64 x x) (fma.f64 7/360 (pow.f64 x 4) (fma.f64 31/15120 (pow.f64 x 6) 1)))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 (pow.f64 x 4) -23/360))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 (pow.f64 x 4) -23/360)))
(fma.f64 1/6 (*.f64 x x) (fma.f64 (pow.f64 x 4) -23/360 (*.f64 (pow.f64 x 6) -11/15120)))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 (pow.f64 x 4) -23/360))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 (pow.f64 x 8) -143/604800 (fma.f64 (pow.f64 x 4) -23/360 (*.f64 (pow.f64 x 6) -11/15120))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6) (fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (pow.f64 x 8) -143/604800)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(/.f64 x (/.f64 (sin.f64 x) (cos.f64 x)))
(*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(/.f64 x (/.f64 (sin.f64 x) (cos.f64 x)))
(*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 x (/.f64 (sin.f64 x) (cos.f64 x))) (cos.f64 x))
(-.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 11 computations (67.6% saved)

series8.0ms (0%)

Counts
3 → 14
Calls

9 calls:

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

rewrite73.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
981×pow1_binary64
912×add-log-exp_binary64
912×log1p-expm1-u_binary64
912×expm1-log1p-u_binary64
100×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify82.0ms (0.4%)

Algorithm
egg-herbie
Rules
936×distribute-lft-out_binary64
905×fma-def_binary64
381×unswap-sqr_binary64
378×associate-/r*_binary64
336×associate-+l+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
057188
1141186
2334184
31052184
42734184
54621184
65481184
76522184
87632184
Stop Event
node limit
Counts
113 → 123
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
x
(+.f64 (*.f64 -1/2 (pow.f64 x 3)) x)
(+.f64 (*.f64 1/24 (pow.f64 x 5)) (+.f64 (*.f64 -1/2 (pow.f64 x 3)) x))
(+.f64 (*.f64 1/24 (pow.f64 x 5)) (+.f64 (*.f64 -1/2 (pow.f64 x 3)) (+.f64 (*.f64 -1/720 (pow.f64 x 7)) x)))
1
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) 1)
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (*.f64 -1/45 (pow.f64 x 4))))
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -1/45 (pow.f64 x 4)) (*.f64 -2/945 (pow.f64 x 6)))))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 1/6 (*.f64 x x)))
(*.f64 x (*.f64 x (fma.f64 x (*.f64 x -23/360) 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6)))))
(fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 -143/604800 (pow.f64 x 8) (*.f64 1/6 (*.f64 x x)))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -143/604800 (pow.f64 x 8))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
x
(+.f64 (*.f64 -1/2 (pow.f64 x 3)) x)
(fma.f64 -1/2 (pow.f64 x 3) x)
(+.f64 (*.f64 1/24 (pow.f64 x 5)) (+.f64 (*.f64 -1/2 (pow.f64 x 3)) x))
(fma.f64 1/24 (pow.f64 x 5) (fma.f64 -1/2 (pow.f64 x 3) x))
(fma.f64 -1/2 (pow.f64 x 3) (fma.f64 1/24 (pow.f64 x 5) x))
(+.f64 (*.f64 1/24 (pow.f64 x 5)) (+.f64 (*.f64 -1/2 (pow.f64 x 3)) (+.f64 (*.f64 -1/720 (pow.f64 x 7)) x)))
(fma.f64 1/24 (pow.f64 x 5) (fma.f64 -1/2 (pow.f64 x 3) (fma.f64 -1/720 (pow.f64 x 7) x)))
(fma.f64 -1/2 (pow.f64 x 3) (fma.f64 1/24 (pow.f64 x 5) (fma.f64 -1/720 (pow.f64 x 7) x)))
(fma.f64 -1/2 (pow.f64 x 3) (fma.f64 -1/720 (pow.f64 x 7) (fma.f64 1/24 (pow.f64 x 5) x)))
1
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) 1)
(fma.f64 -1/3 (*.f64 x x) 1)
(fma.f64 (*.f64 x x) -1/3 1)
(fma.f64 x (*.f64 x -1/3) 1)
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (*.f64 -1/45 (pow.f64 x 4))))
(+.f64 (fma.f64 -1/3 (*.f64 x x) 1) (*.f64 (pow.f64 x 4) -1/45))
(fma.f64 (*.f64 x x) -1/3 (fma.f64 (pow.f64 x 4) -1/45 1))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 4) -1/45 1))
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -1/45 (pow.f64 x 4)) (*.f64 -2/945 (pow.f64 x 6)))))
(+.f64 (fma.f64 -1/3 (*.f64 x x) 1) (fma.f64 -1/45 (pow.f64 x 4) (*.f64 (pow.f64 x 6) -2/945)))
(+.f64 (fma.f64 (*.f64 x x) -1/3 1) (fma.f64 (pow.f64 x 4) -1/45 (*.f64 (pow.f64 x 6) -2/945)))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 4) -1/45 (fma.f64 (pow.f64 x 6) -2/945 1)))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 6) -2/945 (fma.f64 (pow.f64 x 4) -1/45 1)))
(fma.f64 (pow.f64 x 4) -1/45 (fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 6) -2/945 1)))

eval193.0ms (0.9%)

Compiler

Compiled 7901 to 4189 computations (47% saved)

prune73.0ms (0.3%)

Pruning

22 alts after pruning (17 fresh and 5 done)

PrunedKeptTotal
New4537460
Fresh31013
Picked101
Done156
Total45822480
Error
0.0b
Counts
480 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
1.2b
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
28.9b
(+.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (neg.f64 (cos.f64 x)))
0.3b
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
1.3b
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
33.7b
(*.f64 (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (cbrt.f64 (tan.f64 x))))
0.7b
(*.f64 x (*.f64 1/6 x))
0.4b
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
29.4b
(/.f64 (exp.f64 (log.f64 (-.f64 x (sin.f64 x)))) (tan.f64 x))
28.2b
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
28.9b
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
15.9b
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
28.9b
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.7b
(*.f64 1/6 (*.f64 x x))
0.8b
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
28.9b
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
29.1b
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
0.3b
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
1.2b
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
1.5b
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
29.0b
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
1.3b
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
28.9b
(pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 3)
Compiler

Compiled 456 to 337 computations (26.1% saved)

localize18.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
0.6b
(*.f64 x -23/360)
Compiler

Compiled 46 to 28 computations (39.1% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x -23/360)
1.0ms
x
@-inf
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
1.0ms
x
@0
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
0.0ms
x
@inf
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
0.0ms
x
@-inf
(*.f64 x -23/360)

rewrite61.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

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

simplify201.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
012195
124195
247195
3116195
4375195
51458195
62772195
73304195
83494195
93705195
103986195
114351195
124837195
135366195
145996195
156747195
167061195
177285195
187487195
197545195
207567195
Stop Event
node limit
Counts
50 → 32
Calls
Call 1
Inputs
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
Outputs
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 -23/360 x)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 x 1/6))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(*.f64 -23/360 (pow.f64 x 4))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 x (*.f64 x 1/6)))
(*.f64 (*.f64 x x) (fma.f64 -23/360 (*.f64 x x) 1/6))
(*.f64 x (*.f64 x (fma.f64 -23/360 (*.f64 x x) 1/6)))
(*.f64 x (fma.f64 -23/360 (pow.f64 x 3) (*.f64 x 1/6)))

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
0.3b
(*.f64 1/6 x)
6.6b
(-.f64 (+.f64 1 (*.f64 1/6 x)) 1)
Compiler

Compiled 28 to 22 computations (21.4% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite63.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
837×pow1_binary64
786×add-log-exp_binary64
786×log1p-expm1-u_binary64
786×expm1-log1p-u_binary64
774×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify179.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
07132
114132
223132
342132
4102132
5321132
61252132
72126132
82290132
92474132
102682132
112978132
123371132
133852132
144418132
155106132
165941132
176333132
186623132
196895132
206967132
217003132
227944132
Stop Event
node limit
Counts
88 → 66
Calls
Call 1
Inputs
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(/.f64 6 (*.f64 x x))
0.9b
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
Compiler

Compiled 29 to 17 computations (41.4% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite61.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
963×pow1_binary64
912×add-log-exp_binary64
912×log1p-expm1-u_binary64
912×expm1-log1p-u_binary64
99×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0920
120218
2247518
Stop Event
node limit
Counts
2 → 44
Calls
Call 1
Inputs
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(/.f64 6 (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10))) (cbrt.f64 (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -2)) (/.f64 1 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -1/2) (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) 2) -1) (pow.f64 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) -1) (pow.f64 (sqrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 12167/1000 (*.f64 216 (pow.f64 (pow.f64 x -2) 3)))) (+.f64 529/100 (-.f64 (/.f64 36 (pow.f64 x 4)) (*.f64 69/5 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 529/100 (/.f64 36 (pow.f64 x 4)))) (+.f64 23/10 (*.f64 -6 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (fma.f64 6 (pow.f64 x -2) 23/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 6 (pow.f64 x -2) 23/10) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -1/2) (sqrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) 2)) (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 6 (pow.f64 x -2) 23/10) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (fma.f64 6 (pow.f64 x -2) 23/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (fma.f64 6 (pow.f64 x -2) 23/10))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 6 (pow.f64 x -2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 6 (pow.f64 x -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 6 (pow.f64 x -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 6 (pow.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 6 (pow.f64 x -2))) (cbrt.f64 (/.f64 36 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 36 (pow.f64 x 4))) (cbrt.f64 (*.f64 6 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 6) x) (/.f64 (sqrt.f64 6) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -6 (/.f64 1 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x -2) 6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 6 x) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 6 (pow.f64 x -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 6 (pow.f64 x -2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 6) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 216 (pow.f64 (pow.f64 x -2) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) 1/6) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 36 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 6) (pow.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 6 (pow.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 216 (pow.f64 (pow.f64 x -2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 6 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 6 (pow.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 6 (pow.f64 x -2))))))))

simplify45.0ms (0.2%)

Algorithm
egg-herbie
Rules
611×times-frac_binary64
478×distribute-lft-out_binary64
413×unswap-sqr_binary64
402×associate-/l/_binary64
401×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040270
1101270
2248270
3725270
43121270
Stop Event
node limit
Counts
68 → 61
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 529/21600 (pow.f64 x 6))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -12167/1296000 (pow.f64 x 8)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 529/21600 (pow.f64 x 6)))))
10/23
(-.f64 10/23 (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 2160000/279841 (/.f64 1 (pow.f64 x 6))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2)))))
10/23
(-.f64 10/23 (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 2160000/279841 (/.f64 1 (pow.f64 x 6))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2)))))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 -23/360 (pow.f64 x 4) (*.f64 1/6 (*.f64 x x)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 529/21600 (pow.f64 x 6))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 529/21600 (pow.f64 x 6))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 529/21600 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6) (*.f64 529/21600 (pow.f64 x 6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -12167/1296000 (pow.f64 x 8)) (+.f64 (*.f64 -23/360 (pow.f64 x 4)) (*.f64 529/21600 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -12167/1296000 (pow.f64 x 8) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 529/21600 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (fma.f64 529/21600 (pow.f64 x 6) (*.f64 -12167/1296000 (pow.f64 x 8)))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -12167/1296000 -23/360) (fma.f64 529/21600 (pow.f64 x 6) (*.f64 1/6 (*.f64 x x))))
10/23
(-.f64 10/23 (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 10/23 (/.f64 600/529 (*.f64 x x)))
(+.f64 10/23 (/.f64 -600/529 (*.f64 x x)))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(+.f64 10/23 (-.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 600/529 (*.f64 x x))))
(+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 10/23 (/.f64 -600/529 (*.f64 x x))))
(+.f64 10/23 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 -600/529 (*.f64 x x))))
(+.f64 (+.f64 10/23 (/.f64 -600/529 (*.f64 x x))) (/.f64 36000/12167 (pow.f64 x 4)))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 2160000/279841 (/.f64 1 (pow.f64 x 6))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2)))))
(+.f64 10/23 (-.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 (/.f64 600/529 (*.f64 x x)) (/.f64 2160000/279841 (pow.f64 x 6)))))
(+.f64 (/.f64 -600/529 (*.f64 x x)) (+.f64 (+.f64 10/23 (/.f64 36000/12167 (pow.f64 x 4))) (/.f64 -2160000/279841 (pow.f64 x 6))))
(+.f64 10/23 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 (/.f64 -600/529 (*.f64 x x)) (/.f64 -2160000/279841 (pow.f64 x 6)))))
(+.f64 10/23 (-.f64 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 -600/529 (*.f64 x x))) (/.f64 2160000/279841 (pow.f64 x 6))))
10/23
(-.f64 10/23 (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(-.f64 10/23 (/.f64 600/529 (*.f64 x x)))
(+.f64 10/23 (/.f64 -600/529 (*.f64 x x)))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2))))
(+.f64 10/23 (-.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 600/529 (*.f64 x x))))
(+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 10/23 (/.f64 -600/529 (*.f64 x x))))
(+.f64 10/23 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 -600/529 (*.f64 x x))))
(+.f64 (+.f64 10/23 (/.f64 -600/529 (*.f64 x x))) (/.f64 36000/12167 (pow.f64 x 4)))
(-.f64 (+.f64 10/23 (*.f64 36000/12167 (/.f64 1 (pow.f64 x 4)))) (+.f64 (*.f64 2160000/279841 (/.f64 1 (pow.f64 x 6))) (*.f64 600/529 (/.f64 1 (pow.f64 x 2)))))
(+.f64 10/23 (-.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 (/.f64 600/529 (*.f64 x x)) (/.f64 2160000/279841 (pow.f64 x 6)))))
(+.f64 (/.f64 -600/529 (*.f64 x x)) (+.f64 (+.f64 10/23 (/.f64 36000/12167 (pow.f64 x 4))) (/.f64 -2160000/279841 (pow.f64 x 6))))
(+.f64 10/23 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (+.f64 (/.f64 -600/529 (*.f64 x x)) (/.f64 -2160000/279841 (pow.f64 x 6)))))
(+.f64 10/23 (-.f64 (+.f64 (/.f64 36000/12167 (pow.f64 x 4)) (/.f64 -600/529 (*.f64 x x))) (/.f64 2160000/279841 (pow.f64 x 6))))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))
(/.f64 6 (pow.f64 x 2))
(/.f64 6 (*.f64 x x))

localize13.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(*.f64 1/6 (*.f64 x x))
0.4b
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
30.9b
(cbrt.f64 (*.f64 1/6 (*.f64 x x)))
Compiler

Compiled 26 to 14 computations (46.2% saved)

series5.0ms (0%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
1.0ms
x
@0
(cbrt.f64 (*.f64 1/6 (*.f64 x x)))
1.0ms
x
@inf
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
1.0ms
x
@-inf
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
1.0ms
x
@inf
(cbrt.f64 (*.f64 1/6 (*.f64 x x)))

rewrite56.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
603×pow1_binary64
569×add-log-exp_binary64
569×log1p-expm1-u_binary64
569×expm1-log1p-u_binary64
555×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0816
117016
2165216
Stop Event
node limit
Counts
2 → 54
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 1/6 (*.f64 x x)))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 1/6) (cbrt.f64 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))) (pow.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))) (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) (cbrt.f64 (*.f64 x (sqrt.f64 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/6 x)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sqrt.f64 1/6)) 1/3) (pow.f64 (*.f64 x (sqrt.f64 1/6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 1/6 x) 1/3) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (*.f64 x x)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 1/6 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/6 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 1/6 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) (cbrt.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 1/6) (*.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))) (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 4)) (*.f64 (cbrt.f64 (*.f64 x x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 1/6)) (*.f64 x (sqrt.f64 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/6 x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 1/6) 3) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4)))) 3) (cbrt.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) 3) (pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/6))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/6 (cbrt.f64 (pow.f64 x 4))) (cbrt.f64 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) 1) (cbrt.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) (cbrt.f64 1/6)) (cbrt.f64 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) (cbrt.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))))) (cbrt.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/36 (pow.f64 x 4))) (cbrt.f64 (*.f64 x (sqrt.f64 1/6)))) (cbrt.f64 (*.f64 x (sqrt.f64 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/6 x) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/6 x) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (*.f64 x x))))))))

simplify7.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
54 → 54
Calls
Call 1
Inputs
Outputs

localize11.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 31 to 7 computations (77.4% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite64.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
943×pow1_binary64
877×add-log-exp_binary64
876×log1p-expm1-u_binary64
876×expm1-log1p-u_binary64
96×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify72.0ms (0.3%)

Algorithm
egg-herbie
Rules
614×distribute-lft-out_binary64
599×distribute-rgt-out_binary64
536×fma-def_binary64
488×distribute-rgt-in_binary64
480×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
043338
199324
2225322
3680310
42943310
55624310
67719310
Stop Event
node limit
Counts
92 → 86
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
1
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) 1)
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (*.f64 -1/45 (pow.f64 x 4))))
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -1/45 (pow.f64 x 4)) (*.f64 -2/945 (pow.f64 x 6)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (*.f64 -23/360 (pow.f64 x 4)))
(fma.f64 1/6 (*.f64 x x) (*.f64 -23/360 (pow.f64 x 4)))
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(fma.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -143/604800 (pow.f64 x 8) (fma.f64 -23/360 (pow.f64 x 4) (*.f64 -11/15120 (pow.f64 x 6)))))
(fma.f64 1/6 (*.f64 x x) (fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 -143/604800 (pow.f64 x 8)))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -143/604800 -23/360) (fma.f64 -11/15120 (pow.f64 x 6) (*.f64 1/6 (*.f64 x x))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) -143/604800 -23/360) (fma.f64 1/6 (*.f64 x x) (*.f64 -11/15120 (pow.f64 x 6))))
(fma.f64 -23/360 (pow.f64 x 4) (fma.f64 -11/15120 (pow.f64 x 6) (fma.f64 -143/604800 (pow.f64 x 8) (*.f64 1/6 (*.f64 x x)))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (neg.f64 (cos.f64 x)))
(-.f64 (/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x)) (cos.f64 x))
(-.f64 (*.f64 x (/.f64 (cos.f64 x) (sin.f64 x))) (cos.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
1
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) 1)
(fma.f64 -1/3 (*.f64 x x) 1)
(fma.f64 (*.f64 x x) -1/3 1)
(fma.f64 x (*.f64 x -1/3) 1)
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (*.f64 -1/45 (pow.f64 x 4))))
(+.f64 (fma.f64 -1/3 (*.f64 x x) 1) (*.f64 (pow.f64 x 4) -1/45))
(fma.f64 (*.f64 x x) -1/3 (fma.f64 (pow.f64 x 4) -1/45 1))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 4) -1/45 1))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/45 -1/3) 1)
(+.f64 (*.f64 -1/3 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -1/45 (pow.f64 x 4)) (*.f64 -2/945 (pow.f64 x 6)))))
(+.f64 (fma.f64 -1/3 (*.f64 x x) 1) (fma.f64 -1/45 (pow.f64 x 4) (*.f64 (pow.f64 x 6) -2/945)))
(+.f64 (fma.f64 (*.f64 x x) -1/3 1) (fma.f64 (pow.f64 x 4) -1/45 (*.f64 (pow.f64 x 6) -2/945)))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 6) -2/945 (fma.f64 (pow.f64 x 4) -1/45 1)))
(fma.f64 x (*.f64 x -1/3) (fma.f64 (pow.f64 x 4) -1/45 (fma.f64 (pow.f64 x 6) -2/945 1)))
(fma.f64 (pow.f64 x 6) -2/945 (fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -1/45 -1/3) 1))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x))
(/.f64 (*.f64 x (cos.f64 x)) (sin.f64 x))
(*.f64 x (/.f64 (cos.f64 x) (sin.f64 x)))

eval169.0ms (0.8%)

Compiler

Compiled 5370 to 3219 computations (40.1% saved)

prune59.0ms (0.3%)

Pruning

22 alts after pruning (14 fresh and 8 done)

PrunedKeptTotal
New3816387
Fresh4812
Picked101
Done189
Total38722409
Error
0.0b
Counts
409 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
1.2b
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
29.1b
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
1.2b
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
0.7b
(*.f64 x (*.f64 1/6 x))
0.3b
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
1.7b
(/.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) 2)) (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)))
1.5b
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
29.0b
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
33.6b
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
0.4b
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
29.4b
(/.f64 (exp.f64 (log.f64 (-.f64 x (sin.f64 x)))) (tan.f64 x))
28.2b
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
28.9b
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
28.9b
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.7b
(*.f64 1/6 (*.f64 x x))
61.3b
10/23
0.8b
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
28.9b
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
0.3b
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
1.2b
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
1.3b
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
28.9b
(pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 3)
Compiler

Compiled 250 to 185 computations (26% saved)

regimes39.0ms (0.2%)

Counts
40 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
(+.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (neg.f64 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (exp.f64 (log.f64 (-.f64 x (sin.f64 x)))) (tan.f64 x))
(pow.f64 (cbrt.f64 (/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))) 3)
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/5040 (pow.f64 x 7)) (*.f64 -1/120 (pow.f64 x 5)))) (tan.f64 x))
(+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(/.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)) 2)) (cbrt.f64 (fma.f64 6 (pow.f64 x -2) 23/10)))
(*.f64 (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (pow.f64 (cbrt.f64 (tan.f64 x)) 2)) (/.f64 (*.f64 (sqrt.f64 1/6) (pow.f64 x 3/2)) (cbrt.f64 (tan.f64 x))))
Outputs
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
Calls

3 calls:

19.0ms
x
4.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Results
ErrorSegmentsBranch
0.3b1x
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 469 to 293 computations (37.5% saved)

regimes31.0ms (0.1%)

Counts
33 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
(+.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (neg.f64 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
Outputs
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
Calls

3 calls:

15.0ms
x
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Results
ErrorSegmentsBranch
0.3b1x
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 340 to 201 computations (40.9% saved)

regimes29.0ms (0.1%)

Counts
32 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
(+.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (neg.f64 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
Outputs
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
Calls

3 calls:

14.0ms
x
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Results
ErrorSegmentsBranch
0.3b1x
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 325 to 193 computations (40.6% saved)

regimes33.0ms (0.2%)

Counts
31 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(pow.f64 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))) -1)
(+.f64 (*.f64 (/.f64 x (sin.f64 x)) (cos.f64 x)) (neg.f64 (cos.f64 x)))
(+.f64 (/.f64 (*.f64 (cos.f64 x) x) (sin.f64 x)) (*.f64 -1 (cos.f64 x)))
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 -1/120 (pow.f64 x 5))) (tan.f64 x))
Outputs
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
Calls

3 calls:

18.0ms
x
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Results
ErrorSegmentsBranch
0.3b1x
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.3b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 310 to 184 computations (40.6% saved)

regimes26.0ms (0.1%)

Counts
26 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(pow.f64 (+.f64 23/10 (*.f64 (/.f64 6 x) (/.f64 1 x))) -1)
(-.f64 (+.f64 1 (*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))) 1)
(sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))
(pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) (tan.f64 x))
(*.f64 (*.f64 (*.f64 1/6 x) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (cos.f64 x) (+.f64 (/.f64 x (sin.f64 x)) -1))
(/.f64 1 (/.f64 (tan.f64 x) (-.f64 x (sin.f64 x))))
(*.f64 (cos.f64 x) (+.f64 -1 (/.f64 x (sin.f64 x))))
(pow.f64 (+.f64 23/10 (*.f64 6 (/.f64 1 (pow.f64 x 2)))) -1)
(pow.f64 (+.f64 (/.f64 6 (*.f64 x x)) (fma.f64 (*.f64 x x) 1271/1400 23/10)) -1)
Outputs
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
Calls

3 calls:

13.0ms
x
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
3.0ms
(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Results
ErrorSegmentsBranch
0.4b1x
0.4b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
0.4b1(/.f64 (-.f64 x (sin.f64 x)) (tan.f64 x))
Compiler

Compiled 244 to 153 computations (37.3% saved)

regimes10.0ms (0%)

Counts
11 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(pow.f64 (/.f64 6 (*.f64 x x)) -1)
(pow.f64 (+.f64 23/10 (/.f64 6 (*.f64 x x))) -1)
(*.f64 x (*.f64 x (fma.f64 (*.f64 x x) -23/360 1/6)))
Outputs
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
Calls

1 calls:

7.0ms
x
Results
ErrorSegmentsBranch
0.4b1x
Compiler

Compiled 89 to 58 computations (34.8% saved)

regimes7.0ms (0%)

Counts
7 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 1/6 x))) 1)
(*.f64 x (-.f64 (+.f64 1 (*.f64 1/6 x)) 1))
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
(-.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)
Outputs
(*.f64 1/6 (*.f64 x x))
Calls

1 calls:

5.0ms
x
Results
ErrorSegmentsBranch
0.7b1x
Compiler

Compiled 50 to 35 computations (30% saved)

regimes4.0ms (0%)

Accuracy

Total -60.6b remaining (-8245.5%)

Threshold costs -60.6b (-8245.5%)

Counts
2 → 1
Calls
Call 1
Inputs
10/23
(*.f64 x (*.f64 1/6 x))
Outputs
(*.f64 x (*.f64 1/6 x))
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.7b1x
Compiler

Compiled 9 to 6 computations (33.3% saved)

simplify9.0ms (0%)

Algorithm
egg-herbie
Rules
13×*-commutative_binary64
+-commutative_binary64
+-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039153
159153
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
10/23
Outputs
(+.f64 (+.f64 0 (*.f64 1/6 (*.f64 x x))) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(+.f64 (*.f64 1/6 (*.f64 x x)) (+.f64 (*.f64 -143/604800 (pow.f64 x 8)) (+.f64 (*.f64 -11/15120 (pow.f64 x 6)) (*.f64 -23/360 (pow.f64 x 4)))))
(fma.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6) (*.f64 -11/15120 (pow.f64 x 6)))
(fma.f64 (pow.f64 x 6) -11/15120 (*.f64 (*.f64 x x) (fma.f64 x (*.f64 x -23/360) 1/6)))
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) (*.f64 x x)) (*.f64 1/6 (*.f64 x x))))
(fma.f64 (pow.f64 x 6) -11/15120 (+.f64 (*.f64 1/6 (*.f64 x x)) (*.f64 (*.f64 x x) (*.f64 x (*.f64 x -23/360)))))
(*.f64 (*.f64 x x) (fma.f64 (*.f64 x x) -23/360 1/6))
(*.f64 x (+.f64 (*.f64 (*.f64 x (*.f64 x -23/360)) x) (*.f64 1/6 x)))
(*.f64 x (+.f64 (*.f64 x (*.f64 x (*.f64 x -23/360))) (*.f64 1/6 x)))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
10/23
Compiler

Compiled 116 to 78 computations (32.8% saved)

soundness0.0ms (0%)

end67.0ms (0.3%)

Compiler

Compiled 108 to 65 computations (39.8% saved)

Profiling

Loading profile data...