Details

Time bar (total: 8.1s)

analyze224.0ms (2.8%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
37.5%37.5%62.4%0.1%0%0%0%6
56.3%56.2%43.7%0.1%0%0%0%7
65.6%65.6%34.3%0.1%0%0%0%8
76.6%76.5%23.4%0.1%0%0%0%9
82%82%18%0.1%0%0%0%10
87.9%87.8%12.1%0.1%0%0%0%11
90.8%90.7%9.2%0.1%0%0%0%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample1.1s (13.5%)

Results
975.0ms7727×body256valid
46.0ms188×body2048valid
43.0ms214×body1024valid
17.0ms127×body512valid
0.0msbody256infinite
Bogosity

preprocess3.9s (47.6%)

Algorithm
egg-herbie
Rules
21710×rational.json-simplify-41
2322×rational.json-simplify-1
1296×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01138
11938
22538
33538
45338
510138
623238
760938
877238
977838
1078438
1179038
1279638
1380238
1480838
1581438
1682038
1782638
1883238
1983838
2084438
2185038
2285638
23257338
24257938
25258538
26259138
27259738
28260338
29340338
30340938
31341538
32342138
33342738
34343338
35343938
36344538
37345138
38345738
39346338
40346938
41347538
42348138
43348738
44349338
45349938
46350538
47351138
48351738
49352338
50352938
51353538
52354138
53354738
54355338
55355938
56356538
57357138
58357738
59358338
60358938
61359538
62360138
63360738
64361338
65361938
66362538
67363138
68363738
69364338
70364938
71365538
72366138
73366738
74367338
75367938
76368538
77369138
78369738
79370338
80370938
81371538
82372138
83372738
84373338
85373938
86374538
87375138
88375738
89376338
90376938
91377538
92378138
93378738
94379338
95379938
96380538
97381138
98381738
99382338
100382938
101383538
102384138
103384738
104385338
105385938
106386538
107387138
108387738
109388338
110388938
111389538
112390138
113390738
114391338
115391938
116392538
117393138
118393738
119394338
120394938
121395538
122396138
123396738
124397338
125397938
126398538
127399138
128399738
129400338
130400938
131401538
132402138
133402738
134403338
135403938
136404538
137405138
138405738
139406338
140406938
141407538
142408138
143408738
144409338
145409938
146410538
147411138
148411738
149412338
150412938
151413538
152414138
153414738
154415338
155415938
156416538
157417138
158417738
159418338
160418938
161419538
162420138
163420738
164421338
165421938
166422538
167423138
168423738
169424338
170424938
171425538
172426138
173426738
174427338
175427938
176428538
177429138
178429738
179430338
180430938
181431538
182432138
183432738
184433338
185433938
186434538
187435138
188435738
189436338
190436938
191437538
192438138
193438738
194439338
195439938
196440538
197441138
198441738
199442338
200442938
201443538
202444138
203444738
204445338
205445938
206446538
207447138
208447738
209448338
210448938
211449538
212450138
213450738
214451338
215451938
216452538
217453138
218453738
219454338
220454938
221455538
222456138
223456738
224457338
225457938
226458538
227459138
228459738
229460338
230460938
231461538
232462138
233462738
234463338
235463938
236464538
237465138
238465738
239466338
240466938
241467538
242468138
243468738
244469338
245469938
246470538
247471138
248471738
249472338
250472938
251473538
252474138
253474738
254475338
255475938
256476538
257477138
258477738
259478338
260478938
261479538
262480138
263480738
264481338
265481938
266482538
267483138
268483738
269484338
270484938
271485538
272486138
273486738
274487338
275487938
276488538
277489138
278489738
279490338
280490938
281491538
282492138
283492738
284493338
285493938
286494538
287495138
288495738
289496338
290496938
291497538
292498138
293498738
294499338
295499938
296500538
297501138
298501738
299502338
300502938
301503538
302504138
303504738
304505338
305505938
306506538
307507138
308507738
309508338
310508938
311509538
312510138
313510738
314511338
315511938
316512538
317513138
318513738
319514338
320514938
321515538
322516138
323516738
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(+.f64 x (/.f64 (-.f64 x y) 2))
(+.f64 y (/.f64 (-.f64 y x) 2))
Outputs
(+.f64 x (/.f64 (-.f64 x y) 2))
(+.f64 y (/.f64 (-.f64 y x) 2))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify668.0ms (8.2%)

Algorithm
egg-herbie
Rules
12004×rational.json-simplify-41
1118×rational.json-simplify-1
328×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11319
21719
32319
43319
55719
612319
731019
839419
939819
1040219
1140619
1241019
13130019
14168019
15168419
16168819
17169219
18169619
19170019
20170419
21170819
22171219
23171619
24172019
25172419
26172819
27173219
28173619
29174019
30174419
31174819
32175219
33175619
34176019
35176419
36176819
37177219
38177619
39178019
40178419
41178819
42179219
43179619
44180019
45180419
46180819
47181219
48181619
49182019
50182419
51182819
52183219
53183619
54184019
55184419
56184819
57185219
58185619
59186019
60186419
61186819
62187219
63187619
64188019
65188419
66188819
67189219
68189619
69190019
70190419
71190819
72191219
73191619
74192019
75192419
76192819
77193219
78193619
79194019
80194419
81194819
82195219
83195619
84196019
85196419
86196819
87197219
88197619
89198019
90198419
91198819
92199219
93199619
94200019
95200419
96200819
97201219
98201619
99202019
100202419
101202819
102203219
103203619
104204019
105204419
106204819
107205219
108205619
109206019
110206419
111206819
112207219
113207619
114208019
115208419
116208819
117209219
118209619
119210019
120210419
121210819
122211219
123211619
124212019
125212419
126212819
127213219
128213619
129214019
130214419
131214819
132215219
133215619
134216019
135216419
136216819
137217219
138217619
139218019
140218419
141218819
142219219
143219619
144220019
145220419
146220819
147221219
148221619
149222019
150222419
151222819
152223219
153223619
154224019
155224419
156224819
157225219
158225619
159226019
160226419
161226819
162227219
163227619
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(+.f64 x (/.f64 (-.f64 x y) 2))
Outputs
(+.f64 x (/.f64 (-.f64 x y) 2))

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 6 computations (33.3% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (/.f64 (-.f64 x y) 2))
Compiler

Compiled 20 to 9 computations (55% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
y
@-inf
(+.f64 x (/.f64 (-.f64 x y) 2))
0.0ms
x
@inf
(+.f64 x (/.f64 (-.f64 x y) 2))
0.0ms
x
@-inf
(+.f64 x (/.f64 (-.f64 x y) 2))
0.0ms
x
@0
(+.f64 x (/.f64 (-.f64 x y) 2))
0.0ms
y
@inf
(+.f64 x (/.f64 (-.f64 x y) 2))

rewrite126.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
1378×rational.json-1
1378×rational.json-2
1378×rational.json-4
1378×rational.json-3
1328×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
15519
213119
327219
451319
5116919
6288419
7475419
8609519
9759119
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(+.f64 x (/.f64 (-.f64 x y) 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 (-.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (-.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)))))

simplify973.0ms (12%)

Algorithm
egg-herbie
Rules
3388×rational.json-simplify-51
3096×rational.json-simplify-2
2246×rational.json-simplify-35
1382×rational.json-simplify-49
1312×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068948
1139948
2269948
3728948
41537948
52909948
63842948
73930948
83977948
94013948
104049948
114085948
124124948
134160948
144196948
154232948
164268948
174304948
184340948
195376948
205491948
217460948
227534948
237568948
247600948
257631948
267662948
277693948
287724948
297755948
307786948
317817948
327848948
337879948
347910948
Stop Event
node limit
Counts
48 → 35
Calls
Call 1
Inputs
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(*.f64 3/2 x)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(*.f64 3/2 x)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 1/2 x) x)
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(*.f64 -1/2 y)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(*.f64 -1/2 y)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(-.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 0)
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)))
(*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
(*.f64 1 (+.f64 x (*.f64 (-.f64 x y) 1/2)))
(*.f64 4 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8))
(*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/2)
(*.f64 1/2 (+.f64 x (+.f64 x (-.f64 x y))))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 1/4)
(*.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))))
(*.f64 1/4 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 1/8)
(*.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)) 2)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))
(*.f64 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8) 4)
(*.f64 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)) 1/4)
(/.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
(/.f64 (+.f64 x (+.f64 x (-.f64 x y))) 2)
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))))) 128)
(pow.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
Outputs
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(*.f64 3/2 x)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(*.f64 3/2 x)
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 (*.f64 1/2 x) x)
(+.f64 x (*.f64 x 1/2))
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 -1/2 y) (+.f64 (*.f64 1/2 x) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(*.f64 -1/2 y)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(*.f64 -1/2 y)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/2 y) x))
(+.f64 (*.f64 -1/2 y) (+.f64 x (*.f64 x 1/2)))
(+.f64 x (+.f64 (*.f64 -1/2 y) (*.f64 x 1/2)))
(-.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 0)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)))
(*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 1 (+.f64 x (*.f64 (-.f64 x y) 1/2)))
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 4 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8))
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/2)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 1/2 (+.f64 x (+.f64 x (-.f64 x y))))
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 1/4)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))))
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 1/4 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)))
(*.f64 1/4 (+.f64 (*.f64 x 4) (*.f64 (-.f64 x y) 2)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 1/8)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)) 2)
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 x y) 1/4)))
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 (*.f64 (+.f64 x (+.f64 x (-.f64 x y))) 1/8) 4)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(*.f64 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)) 1/4)
(*.f64 1/4 (+.f64 (*.f64 (-.f64 x y) 2) (*.f64 x 4)))
(*.f64 1/4 (+.f64 (*.f64 x 4) (*.f64 (-.f64 x y) 2)))
(/.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (+.f64 x (+.f64 x (-.f64 x y))) 2)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (-.f64 x y)))) 4)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8) 8)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)) 16)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))) 32)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8)))) 64)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 8))))) 128)
(+.f64 x (*.f64 1/2 (-.f64 x y)))
(pow.f64 (+.f64 x (*.f64 (-.f64 x y) 1/2)) 1)
(+.f64 x (*.f64 1/2 (-.f64 x y)))

