Details

Time bar (total: 14.5s)

analyze3.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
66.7%50%25%0%25%0%0%4
80%50%12.5%0%37.5%0%0%5
88.9%50%6.2%0%43.7%0%0%6
94.1%50%3.1%0%46.9%0%0%7
97%50%1.6%0%48.4%0%0%8
98.5%50%0.8%0%49.2%0%0%9
99.2%50.4%0.4%0%49.2%0%0%10
99.6%50.4%0.2%0%49.4%0%0%11
99.8%50.4%0.1%0%49.5%0%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample5.8s (39.7%)

Results
3.9s4109×body1024valid
1.1s2025×body512valid
394.0ms428×body2048valid
393.0ms1694×body256valid
1.0ms14×body256infinite
Bogosity

preprocess1.9s (13.1%)

Algorithm
egg-herbie
Rules
15824×rational.json-simplify-41
2168×rational.json-simplify-1
980×rational.json-simplify-35
rational.json-simplify-12
rational.json-simplify-10
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
12125
23325
34525
46525
510725
621925
756425
871825
972825
1073825
1174825
1275825
1376825
1477825
1578825
1679825
1780825
1881825
1982825
2083825
2184825
2285825
23248525
24249525
25250525
26251525
27252525
28253525
29331625
30332625
31333625
32334625
33335625
34336625
35337625
36338625
37339625
38340625
39341625
40342625
41343625
42344625
43345625
44346625
45347625
46348625
47349625
48350625
49351625
50352625
51353625
52354625
53355625
54356625
55357625
56358625
57359625
58360625
59361625
60362625
61363625
62364625
63365625
64366625
65367625
66368625
67369625
68370625
69371625
70372625
71373625
72374625
73375625
74376625
75377625
76378625
77379625
78380625
79381625
80382625
81383625
82384625
83385625
84386625
85387625
86388625
87389625
88390625
89391625
90392625
91393625
92394625
93395625
94396625
95397625
96398625
97399625
98400625
99401625
100402625
101403625
102404625
103405625
104406625
105407625
106408625
107409625
108410625
109411625
110412625
111413625
112414625
113415625
114416625
115417625
116418625
117419625
118420625
119421625
120422625
121423625
122424625
123425625
124426625
125427625
126428625
127429625
128430625
129431625
130432625
131433625
132434625
133435625
134436625
135437625
136438625
137439625
138440625
139441625
140442625
141443625
142444625
143445625
144446625
145447625
146448625
147449625
148450625
149451625
150452625
151453625
152454625
153455625
154456625
155457625
156458625
157459625
158460625
159461625
160462625
161463625
162464625
163465625
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Compiler

Compiled 10 to 8 computations (20% saved)

simplify1.9s (13.2%)

Algorithm
egg-herbie
Rules
15824×rational.json-simplify-41
2168×rational.json-simplify-1
980×rational.json-simplify-35
rational.json-simplify-12
rational.json-simplify-10
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
12125
23325
34525
46525
510725
621925
756425
871825
972825
1073825
1174825
1275825
1376825
1477825
1578825
1679825
1780825
1881825
1982825
2083825
2184825
2285825
23248525
24249525
25250525
26251525
27252525
28253525
29331625
30332625
31333625
32334625
33335625
34336625
35337625
36338625
37339625
38340625
39341625
40342625
41343625
42344625
43345625
44346625
45347625
46348625
47349625
48350625
49351625
50352625
51353625
52354625
53355625
54356625
55357625
56358625
57359625
58360625
59361625
60362625
61363625
62364625
63365625
64366625
65367625
66368625
67369625
68370625
69371625
70372625
71373625
72374625
73375625
74376625
75377625
76378625
77379625
78380625
79381625
80382625
81383625
82384625
83385625
84386625
85387625
86388625
87389625
88390625
89391625
90392625
91393625
92394625
93395625
94396625
95397625
96398625
97399625
98400625
99401625
100402625
101403625
102404625
103405625
104406625
105407625
106408625
107409625
108410625
109411625
110412625
111413625
112414625
113415625
114416625
115417625
116418625
117419625
118420625
119421625
120422625
121423625
122424625
123425625
124426625
125427625
126428625
127429625
128430625
129431625
130432625
131433625
132434625
133435625
134436625
135437625
136438625
137439625
138440625
139441625
140442625
141443625
142444625
143445625
144446625
145447625
146448625
147449625
148450625
149451625
150452625
151453625
152454625
153455625
154456625
155457625
156458625
157459625
158460625
159461625
160462625
161463625
162464625
163465625
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)

eval0.0ms (0%)

Compiler

Compiled 9 to 7 computations (22.2% saved)

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 7 computations (22.2% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.6b
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 24 to 8 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 8
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
0.0ms
x
@-inf
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
0.0ms
x
@inf
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))

rewrite86.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
1962×bool.json-1
1962×bool.json-2
970×rational.json-simplify-35
878×rational.json-1
878×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18219
224319
355619
4121219
5289919
6696519
Stop Event
node limit
Counts
1 → 36
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 x) (/.f64 -1 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 -1 (exp.f64 x)) (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 -1 (exp.f64 (neg.f64 x))) (-.f64 1 (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 x) (-.f64 1 (exp.f64 (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (*.f64 (exp.f64 x) 1/2) (/.f64 1/2 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (*.f64 (exp.f64 x) 2) (/.f64 2 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 2 (/.f64 2 (exp.f64 (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))

simplify137.0ms (0.9%)

Algorithm
egg-herbie
Rules
1840×rational.json-simplify-35
1216×rational.json-simplify-1
852×rational.json-simplify-2
850×rational.json-simplify-41
832×rational.json-simplify-46
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0109992
1207992
2425974
3899968
41670968
52801968
64095968
76752968
87649968
Stop Event
node limit
Counts
44 → 55
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (*.f64 1/60 (pow.f64 x 5)))))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (/.f64 -1 (exp.f64 x)))
(+.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 0)
(+.f64 0 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(+.f64 -1 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))))
(+.f64 (/.f64 -1 (exp.f64 x)) (exp.f64 x))
(+.f64 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))) -1)
(+.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))
(+.f64 (-.f64 -1 (exp.f64 (neg.f64 x))) (-.f64 1 (neg.f64 (exp.f64 x))))
(*.f64 (exp.f64 x) (-.f64 1 (exp.f64 (*.f64 x -2))))
(*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)
(*.f64 1 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 -1 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))
(*.f64 2 (-.f64 (*.f64 (exp.f64 x) 1/2) (/.f64 1/2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 1/2)
(*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2))
(*.f64 1/2 (-.f64 (*.f64 (exp.f64 x) 2) (/.f64 2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) 2)
(*.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 2 (/.f64 2 (exp.f64 (+.f64 x x)))))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))
(*.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 2)
(/.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8) 8)
(/.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) 16)
(/.f64 (*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 4) -4)
(/.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8))) 32)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))))) 4)
(neg.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 2 x)))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (*.f64 1/60 (pow.f64 x 5)))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))))
(+.f64 (*.f64 2 x) (+.f64 (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5))) (*.f64 1/2520 (pow.f64 x 7))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/2520 (pow.f64 x 7)))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 2 x) (*.f64 1/2520 (pow.f64 x 7)))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/2520 (pow.f64 x 7)))))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (/.f64 -1 (exp.f64 x)))
(+.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 0)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 0 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 -1 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))))
(+.f64 (exp.f64 x) (+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) -1))
(+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) (+.f64 -1 (exp.f64 x)))
(+.f64 (exp.f64 x) (-.f64 0 (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(+.f64 (/.f64 -1 (exp.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (/.f64 -1 (exp.f64 x)))
(+.f64 (+.f64 (exp.f64 x) (-.f64 1 (exp.f64 (neg.f64 x)))) -1)
(+.f64 (exp.f64 x) (+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) -1))
(+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) (+.f64 -1 (exp.f64 x)))
(+.f64 (exp.f64 x) (-.f64 0 (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(+.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (-.f64 -1 (exp.f64 (neg.f64 x))) (-.f64 1 (neg.f64 (exp.f64 x))))
(+.f64 (exp.f64 x) (+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) -1))
(+.f64 (-.f64 1 (exp.f64 (neg.f64 x))) (+.f64 -1 (exp.f64 x)))
(+.f64 (exp.f64 x) (-.f64 0 (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(*.f64 (exp.f64 x) (-.f64 1 (exp.f64 (*.f64 x -2))))
(*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 1 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 -1 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (-.f64 (*.f64 (exp.f64 x) 1/2) (/.f64 1/2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 1/2)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 1/4)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 1/2 (-.f64 (*.f64 (exp.f64 x) 2) (/.f64 2 (exp.f64 x))))
(*.f64 1/2 (-.f64 (*.f64 2 (exp.f64 x)) (/.f64 2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2) 2)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 2 (/.f64 2 (exp.f64 (+.f64 x x)))))
(*.f64 (exp.f64 x) (*.f64 1/2 (-.f64 2 (/.f64 2 (exp.f64 (+.f64 x x))))))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2) 2)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 4) 4)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8) 8)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))) -2)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) 16)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 4) -4)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) 2)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 8))) 32)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))) (neg.f64 (*.f64 2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))))) 4)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(neg.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))

eval16.0ms (0.1%)

Compiler

Compiled 740 to 452 computations (38.9% saved)

prune8.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New52355
Fresh000
Picked011
Done000
Total52456
Error
0b
Counts
56 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
58.2b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.4b
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
0.5b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
0.8b
(/.f64 (*.f64 2 x) 2)
Compiler

Compiled 45 to 37 computations (17.8% saved)

localize6.0ms (0%)

Compiler

Compiled 11 to 8 computations (27.3% saved)

localize15.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 36 to 28 computations (22.2% saved)

series4.0ms (0%)

Counts
3 → 3
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
(pow.f64 x 3)
0.0ms
x
@0
(*.f64 1/3 (pow.f64 x 3))
0.0ms
x
@inf
(pow.f64 x 3)
0.0ms
x
@inf
(*.f64 1/3 (pow.f64 x 3))
0.0ms
x
@inf
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))