eval8.0ms (0.1%)

Compiler

Compiled 347 to 202 computations (41.8% saved)

prune6.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New32335
Fresh000
Picked011
Done000
Total32436
Error
0.0b
Counts
36 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
0.0b
(+.f64 x (/.f64 (-.f64 x y) 2))
33.0b
(*.f64 3/2 x)
29.8b
(*.f64 -1/2 y)
Compiler

Compiled 28 to 21 computations (25% saved)

localize4.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
Compiler

Compiled 19 to 13 computations (31.6% saved)

series1.0ms (0%)

Counts
1 → 6
Calls

6 calls:

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

rewrite213.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
1676×rational.json-simplify-1
1656×rational.json-simplify-35
1304×exponential.json-3
1304×rational.json-1
1304×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
15919
211719
323519
444419
599319
6255119
7454219
8530619
9655319
10741819
11749619
12758019
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 3) (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)))))

simplify775.0ms (9.6%)

Algorithm
egg-herbie
Rules
4252×rational.json-simplify-51
2610×rational.json-simplify-49
2010×rational.json-simplify-35
1940×rational.json-simplify-2
1048×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
063491
1135491
2221491
3383491
4792491
52106491
63115491
73370491
83458491
93515491
103552491
113588491
123624491
133660491
143695491
153728491
163761491
173794491
183827491
193860491
203893491
214942491
225003491
235036491
245069491
255102491
265135491
275626491
285660491
295695491
305730491
315765491
325800491
335835491
345870491
355905491
365940491
375940491
Stop Event
node limit
Counts
29 → 26
Calls
Call 1
Inputs
(*.f64 3/2 x)
(*.f64 -1/2 y)
(*.f64 -1/2 y)
(*.f64 -1/2 y)
(*.f64 3/2 x)
(*.f64 3/2 x)
(-.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 0)
(*.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
(*.f64 1 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)))
(*.f64 2 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)))
(*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/2)
(*.f64 4 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8))
(*.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 1/4)
(*.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 1/8)
(*.f64 1/2 (+.f64 (*.f64 x 3) (neg.f64 y)))
(*.f64 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)) 2)
(*.f64 1/4 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))))
(*.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8) 4)
(*.f64 1/8 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))
(/.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
(/.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 2)
(/.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))))) 256)
(pow.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
Outputs
(*.f64 3/2 x)
(*.f64 -1/2 y)
(*.f64 -1/2 y)
(*.f64 -1/2 y)
(*.f64 3/2 x)
(*.f64 3/2 x)
(-.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 0)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 1 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)))
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 2 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)))
(*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/2)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 4 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8))
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 1/4)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 1/8)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 1/2 (+.f64 (*.f64 x 3) (neg.f64 y)))
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)) 2)
(*.f64 2 (+.f64 (*.f64 x 3/4) (*.f64 y -1/4)))
(*.f64 1/4 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))))
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 1/8) 4)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(*.f64 1/8 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 2)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (+.f64 (*.f64 x 3) (neg.f64 y))) 4)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4) 8)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)) 16)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))) 32)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))) 64)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4))))) 128)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 3) (neg.f64 y)) 4)))))) 256)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))
(pow.f64 (+.f64 (*.f64 -1/2 y) (*.f64 3/2 x)) 1)
(+.f64 (*.f64 3/2 x) (*.f64 -1/2 y))