rewrite116.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1694×bool.json-1
1694×bool.json-2
1638×rational.json-1
1188×rational.json-simplify-35
1080×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01045
19845
224345
346745
494945
5209845
6433045
7687845
Stop Event
node limit
Counts
3 → 63
Calls
Call 1
Inputs
(*.f64 1/3 (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/3 (pow.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/3 (pow.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/3 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 2/3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 4/3) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/3 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/3 (pow.f64 x 3)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 x 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 1/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/2) (*.f64 (pow.f64 x 3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (pow.f64 x 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (*.f64 3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 1/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/3 (pow.f64 x 3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (pow.f64 x 3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 2/3) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (pow.f64 x 3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2/3 (*.f64 (pow.f64 x 3) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (pow.f64 x 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (pow.f64 x 3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/6) 6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (pow.f64 x 3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3/2 (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 3/2) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (pow.f64 x 3) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x or (pow.f64 x 3) (pow.f64 x 3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 1/3 (pow.f64 x 3)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))))

simplify883.0ms (6.1%)

Algorithm
egg-herbie
Rules
7688×rational.json-simplify-41
3828×rational.json-simplify-35
1062×rational.json-simplify-2
1006×rational.json-simplify-1
798×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0118912
1240912
2751912
31890912
42955912
53439912
63545912
73616912
83681912
93742912
103802912
113910912
123970912
134030912
144090912
154150912
164210912
174270912
184270912
194270912
204330912
214390912
224450912
234510912
244570912
254630912
264690912
274750912
284810912
294870912
304930912
314990912
325050912
335110912
345170912
355230912
Stop Event
node limit
Counts
66 → 70
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 1/3 (pow.f64 x 3))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) 0)
(+.f64 0 (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))
(-.f64 (*.f64 1/3 (pow.f64 x 3)) 0)
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 1)
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 2)
(/.f64 (*.f64 (pow.f64 x 3) 4/3) 4)
(/.f64 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)))) 64)
(+.f64 (pow.f64 x 3) 0)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 (pow.f64 x 3) 2/3))
(+.f64 0 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 (pow.f64 x 3) 1/2) (*.f64 (pow.f64 x 3) 1/2))
(-.f64 (pow.f64 x 3) 0)
(*.f64 1/3 (*.f64 3 (pow.f64 x 3)))
(*.f64 3 (*.f64 1/3 (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) 1)
(*.f64 (*.f64 1/3 (pow.f64 x 3)) 3)
(*.f64 2 (*.f64 (pow.f64 x 3) 1/2))
(*.f64 1 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 2) 1/2)
(*.f64 (*.f64 (pow.f64 x 3) 2/3) 3/2)
(*.f64 4 (/.f64 (pow.f64 x 3) 4))
(*.f64 (*.f64 (pow.f64 x 3) 4) 1/4)
(*.f64 2/3 (*.f64 (pow.f64 x 3) 3/2))
(*.f64 (*.f64 3 (pow.f64 x 3)) 1/3)
(*.f64 1/2 (*.f64 (pow.f64 x 3) 2))
(*.f64 (*.f64 (pow.f64 x 3) 1/2) 2)
(*.f64 (*.f64 (pow.f64 x 3) 1/6) 6)
(*.f64 1/4 (*.f64 (pow.f64 x 3) 4))
(*.f64 (/.f64 (pow.f64 x 3) 4) 4)
(*.f64 3/2 (*.f64 (pow.f64 x 3) 2/3))
(*.f64 (*.f64 (pow.f64 x 3) 3/2) 2/3)
(/.f64 (pow.f64 x 3) 1)
(/.f64 (*.f64 (pow.f64 x 3) 2) 2)
(/.f64 (*.f64 (pow.f64 x 3) 4) 4)
(/.f64 (*.f64 (pow.f64 x 3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8)))) 64)
(-.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))
(*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(*.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))
(*.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 1/3 (pow.f64 x 3)) 4)))
(*.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 1/4)
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)
(*.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)
(/.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 4)
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)
Outputs
(*.f64 2 x)
(*.f64 1/3 (pow.f64 x 3))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) 0)
(*.f64 1/3 (pow.f64 x 3))
(+.f64 0 (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))
(*.f64 1/3 (pow.f64 x 3))
(-.f64 (*.f64 1/3 (pow.f64 x 3)) 0)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 1)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 2)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 4/3) 4)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 8)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)) 16)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) 32)
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/3 (pow.f64 x 3)) 8)))) 64)
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 (pow.f64 x 3) 2/3))
(pow.f64 x 3)
(+.f64 0 (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 1/3 (pow.f64 x 3)))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 x 3) 1/2) (*.f64 (pow.f64 x 3) 1/2))
(pow.f64 x 3)
(-.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 1/3 (*.f64 3 (pow.f64 x 3)))
(pow.f64 x 3)
(*.f64 3 (*.f64 1/3 (pow.f64 x 3)))
(pow.f64 x 3)
(*.f64 (pow.f64 x 3) 1)
(pow.f64 x 3)
(*.f64 (*.f64 1/3 (pow.f64 x 3)) 3)
(pow.f64 x 3)
(*.f64 2 (*.f64 (pow.f64 x 3) 1/2))
(pow.f64 x 3)
(*.f64 1 (pow.f64 x 3))
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 2) 1/2)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 2/3) 3/2)
(pow.f64 x 3)
(*.f64 4 (/.f64 (pow.f64 x 3) 4))
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 4) 1/4)
(pow.f64 x 3)
(*.f64 2/3 (*.f64 (pow.f64 x 3) 3/2))
(pow.f64 x 3)
(*.f64 (*.f64 3 (pow.f64 x 3)) 1/3)
(pow.f64 x 3)
(*.f64 1/2 (*.f64 (pow.f64 x 3) 2))
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 1/2) 2)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 1/6) 6)
(pow.f64 x 3)
(*.f64 1/4 (*.f64 (pow.f64 x 3) 4))
(pow.f64 x 3)
(*.f64 (/.f64 (pow.f64 x 3) 4) 4)
(pow.f64 x 3)
(*.f64 3/2 (*.f64 (pow.f64 x 3) 2/3))
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3) 3/2) 2/3)
(pow.f64 x 3)
(/.f64 (pow.f64 x 3) 1)
(pow.f64 x 3)
(/.f64 (*.f64 (pow.f64 x 3) 2) 2)
(pow.f64 x 3)
(/.f64 (*.f64 (pow.f64 x 3) 4) 4)
(pow.f64 x 3)
(/.f64 (*.f64 (pow.f64 x 3) 8) 8)
(pow.f64 x 3)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 8)) 16)
(pow.f64 x 3)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) 32)
(pow.f64 x 3)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 8)))) 64)
(pow.f64 x 3)
(-.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 1/3 (pow.f64 x 3)) 4)))
(*.f64 4 (+.f64 (*.f64 x 1/2) (*.f64 (pow.f64 x 3) 1/12)))
(*.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 1/4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 x 4)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))) 4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 x x))

localize28.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 x 3)
0.0b
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
0.1b
(*.f64 1/60 (pow.f64 x 5))
0.1b
(*.f64 1/3 (pow.f64 x 3))
Compiler

Compiled 69 to 55 computations (20.3% saved)

series2.0ms (0%)

Counts
2 → 3
Calls

6 calls:

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

rewrite112.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1900×bool.json-1
1372×rational.json-simplify-35
1272×bool.json-2
1212×rational.json-1
1212×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01244
111644
227844
353844
4110344
5238544
6485944
7771544
Stop Event
node limit
Counts
2 → 31
Calls
Call 1
Inputs
(*.f64 1/60 (pow.f64 x 5))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/60 (pow.f64 x 5)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/60 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 5) 1/120))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/60 (pow.f64 x 5)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/60 (pow.f64 x 5)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 5) 1/30) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 5) 1/15) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/60 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/60 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/60 (pow.f64 x 5)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 (pow.f64 x 5) 1/30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))))))))

simplify217.0ms (1.5%)

Algorithm
egg-herbie
Rules
3570×rational.json-simplify-41
2928×rational.json-simplify-51
2076×rational.json-simplify-35
960×rational.json-simplify-2
560×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
077808
1156808
2395808
31119808
42164808
52723808
62925808
73031808
83119808
93205808
103290808
113373808
123455808
133537808
143619808
153619808
Stop Event
node limit
Counts
34 → 34
Calls
Call 1
Inputs
(*.f64 1/3 (pow.f64 x 3))
(*.f64 1/60 (pow.f64 x 5))
(*.f64 1/60 (pow.f64 x 5))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) 0)
(+.f64 0 (*.f64 1/60 (pow.f64 x 5)))
(+.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 5) 1/120))
(-.f64 (*.f64 1/60 (pow.f64 x 5)) 0)
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 1)
(/.f64 (*.f64 (pow.f64 x 5) 1/30) 2)
(/.f64 (*.f64 (pow.f64 x 5) 1/15) 4)
(/.f64 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)))) 64)
(-.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 0)
(*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)
(*.f64 1 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))))
(*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 3) 1/6)))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 (pow.f64 x 5) 1/30)))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))
(*.f64 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)
(/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)))) 64)
Outputs
(*.f64 1/3 (pow.f64 x 3))
(*.f64 1/60 (pow.f64 x 5))
(*.f64 1/60 (pow.f64 x 5))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) 0)
(*.f64 1/60 (pow.f64 x 5))
(+.f64 0 (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/60 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 5) 1/120))
(*.f64 1/60 (pow.f64 x 5))
(-.f64 (*.f64 1/60 (pow.f64 x 5)) 0)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 1)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 (pow.f64 x 5) 1/30) 2)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 (pow.f64 x 5) 1/15) 4)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 8)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)) 16)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) 32)
(*.f64 1/60 (pow.f64 x 5))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 1/60 (pow.f64 x 5)) 8)))) 64)
(*.f64 1/60 (pow.f64 x 5))
(-.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 0)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 3) 1/6)))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 1/2)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 4 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 1/4)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 (pow.f64 x 5) 1/30)))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1/2) 2)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4))
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(*.f64 (/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 1)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 2) 2)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 4) 4)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8) 8)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)) 16)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) 32)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/60 (pow.f64 x 5)) (*.f64 1/3 (pow.f64 x 3))) 8)))) 64)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))

eval59.0ms (0.4%)

Compiler

Compiled 2717 to 2318 computations (14.7% saved)