eval7.0ms (0.1%)

Compiler

Compiled 262 to 197 computations (24.8% saved)

prune5.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New26026
Fresh000
Picked011
Done033
Total26430
Error
0.0b
Counts
30 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
0.0b
(+.f64 x (/.f64 (-.f64 x y) 2))
33.0b
(*.f64 3/2 x)
29.8b
(*.f64 -1/2 y)
Compiler

Compiled 28 to 21 computations (25% saved)

regimes14.0ms (0.2%)

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

3 calls:

5.0ms
y
4.0ms
(+.f64 x (/.f64 (-.f64 x y) 2))
4.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(+.f64 x (/.f64 (-.f64 x y) 2))
Compiler

Compiled 37 to 25 computations (32.4% saved)

regimes14.0ms (0.2%)

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

3 calls:

6.0ms
x
4.0ms
(+.f64 x (/.f64 (-.f64 x y) 2))
3.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(+.f64 x (/.f64 (-.f64 x y) 2))
Compiler

Compiled 30 to 20 computations (33.3% saved)

regimes22.0ms (0.3%)

Accuracy

Total -49.9b remaining (-414.9%)

Threshold costs -49.9b (-414.9%)

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

2 calls:

11.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
12.0b3x
14.5b3y
Compiler

Compiled 14 to 10 computations (28.6% saved)