prune22.0ms (0.2%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New1453148
Fresh000
Picked011
Done033
Total1457152
Error
0b
Counts
152 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
58.2b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.4b
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
0.5b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
0.8b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
0.5b
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
0.8b
(/.f64 (*.f64 2 x) 2)
60.0b
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
Compiler

Compiled 77 to 63 computations (18.2% saved)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 20 to 16 computations (20% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite102.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1712×bool.json-1
1712×bool.json-2
1142×rational.json-simplify-35
1064×rational.json-1
1064×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0913
19413
226913
355613
4111113
5237613
6467913
7723313
Stop Event
node limit
Counts
1 → 30
Calls
Call 1
Inputs
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (pow.f64 x 3) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (*.f64 (pow.f64 x 3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/3 (pow.f64 x 3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (pow.f64 x 3) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 2/3) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 4/3) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 2) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 1/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2/3 (*.f64 (pow.f64 x 3) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 8/3) 1/16)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 4) 1/24)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/12 (*.f64 (pow.f64 x 3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/4) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4/3 (/.f64 (pow.f64 x 3) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 3) 1/12) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (pow.f64 x 3) 4/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/24 (*.f64 (pow.f64 x 3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 3) 8) 4/3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/16 (*.f64 (pow.f64 x 3) 8/3))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (pow.f64 x 3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))))))

simplify277.0ms (1.9%)

Algorithm
egg-herbie
Rules
2414×rational.json-simplify-1
2388×rational.json-simplify-41
2026×rational.json-simplify-49
1860×rational.json-simplify-2
1664×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
062546
188546
2141546
3237546
4356546
5553546
61077546
71749546
82149546
92491546
102695546
112872546
122969546
134141546
144180546
154570546
164608546
174646546
184684546
194722546
204760546
214798546
226226546
236264546
246302546
256340546
266378546
277064546
Stop Event
node limit
Counts
42 → 30
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(+.f64 0 (*.f64 (pow.f64 x 3) 1/6))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(-.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(*.f64 1/3 (*.f64 (pow.f64 x 3) 1/2))
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 (*.f64 1/3 (pow.f64 x 3)) 1/2)
(*.f64 2 (*.f64 (pow.f64 x 3) 1/12))
(*.f64 (*.f64 (pow.f64 x 3) 1/6) 1)
(*.f64 1 (*.f64 (pow.f64 x 3) 1/6))
(*.f64 (*.f64 (pow.f64 x 3) 2/3) 1/4)
(*.f64 4 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 4/3) 1/8)
(*.f64 (*.f64 (pow.f64 x 3) 2) 1/12)
(*.f64 (*.f64 (pow.f64 x 3) 1/2) 1/3)
(*.f64 1/2 (*.f64 1/3 (pow.f64 x 3)))
(*.f64 2/3 (*.f64 (pow.f64 x 3) 1/4))
(*.f64 (*.f64 (pow.f64 x 3) 8/3) 1/16)
(*.f64 (*.f64 (pow.f64 x 3) 4) 1/24)
(*.f64 1/12 (*.f64 (pow.f64 x 3) 2))
(*.f64 (*.f64 (pow.f64 x 3) 1/4) 2/3)
(*.f64 1/4 (*.f64 (pow.f64 x 3) 2/3))
(*.f64 4/3 (/.f64 (pow.f64 x 3) 8))
(*.f64 (*.f64 (pow.f64 x 3) 1/12) 2)
(*.f64 1/8 (*.f64 (pow.f64 x 3) 4/3))
(*.f64 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 4)
(*.f64 1/24 (*.f64 (pow.f64 x 3) 4))
(*.f64 (/.f64 (pow.f64 x 3) 8) 4/3)
(*.f64 1/16 (*.f64 (pow.f64 x 3) 8/3))
Outputs
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(*.f64 1/6 (pow.f64 x 3))
(+.f64 0 (*.f64 (pow.f64 x 3) 1/6))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(*.f64 1/6 (pow.f64 x 3))
(-.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/3 (*.f64 (pow.f64 x 3) 1/2))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 1/3 (pow.f64 x 3)) 1/2)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 2 (*.f64 (pow.f64 x 3) 1/12))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 1/6) 1)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1 (*.f64 (pow.f64 x 3) 1/6))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 2/3) 1/4)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 4 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 4/3) 1/8)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 2) 1/12)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 1/2) 1/3)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/2 (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 2/3 (*.f64 (pow.f64 x 3) 1/4))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 8/3) 1/16)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 4) 1/24)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/12 (*.f64 (pow.f64 x 3) 2))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 1/4) 2/3)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/4 (*.f64 (pow.f64 x 3) 2/3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 4/3 (/.f64 (pow.f64 x 3) 8))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (*.f64 (pow.f64 x 3) 1/12) 2)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/8 (*.f64 (pow.f64 x 3) 4/3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (/.f64 (*.f64 1/3 (pow.f64 x 3)) 8) 4)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/24 (*.f64 (pow.f64 x 3) 4))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 (/.f64 (pow.f64 x 3) 8) 4/3)
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/16 (*.f64 (pow.f64 x 3) 8/3))
(*.f64 1/6 (pow.f64 x 3))

localize14.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 40 to 29 computations (27.5% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite104.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1992×bool.json-1
1296×bool.json-2
1264×rational.json-simplify-35
1252×rational.json-1
1252×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0925
18925
222925
346625
498925
5223025
6476725
7774425
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))))))

simplify484.0ms (3.3%)

Algorithm
egg-herbie
Rules
3260×rational.json-simplify-1
2696×rational.json-simplify-41
2062×rational.json-simplify-35
1560×rational.json-simplify-49
1430×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
060789
1119789
2232789
3690789
41332789
52052789
62389789
72435789
82472789
92504789
104999789
115192789
125281789
135369789
145428789
155483789
165535789
175586789
185636789
196744789
206792789
216835789
226872789
236906789
246940789
257205789
Stop Event
node limit
Counts
33 → 25
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(-.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)
(*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(*.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2)))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))
(*.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 1/4)
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 4)
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(*.f64 1/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(-.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 0)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 1 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2) (*.f64 x 1/2)))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (*.f64 1/3 (pow.f64 x 3))) 1/2)))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 1/2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 1/4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 3) 2/3)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4))
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 3) 1/6)) 2) 4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 1)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 3) 1/6))) 2)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 4) 4)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8) 8)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)) 16)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) 32)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 8)))) 64)
(+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3))))

localize15.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5)))
0.1b
(*.f64 1/60 (pow.f64 x 5))
Compiler

Compiled 36 to 28 computations (22.2% saved)

series0.0ms (0%)

Counts
1 → 3
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5)))
0.0ms
x
@inf
(+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5)))
0.0ms
x
@-inf
(+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5)))

rewrite98.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1700×bool.json-1
1700×bool.json-2
1644×rational.json-1
1200×rational.json-simplify-35
1090×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
19825
224325
346725
494925
5209825
6434325
7690025
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 (pow.f64 x 5) 1/120) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (pow.f64 x 5) 1/30) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))))))))

simplify714.0ms (4.9%)

Algorithm
egg-herbie
Rules
4108×rational.json-simplify-1
3478×rational.json-simplify-41
1806×rational.json-simplify-35
1122×rational.json-simplify-2
756×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
057551
1119545
2224545
3590545
41756545
52709545
63004545
73043545
83077545
93110545
103143545
113176545
123217545
133247545
143277545
153307545
163337545
173367545
183397545
193427545
205903545
215948545
225998545
236041545
246080545
256115545
266150545
276184545
286214545
296244545
306274545
316304545
326334545
336364545
346394545
356424545
Stop Event
node limit
Counts
23 → 26
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 1/60 (pow.f64 x 5))
(*.f64 1/60 (pow.f64 x 5))
(-.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 0)
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))
(*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)
(*.f64 1 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2))
(*.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 (pow.f64 x 5) 1/120) 2)))
(*.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 1/4)
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 x 5) 1/30) (*.f64 x 4)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2)
(*.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2) 4)
(/.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 2)
(/.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 4)
(/.f64 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)))) 64)
Outputs
(*.f64 2 x)
(*.f64 1/60 (pow.f64 x 5))
(*.f64 1/60 (pow.f64 x 5))
(-.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 0)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 1 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 1/2)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 4 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 4 (+.f64 (*.f64 x 1/2) (/.f64 (*.f64 (pow.f64 x 5) 1/120) 2)))
(*.f64 4 (+.f64 (*.f64 x 1/2) (*.f64 (pow.f64 x 5) 1/240)))
(*.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 1/4)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 1/2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 x 5) 1/30) (*.f64 x 4)))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 (pow.f64 x 5) 1/30)))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 1/4 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(*.f64 (/.f64 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)) 2) 4)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 1)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120))) 2)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (*.f64 2 (*.f64 4 (+.f64 x (*.f64 (pow.f64 x 5) 1/120)))) 4)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8) 8)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)) 16)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) 32)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (+.f64 x x) (*.f64 1/60 (pow.f64 x 5))) 8)))) 64)
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 x x))
(+.f64 x (+.f64 x (*.f64 1/60 (pow.f64 x 5))))

eval53.0ms (0.4%)

Compiler

Compiled 2301 to 1921 computations (16.5% saved)

prune25.0ms (0.2%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New1782180
Fresh000
Picked011
Done156
Total1798187
Error
0b
Counts
187 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
58.2b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.4b
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
0.5b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
0.8b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
0.5b
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
0.8b
(/.f64 (*.f64 2 x) 2)
60.2b
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
60.0b
(*.f64 (pow.f64 x 3) 1/6)
Compiler

Compiled 83 to 68 computations (18.1% saved)

localize6.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 12 to 9 computations (25% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite91.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
1588×bool.json-1
1588×bool.json-2
1532×rational.json-1
1532×rational.json-2
1532×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16913
218813
338113
475813
5158913
6367913
7637513
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (pow.f64 x 3) 1/6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (pow.f64 x 3) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 1/3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 2/3) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 4/3) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (pow.f64 x 3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 x 3) 1/6) (*.f64 (pow.f64 x 3) 1/6))))))

simplify626.0ms (4.3%)