bsearch38.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
8.302664170657233e+28
9.350118617971295e+32
23.0ms
-2.629447796805227e-34
-9.761095233984103e-43
Results
29.0ms250×body256valid
2.0msbody2048valid
2.0ms10×body1024valid
1.0msbody512valid
Compiler

Compiled 218 to 180 computations (17.4% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02284
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 x (/.f64 (-.f64 x y) 2))
(if (<=.f64 x -6547527335242445/93536104789177786765035829293842113257979682750464) (*.f64 3/2 x) (if (<=.f64 x 8999999999999999897486646837248) (*.f64 -1/2 y) (*.f64 3/2 x)))
(*.f64 -1/2 y)
Outputs
(+.f64 (*.f64 -1/2 y) (*.f64 3/2 x))
(+.f64 x (/.f64 (-.f64 x y) 2))
(if (<=.f64 x -6547527335242445/93536104789177786765035829293842113257979682750464) (*.f64 3/2 x) (if (<=.f64 x 8999999999999999897486646837248) (*.f64 -1/2 y) (*.f64 3/2 x)))
(*.f64 -1/2 y)
Compiler

Compiled 42 to 31 computations (26.2% saved)

soundness0.0ms (0%)

end28.0ms (0.3%)

Compiler

Compiled 36 to 25 computations (30.6% saved)

Profiling

Loading profile data...