Algorithm
egg-herbie
Rules
8298×rational.json-simplify-41
1956×rational.json-simplify-35
916×rational.json-simplify-2
764×rational.json-simplify-1
440×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038299
181299
2146299
3325299
4729299
52078299
62760299
72854299
82912299
92952299
102988299
113022299
123056299
133090299
143124299
153158299
163192299
173226299
183260299
193294299
203328299
213362299
223396299
233430299
243464299
253498299
263532299
273566299
283600299
293634299
303668299
313702299
323736299
333770299
343804299
353804299
Stop Event
node limit
Counts
23 → 12
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(+.f64 0 (*.f64 (pow.f64 x 3) 1/6))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(-.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(/.f64 (*.f64 (pow.f64 x 3) 1/6) 1)
(/.f64 (*.f64 (pow.f64 x 3) 1/3) 2)
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 4)
(/.f64 (*.f64 (pow.f64 x 3) 4/3) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)))) 64)
Outputs
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(*.f64 1/6 (pow.f64 x 3))
(+.f64 0 (*.f64 (pow.f64 x 3) 1/6))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(*.f64 1/6 (pow.f64 x 3))
(-.f64 (*.f64 (pow.f64 x 3) 1/6) 0)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 1/6) 1)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 1/3) 2)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 4)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 4/3) 8)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)) 16)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) 32)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3))) (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 3) 4/3)))) 64)
(*.f64 1/6 (pow.f64 x 3))

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
0.1b
(*.f64 1/60 (pow.f64 x 5))
Compiler

Compiled 20 to 16 computations (20% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite77.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
1312×bool.json-1
1312×bool.json-2
1218×rational.json-1
1218×rational.json-2
1218×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0913
19413
226913
355613
4111313
5236713
6491713
Stop Event
node limit
Counts
1 → 30
Calls
Call 1
Inputs
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 5) 1/120) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 x 5) 1/120))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 5) 1/240) (*.f64 (pow.f64 x 5) 1/240))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (pow.f64 x 5) 1/120) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/60 (*.f64 (pow.f64 x 5) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 5) 1/120)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/60 (pow.f64 x 5)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (pow.f64 x 5) 1/240))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/120) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (pow.f64 x 5) 1/120))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/30) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/120 (pow.f64 x 5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/15) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 2) 1/240)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/2) 1/60)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 1/60 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/30 (*.f64 (pow.f64 x 5) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 2/15) 1/16)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 4) 1/480)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/240 (*.f64 (pow.f64 x 5) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/4) 1/30)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (pow.f64 x 5) 1/30))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/15 (/.f64 (pow.f64 x 5) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 5) 1/240) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (pow.f64 x 5) 1/15))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/480 (*.f64 (pow.f64 x 5) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/16 (*.f64 (pow.f64 x 5) 2/15))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 5) 8) 1/15)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (pow.f64 x 5) 1/120)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 5) 1/120))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 x 5) 1/120) (*.f64 (pow.f64 x 5) 1/120))))))

simplify390.0ms (2.7%)

Algorithm
egg-herbie
Rules
4458×rational.json-simplify-2
2702×rational.json-simplify-49
2124×rational.json-simplify-51
1566×rational.json-simplify-35
816×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
062546
188546
2141546
3237546
4355546
5518546
6826546
71548546
82239546
92470546
102559546
112639546
122714546
132790546
142847546
152907546
162964546
172991546
183018546
193135546
203162546
213189546
223396546
233634546
244433546
255032546
265673546
275784546
285826546
295865546
305904546
315943546
325982546
336021546
346060546
357246546
Stop Event
node limit
Counts
42 → 30
Calls
Call 1
Inputs
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 x 5) 1/120) 0)
(+.f64 0 (*.f64 (pow.f64 x 5) 1/120))
(+.f64 (*.f64 (pow.f64 x 5) 1/240) (*.f64 (pow.f64 x 5) 1/240))
(-.f64 (*.f64 (pow.f64 x 5) 1/120) 0)
(*.f64 1/60 (*.f64 (pow.f64 x 5) 1/2))
(*.f64 (pow.f64 x 5) 1/120)
(*.f64 (*.f64 1/60 (pow.f64 x 5)) 1/2)
(*.f64 2 (*.f64 (pow.f64 x 5) 1/240))
(*.f64 (*.f64 (pow.f64 x 5) 1/120) 1)
(*.f64 1 (*.f64 (pow.f64 x 5) 1/120))
(*.f64 (*.f64 (pow.f64 x 5) 1/30) 1/4)
(*.f64 4 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/15) 1/8)
(*.f64 (*.f64 (pow.f64 x 5) 2) 1/240)
(*.f64 (*.f64 (pow.f64 x 5) 1/2) 1/60)
(*.f64 1/2 (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/30 (*.f64 (pow.f64 x 5) 1/4))
(*.f64 (*.f64 (pow.f64 x 5) 2/15) 1/16)
(*.f64 (*.f64 (pow.f64 x 5) 4) 1/480)
(*.f64 1/240 (*.f64 (pow.f64 x 5) 2))
(*.f64 (*.f64 (pow.f64 x 5) 1/4) 1/30)
(*.f64 1/4 (*.f64 (pow.f64 x 5) 1/30))
(*.f64 1/15 (/.f64 (pow.f64 x 5) 8))
(*.f64 (*.f64 (pow.f64 x 5) 1/240) 2)
(*.f64 1/8 (*.f64 (pow.f64 x 5) 1/15))
(*.f64 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 4)
(*.f64 1/480 (*.f64 (pow.f64 x 5) 4))
(*.f64 1/16 (*.f64 (pow.f64 x 5) 2/15))
(*.f64 (/.f64 (pow.f64 x 5) 8) 1/15)
Outputs
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 x 5) 1/120) 0)
(*.f64 1/120 (pow.f64 x 5))
(+.f64 0 (*.f64 (pow.f64 x 5) 1/120))
(*.f64 1/120 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 x 5) 1/240) (*.f64 (pow.f64 x 5) 1/240))
(*.f64 1/120 (pow.f64 x 5))
(-.f64 (*.f64 (pow.f64 x 5) 1/120) 0)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/60 (*.f64 (pow.f64 x 5) 1/2))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (pow.f64 x 5) 1/120)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 1/60 (pow.f64 x 5)) 1/2)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 2 (*.f64 (pow.f64 x 5) 1/240))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/120) 1)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1 (*.f64 (pow.f64 x 5) 1/120))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/30) 1/4)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 4 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/15) 1/8)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 2) 1/240)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/2) 1/60)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/2 (*.f64 1/60 (pow.f64 x 5)))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/30 (*.f64 (pow.f64 x 5) 1/4))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 2/15) 1/16)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 4) 1/480)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/240 (*.f64 (pow.f64 x 5) 2))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/4) 1/30)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/4 (*.f64 (pow.f64 x 5) 1/30))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/15 (/.f64 (pow.f64 x 5) 8))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (*.f64 (pow.f64 x 5) 1/240) 2)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/8 (*.f64 (pow.f64 x 5) 1/15))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (/.f64 (*.f64 1/60 (pow.f64 x 5)) 8) 4)
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/480 (*.f64 (pow.f64 x 5) 4))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 1/16 (*.f64 (pow.f64 x 5) 2/15))
(*.f64 1/120 (pow.f64 x 5))
(*.f64 (/.f64 (pow.f64 x 5) 8) 1/15)
(*.f64 1/120 (pow.f64 x 5))

eval21.0ms (0.1%)

Compiler

Compiled 767 to 672 computations (12.4% saved)

prune13.0ms (0.1%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New85186
Fresh000
Picked101
Done167
Total87794
Error
0b
Counts
94 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
58.2b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.4b
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
0.5b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
0.8b
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
0.5b
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
0.8b
(/.f64 (*.f64 2 x) 2)
60.2b
(*.f64 (pow.f64 x 5) 1/120)
Compiler

Compiled 75 to 61 computations (18.7% saved)

regimes14.0ms (0.1%)

Counts
10 → 1
Calls
Call 1
Inputs
(/.f64 (*.f64 2 x) 2)
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 (pow.f64 x 5) 1/120)
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
Outputs
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
Calls

3 calls:

6.0ms
x
2.0ms
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
2.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Results
ErrorSegmentsBranch
0.4b1x
0.4b1(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.4b1(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 106 to 84 computations (20.8% saved)

regimes13.0ms (0.1%)

Counts
9 → 1
Calls
Call 1
Inputs
(/.f64 (*.f64 2 x) 2)
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 (pow.f64 x 5) 1/120)
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Outputs
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
Calls

3 calls:

5.0ms
x
3.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
2.0ms
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Results
ErrorSegmentsBranch
0.5b1x
0.5b1(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.5b1(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 89 to 70 computations (21.3% saved)

regimes7.0ms (0%)

Counts
7 → 1
Calls
Call 1
Inputs
(/.f64 (*.f64 2 x) 2)
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 (pow.f64 x 5) 1/120)
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/60 (pow.f64 x 5))) 2)
Outputs
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
Calls

1 calls:

5.0ms
x
Results
ErrorSegmentsBranch
0.5b1x
Compiler

Compiled 54 to 43 computations (20.4% saved)

regimes5.0ms (0%)

Accuracy

Total -59.4b remaining (-7148.7%)

Threshold costs -59.4b (-7148.7%)

Counts
5 → 1
Calls
Call 1
Inputs
(/.f64 (*.f64 2 x) 2)
(*.f64 (pow.f64 x 3) 1/6)
(*.f64 (pow.f64 x 5) 1/120)
(/.f64 (*.f64 1/60 (pow.f64 x 5)) 2)
(/.f64 (*.f64 1/3 (pow.f64 x 3)) 2)
Outputs
(/.f64 (*.f64 2 x) 2)
Calls

1 calls:

4.0ms
x
Results
ErrorSegmentsBranch
0.8b1x
Compiler

Compiled 32 to 26 computations (18.8% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022124
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
(/.f64 (*.f64 2 x) 2)
Outputs
(/.f64 (+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5)))) 2)
(/.f64 (+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3))) 2)
(/.f64 (+.f64 x (+.f64 x (*.f64 1/3 (pow.f64 x 3)))) 2)
(/.f64 (*.f64 2 x) 2)
Compiler

Compiled 48 to 39 computations (18.8% saved)

soundness0.0ms (0%)

end34.0ms (0.2%)

Compiler

Compiled 45 to 36 computations (20% saved)

Profiling

Loading profile data...