Details

Time bar (total: 8.0s)

analyze46.0ms (0.6%)

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 8 to 6 computations (25% saved)

sample908.0ms (11.3%)

Results
898.0ms8256×body256valid
Bogosity

preprocess740.0ms (9.2%)

Algorithm
egg-herbie
Rules
14158×rational.json-simplify-41
1286×rational.json-simplify-1
324×rational.json-simplify-35
swap-x-y
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
11326
22126
33926
48926
524926
633126
733526
833926
934326
1034726
11123626
12124026
13124426
14124826
15125226
16125626
17174526
18174926
19175326
20175726
21176126
22176526
23176926
24177326
25177726
26178126
27178526
28178926
29179326
30179726
31180126
32180526
33180926
34181326
35181726
36182126
37182526
38182926
39183326
40183726
41184126
42184526
43184926
44185326
45185726
46186126
47186526
48186926
49187326
50187726
51188126
52188526
53188926
54189326
55189726
56190126
57190526
58190926
59191326
60191726
61192126
62192526
63192926
64193326
65193726
66194126
67194526
68194926
69195326
70195726
71196126
72196526
73196926
74197326
75197726
76198126
77198526
78198926
79199326
80199726
81200126
82200526
83200926
84201326
85201726
86202126
87202526
88202926
89203326
90203726
91204126
92204526
93204926
94205326
95205726
96206126
97206526
98206926
99207326
100207726
101208126
102208526
103208926
104209326
105209726
106210126
107210526
108210926
109211326
110211726
111212126
112212526
113212926
114213326
115213726
116214126
117214526
118214926
119215326
120215726
121216126
122216526
123216926
124217326
125217726
126218126
127218526
128218926
129219326
130219726
131220126
132220526
133220926
134221326
135221726
136222126
137222526
138222926
139223326
140223726
141224126
142224526
143224926
144225326
145225726
146226126
147226526
148226926
149227326
150227726
151228126
152228526
153228926
154229326
155229726
156230126
157230526
158230926
159231326
160231726
161232126
022
122
Stop Event
unsound
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(/.f64 (+.f64 x y) 10)
(/.f64 (+.f64 y x) 10)
Outputs
(/.f64 (+.f64 x y) 10)
(/.f64 (+.f64 y x) 10)
(/.f64 (+.f64 x y) 10)
Symmetry

(sort x y)

Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify728.0ms (9.1%)

Algorithm
egg-herbie
Rules
16450×rational.json-simplify-41
1286×rational.json-simplify-1
324×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
11213
22013
33813
48613
525213
633713
734113
834513
934913
1035313
11130913
12131313
13131713
14132113
15132513
16132913
17181813
18182213
19182613
20183013
21183413
22183813
23184213
24184613
25185013
26185413
27185813
28186213
29186613
30187013
31187413
32187813
33188213
34188613
35189013
36189413
37189813
38190213
39190613
40191013
41191413
42191813
43192213
44192613
45193013
46193413
47193813
48194213
49194613
50195013
51195413
52195813
53196213
54196613
55197013
56197413
57197813
58198213
59198613
60199013
61199413
62199813
63200213
64200613
65201013
66201413
67201813
68202213
69202613
70203013
71203413
72203813
73204213
74204613
75205013
76205413
77205813
78206213
79206613
80207013
81207413
82207813
83208213
84208613
85209013
86209413
87209813
88210213
89210613
90211013
91211413
92211813
93212213
94212613
95213013
96213413
97213813
98214213
99214613
100215013
101215413
102215813
103216213
104216613
105217013
106217413
107217813
108218213
109218613
110219013
111219413
112219813
113220213
114220613
115221013
116221413
117221813
118222213
119222613
120223013
121223413
122223813
123224213
124224613
125225013
126225413
127225813
128226213
129226613
130227013
131227413
132227813
133228213
134228613
135229013
136229413
137229813
138230213
139230613
140231013
141231413
142231813
143232213
144232613
145233013
146233413
147233813
148234213
149234613
150235013
151235413
152235813
153236213
154236613
155237013
156237413
157237813
158238213
159238613
160239013
161239413
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 (+.f64 x y) 10)
Outputs
(/.f64 (+.f64 x y) 10)

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% 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 (+.f64 x y) 10)
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite154.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
1376×bool.json-1
1376×bool.json-2
1340×rational.json-simplify-35
1302×rational.json-1
1302×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17313
222413
350313
4107013
5246413
6509113
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(/.f64 (+.f64 x y) 10)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) 1/10) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) 1/10) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) 1/10)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/10) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (+.f64 x y) 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 2) 1/20)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x y) 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/5) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 4) 1/40)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/10 (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x y) 40))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 2/5) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 8) 1/80)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x y) 1/5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/20 (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/5 (*.f64 (+.f64 x y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/20) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/40 (*.f64 (+.f64 x y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/2) 1/5)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x y) 2/5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x y) 40) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/80 (*.f64 (+.f64 x y) 8))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x y) 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x y) 1/10) (*.f64 (+.f64 x y) 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x y) 1/10) (*.f64 (+.f64 x y) 1/10))))))

simplify863.0ms (10.8%)

Algorithm
egg-herbie
Rules
3856×rational.json-simplify-51
3430×rational.json-simplify-49
3108×rational.json-simplify-2
1638×rational.json-simplify-41
1568×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
054840
177588
2119588
3207588
4308588
5494588
6596588
7655588
8747588
9842588
10924588
111950588
122199588
132387588
142575588
152740588
162879588
173415588
183500588
193567588
203605588
213625588
223643588
233746588
243845588
254168588
264220588
274273588
284322588
294366588
304399588
314581588
324843588
334992588
345234588
355409588
365431588
375453588
385475588
395497588
405519588
415541588
425563588
435585588
445607588
456723588
466745588
476767588
486789588
496811588
506833588
516855588
526877588
536899588
546921588
556943588
Stop Event
node limit
Counts
48 → 28
Calls
Call 1
Inputs
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 0 (*.f64 (+.f64 x y) 1/10))
(+.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))
(-.f64 (*.f64 (+.f64 x y) 1/10) 0)
(*.f64 (+.f64 x y) 1/10)
(*.f64 (*.f64 (+.f64 x y) 1/10) 1)
(*.f64 1 (*.f64 (+.f64 x y) 1/10))
(*.f64 (*.f64 (+.f64 x y) 2) 1/20)
(*.f64 2 (*.f64 (+.f64 x y) 1/20))
(*.f64 (*.f64 (+.f64 x y) 1/5) 1/2)
(*.f64 (*.f64 (+.f64 x y) 4) 1/40)
(*.f64 1/10 (+.f64 x y))
(*.f64 4 (/.f64 (+.f64 x y) 40))
(*.f64 (*.f64 (+.f64 x y) 2/5) 1/4)
(*.f64 (*.f64 (+.f64 x y) 8) 1/80)
(*.f64 1/2 (*.f64 (+.f64 x y) 1/5))
(*.f64 1/20 (*.f64 (+.f64 x y) 2))
(*.f64 1/5 (*.f64 (+.f64 x y) 1/2))
(*.f64 (*.f64 (+.f64 x y) 1/20) 2)
(*.f64 1/40 (*.f64 (+.f64 x y) 4))
(*.f64 (*.f64 (+.f64 x y) 1/2) 1/5)
(*.f64 1/4 (*.f64 (+.f64 x y) 2/5))
(*.f64 (/.f64 (+.f64 x y) 40) 4)
(*.f64 1/80 (*.f64 (+.f64 x y) 8))
Outputs
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 0 (*.f64 (+.f64 x y) 1/10))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(-.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (+.f64 x y) 1/10)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/10) 1)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1 (*.f64 (+.f64 x y) 1/10))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 2) 1/20)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 2 (*.f64 (+.f64 x y) 1/20))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/5) 1/2)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 4) 1/40)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 (+.f64 x y))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 4 (/.f64 (+.f64 x y) 40))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 2/5) 1/4)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 8) 1/80)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x y) 1/5))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/20 (*.f64 (+.f64 x y) 2))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/5 (*.f64 (+.f64 x y) 1/2))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/20) 2)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/40 (*.f64 (+.f64 x y) 4))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/2) 1/5)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 x y) 2/5))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 (/.f64 (+.f64 x y) 40) 4)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/80 (*.f64 (+.f64 x y) 8))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))

eval4.0ms (0%)

Compiler

Compiled 188 to 108 computations (42.6% saved)

prune5.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New24428
Fresh000
Picked011
Done000
Total24529
Error
0b
Counts
29 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (+.f64 x y) 10)
0.3b
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
0.3b
(*.f64 (+.f64 x y) 1/10)
29.3b
(*.f64 1/10 y)
34.1b
(*.f64 1/10 x)
Compiler

Compiled 33 to 25 computations (24.2% saved)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 7 to 5 computations (28.6% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite87.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1622×rational.json-simplify-35
1348×bool.json-1
1348×bool.json-2
1290×rational.json-1
1290×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
1517
21547
33267
46517
513627
631497
757517
Stop Event
node limit
Counts
1 → 12
Calls
Call 1
Inputs
(*.f64 1/10 x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/10 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/10 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 1/20) (*.f64 x 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/10 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/10 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x 1/5) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x 2/5) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x 4/5) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x 4/5)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x 4/5))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/10 x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/10 x) (*.f64 1/10 x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/10 x) (*.f64 1/10 x))))))

simplify642.0ms (8%)

Algorithm
egg-herbie
Rules
5664×rational.json-simplify-43
2324×rational.json-simplify-35
1246×rational.json-simplify-2
858×rational.json-simplify-1
642×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03884
18884
215884
336284
486484
5264084
6345984
7357484
8363984
9368484
10372684
11376684
12383784
13387684
14391584
15395484
16399384
17403284
18407184
19411084
20414984
21418884
22422784
23426684
24430584
25434484
26438384
27442284
28446184
29450084
30453984
31453984
32457884
33461784
34465684
35469584
Stop Event
node limit
Counts
12 → 13
Calls
Call 1
Inputs
(+.f64 (*.f64 1/10 x) 0)
(+.f64 0 (*.f64 1/10 x))
(+.f64 (*.f64 x 1/20) (*.f64 x 1/20))
(-.f64 (*.f64 1/10 x) 0)
(/.f64 (*.f64 1/10 x) 1)
(/.f64 (*.f64 x 1/5) 2)
(/.f64 (*.f64 x 2/5) 4)
(/.f64 (*.f64 x 4/5) 8)
(/.f64 (*.f64 2 (*.f64 x 4/5)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x 4/5))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5))))) 128)
Outputs
(+.f64 (*.f64 1/10 x) 0)
(*.f64 1/10 x)
(+.f64 0 (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 x 1/20) (*.f64 x 1/20))
(*.f64 1/10 x)
(-.f64 (*.f64 1/10 x) 0)
(*.f64 1/10 x)
(/.f64 (*.f64 1/10 x) 1)
(*.f64 1/10 x)
(/.f64 (*.f64 x 1/5) 2)
(*.f64 1/10 x)
(/.f64 (*.f64 x 2/5) 4)
(*.f64 1/10 x)
(/.f64 (*.f64 x 4/5) 8)
(*.f64 1/10 x)
(/.f64 (*.f64 2 (*.f64 x 4/5)) 16)
(*.f64 1/10 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x 4/5))) 32)
(*.f64 1/10 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) 64)
(*.f64 1/10 x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x 4/5))))) 128)
(*.f64 1/10 x)

localize3.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 1/10 y)
Compiler

Compiled 7 to 5 computations (28.6% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 1/10 y)
0.0ms
y
@inf
(*.f64 1/10 y)
0.0ms
y
@-inf
(*.f64 1/10 y)

rewrite109.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1622×rational.json-simplify-35
1348×bool.json-1
1348×bool.json-2
1290×rational.json-1
1290×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
1517
21547
33267
46517
513627
631497
757517
Stop Event
node limit
Counts
1 → 12
Calls
Call 1
Inputs
(*.f64 1/10 y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/10 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/10 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y 1/20) (*.f64 y 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/10 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/10 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y 1/5) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y 2/5) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y 4/5) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y 4/5)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y 4/5))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/10 y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/10 y) (*.f64 1/10 y))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/10 y) (*.f64 1/10 y))))))

simplify1.3s (15.9%)

Algorithm
egg-herbie
Rules
5664×rational.json-simplify-43
2324×rational.json-simplify-35
1246×rational.json-simplify-2
858×rational.json-simplify-1
642×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03884
18884
215884
336284
486484
5264084
6345984
7357484
8363984
9368484
10372684
11376684
12383784
13387684
14391584
15395484
16399384
17403284
18407184
19411084
20414984
21418884
22422784
23426684
24430584
25434484
26438384
27442284
28446184
29450084
30453984
31453984
32457884
33461784
34465684
35469584
Stop Event
node limit
Counts
12 → 13
Calls
Call 1
Inputs
(+.f64 (*.f64 1/10 y) 0)
(+.f64 0 (*.f64 1/10 y))
(+.f64 (*.f64 y 1/20) (*.f64 y 1/20))
(-.f64 (*.f64 1/10 y) 0)
(/.f64 (*.f64 1/10 y) 1)
(/.f64 (*.f64 y 1/5) 2)
(/.f64 (*.f64 y 2/5) 4)
(/.f64 (*.f64 y 4/5) 8)
(/.f64 (*.f64 2 (*.f64 y 4/5)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y 4/5))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5))))) 128)
Outputs
(+.f64 (*.f64 1/10 y) 0)
(*.f64 1/10 y)
(+.f64 0 (*.f64 1/10 y))
(*.f64 1/10 y)
(+.f64 (*.f64 y 1/20) (*.f64 y 1/20))
(*.f64 1/10 y)
(-.f64 (*.f64 1/10 y) 0)
(*.f64 1/10 y)
(/.f64 (*.f64 1/10 y) 1)
(*.f64 1/10 y)
(/.f64 (*.f64 y 1/5) 2)
(*.f64 1/10 y)
(/.f64 (*.f64 y 2/5) 4)
(*.f64 1/10 y)
(/.f64 (*.f64 y 4/5) 8)
(*.f64 1/10 y)
(/.f64 (*.f64 2 (*.f64 y 4/5)) 16)
(*.f64 1/10 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y 4/5))) 32)
(*.f64 1/10 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) 64)
(*.f64 1/10 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y 4/5))))) 128)
(*.f64 1/10 y)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (+.f64 x y) 1/10)
Compiler

Compiled 13 to 6 computations (53.8% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite96.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1684×bool.json-1
1684×bool.json-2
1628×rational.json-1
1628×rational.json-2
1110×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219313
340313
483413
5180913
6410913
7683213
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) 1/10)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) 1/10) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) 1/10) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 1/10) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 1/5) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 2/5) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 4/5) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x y) 4/5)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x y) 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x y) 1/10) (*.f64 (+.f64 x y) 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x y) 1/10) (*.f64 (+.f64 x y) 1/10))))))

simplify1.3s (15.7%)

Algorithm
egg-herbie
Rules
5770×rational.json-simplify-35
2032×rational.json-simplify-49
1940×rational.json-simplify-2
1062×rational.json-simplify-1
762×rational.json-simplify-41
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
040593
188419
2155419
3350419
4796419
52308419
63059419
73257419
83314419
93354419
103392419
113428419
123464419
133500419
143536419
153572419
163608419
173644419
183680419
193716419
203752419
215076419
225236419
235401419
245404419
255404419
265908419
276053419
286198419
296343419
306488419
316633419
326778419
336923419
347068419
357068419
367068419
377068419
387213419
397358419
407503419
417648419
427793419
437938419
Stop Event
node limit
Counts
35 → 15
Calls
Call 1
Inputs
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(+.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 0 (*.f64 (+.f64 x y) 1/10))
(+.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))
(-.f64 (*.f64 (+.f64 x y) 1/10) 0)
(/.f64 (*.f64 (+.f64 x y) 1/10) 1)
(/.f64 (*.f64 (+.f64 x y) 1/5) 2)
(/.f64 (*.f64 (+.f64 x y) 2/5) 4)
(/.f64 (*.f64 (+.f64 x y) 4/5) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 4/5)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5)))) 64)
Outputs
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 x)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 y)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 0 (*.f64 (+.f64 x y) 1/10))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) 1/20) (*.f64 (+.f64 x y) 1/20))
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(-.f64 (*.f64 (+.f64 x y) 1/10) 0)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 1/10) 1)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 1/5) 2)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 2/5) 4)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 4/5) 8)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 4/5)) 16)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) 32)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 4/5)))) 64)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
(*.f64 1/10 (+.f64 y x))

localize8.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
0.3b
(*.f64 1/10 y)
0.3b
(*.f64 1/10 x)
Compiler

Compiled 18 to 12 computations (33.3% saved)

series1.0ms (0%)

Counts
1 → 6
Calls

6 calls:

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

rewrite235.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
1868×bool.json-1
1868×bool.json-2
1220×rational.json-simplify-35
1196×rational.json-1
1196×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
18013
221713
346613
496413
5212313
6448413
7743213
Stop Event
node limit
Counts
1 → 28
Calls
Call 1
Inputs
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/10 (+.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/10 (+.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/10 (+.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 1/10 (+.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y x) 1/20))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/20) (*.f64 x 1/20)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y x) 1/5) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y x) 1/10)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 (+.f64 y x) 1/5) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y x) 2/5) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/5 (/.f64 (+.f64 y x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/5 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y x)) 1/20)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y x) 1/5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y 1/5) (*.f64 x 1/5)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y x) 1/20) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/20 (*.f64 2 (+.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/20 (+.f64 (+.f64 x x) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y x) 2/5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y x) 2) 1/5)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (+.f64 y x) 1/5) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/10 (+.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) 1/5) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) 2/5) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y x) 2/5)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/10 (+.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/10 (+.f64 y x)) (*.f64 1/10 (+.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/10 (+.f64 y x)) (*.f64 1/10 (+.f64 y x)))))))

simplify670.0ms (8.4%)

Algorithm
egg-herbie
Rules
5664×rational.json-simplify-51
3374×rational.json-simplify-35
2042×rational.json-simplify-49
1606×rational.json-simplify-1
1480×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
071406
1140406
2275406
3611406
41814406
53236406
63361406
73435406
83495406
93548406
103601406
114224406
124289406
134353406
144407406
154460406
164513406
174566406
184619406
194672406
205947406
216026406
226096406
236163406
246229406
256295406
266602406
276602406
286668406
296734406
306800406
316866406
326932406
336998406
347064406
Stop Event
node limit
Counts
34 → 31
Calls
Call 1
Inputs
(*.f64 1/10 x)
(*.f64 1/10 y)
(*.f64 1/10 y)
(*.f64 1/10 y)
(*.f64 1/10 x)
(*.f64 1/10 x)
(-.f64 (*.f64 1/10 (+.f64 y x)) 0)
(*.f64 1/10 (+.f64 y x))
(*.f64 (*.f64 1/10 (+.f64 y x)) 1)
(*.f64 1 (*.f64 1/10 (+.f64 y x)))
(*.f64 2 (*.f64 (+.f64 y x) 1/20))
(*.f64 2 (+.f64 (*.f64 y 1/20) (*.f64 x 1/20)))
(*.f64 (*.f64 (+.f64 y x) 1/5) 1/2)
(*.f64 (+.f64 y x) 1/10)
(*.f64 4 (/.f64 (*.f64 (+.f64 y x) 1/5) 8))
(*.f64 (*.f64 (+.f64 y x) 2/5) 1/4)
(*.f64 1/5 (/.f64 (+.f64 y x) 2))
(*.f64 1/5 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))
(*.f64 (*.f64 2 (+.f64 y x)) 1/20)
(*.f64 1/2 (*.f64 (+.f64 y x) 1/5))
(*.f64 1/2 (+.f64 (*.f64 y 1/5) (*.f64 x 1/5)))
(*.f64 (*.f64 (+.f64 y x) 1/20) 2)
(*.f64 1/20 (*.f64 2 (+.f64 y x)))
(*.f64 1/20 (+.f64 (+.f64 x x) (+.f64 y y)))
(*.f64 1/4 (*.f64 (+.f64 y x) 2/5))
(*.f64 (/.f64 (+.f64 y x) 2) 1/5)
(*.f64 (/.f64 (*.f64 (+.f64 y x) 1/5) 8) 4)
(/.f64 (*.f64 1/10 (+.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 y x) 1/5) 2)
(/.f64 (*.f64 (+.f64 y x) 2/5) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 y x) 2/5)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))))) 64)
Outputs
(*.f64 1/10 x)
(*.f64 1/10 y)
(*.f64 1/10 y)
(*.f64 1/10 y)
(*.f64 1/10 x)
(*.f64 1/10 x)
(-.f64 (*.f64 1/10 (+.f64 y x)) 0)
(*.f64 1/10 (+.f64 x y))
(*.f64 1/10 (+.f64 y x))
(*.f64 1/10 (+.f64 x y))
(*.f64 (*.f64 1/10 (+.f64 y x)) 1)
(*.f64 1/10 (+.f64 x y))
(*.f64 1 (*.f64 1/10 (+.f64 y x)))
(*.f64 1/10 (+.f64 x y))
(*.f64 2 (*.f64 (+.f64 y x) 1/20))
(*.f64 1/10 (+.f64 x y))
(*.f64 2 (+.f64 (*.f64 y 1/20) (*.f64 x 1/20)))
(*.f64 1/10 (+.f64 x y))
(*.f64 (*.f64 (+.f64 y x) 1/5) 1/2)
(*.f64 1/10 (+.f64 x y))
(*.f64 (+.f64 y x) 1/10)
(*.f64 1/10 (+.f64 x y))
(*.f64 4 (/.f64 (*.f64 (+.f64 y x) 1/5) 8))
(*.f64 1/10 (+.f64 x y))
(*.f64 (*.f64 (+.f64 y x) 2/5) 1/4)
(*.f64 1/10 (+.f64 x y))
(*.f64 1/5 (/.f64 (+.f64 y x) 2))
(*.f64 1/10 (+.f64 x y))
(*.f64 1/5 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))
(*.f64 1/10 (+.f64 x y))
(*.f64 (*.f64 2 (+.f64 y x)) 1/20)
(*.f64 1/10 (+.f64 x y))
(*.f64 1/2 (*.f64 (+.f64 y x) 1/5))
(*.f64 1/10 (+.f64 x y))
(*.f64 1/2 (+.f64 (*.f64 y 1/5) (*.f64 x 1/5)))
(*.f64 1/10 (+.f64 x y))
(*.f64 (*.f64 (+.f64 y x) 1/20) 2)
(*.f64 1/10 (+.f64 x y))
(*.f64 1/20 (*.f64 2 (+.f64 y x)))
(*.f64 1/10 (+.f64 x y))
(*.f64 1/20 (+.f64 (+.f64 x x) (+.f64 y y)))
(*.f64 1/10 (+.f64 x y))
(*.f64 1/4 (*.f64 (+.f64 y x) 2/5))
(*.f64 1/10 (+.f64 x y))
(*.f64 (/.f64 (+.f64 y x) 2) 1/5)
(*.f64 1/10 (+.f64 x y))
(*.f64 (/.f64 (*.f64 (+.f64 y x) 1/5) 8) 4)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 1/10 (+.f64 y x)) 1)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) 1/5) 2)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) 2/5) 4)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 (+.f64 y x) 2/5)) 8)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))) 16)
(*.f64 1/10 (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) 32)
(*.f64 1/10 (+.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) 2/5))))) 64)
(*.f64 1/10 (+.f64 x y))

eval19.0ms (0.2%)

Compiler

Compiled 842 to 622 computations (26.1% saved)

prune13.0ms (0.2%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New98098
Fresh000
Picked011
Done044
Total985103
Error
0b
Counts
103 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (+.f64 x y) 10)
0.3b
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
0.3b
(*.f64 (+.f64 x y) 1/10)
29.3b
(*.f64 1/10 y)
34.1b
(*.f64 1/10 x)
Compiler

Compiled 33 to 25 computations (24.2% saved)

regimes19.0ms (0.2%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 1/10 x)
(*.f64 1/10 y)
(*.f64 (+.f64 x y) 1/10)
(/.f64 (+.f64 x y) 10)
(+.f64 (*.f64 1/10 y) (*.f64 1/10 x))
Outputs
(/.f64 (+.f64 x y) 10)
Calls

4 calls:

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

Compiled 43 to 28 computations (34.9% saved)

regimes11.0ms (0.1%)

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

3 calls:

4.0ms
(+.f64 x y)
3.0ms
y
3.0ms
x
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(+.f64 x y)
Compiler

Compiled 24 to 16 computations (33.3% saved)

regimes27.0ms (0.3%)

Accuracy

Total -51.9b remaining (-524.1%)

Threshold costs -51.9b (-524.1%)

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

2 calls:

14.0ms
x
13.0ms
y
Results
ErrorSegmentsBranch
10.2b4x
9.9b4y
Compiler

Compiled 14 to 10 computations (28.6% saved)

bsearch40.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1.556634340711798e-51
2.299152554230941e-43
16.0ms
5.7523289151211725e-192
7.0921424088911356e-180
11.0ms
1.077161535714947e-230
1.2472076250641831e-229
Results
35.0ms400×body256valid
Compiler

Compiled 312 to 259 computations (17% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02388
Stop Event
done
saturated
Calls
Call 1
Inputs
(/.f64 (+.f64 x y) 10)
(*.f64 (+.f64 x y) 1/10)
(if (<=.f64 y 6664173656566515/54624374234151766213262145869588543874209860176411919649966143993970993052202041929903572589539772749766081827581405105732721063150545838738336612780694159737611530891378807262929537318189580490579681412185183043434010607923007170897214483464192) (*.f64 1/10 x) (if (<=.f64 y 7448434626215959/1284212866588958375791257295625031412487875928423626430541572486100764686107685747586344369208395617975337638880902885183842634826705030240021439152991181848133599529084092919480386659639727225896311829037056) (*.f64 1/10 y) (if (<=.f64 y 6829486688100709/100433627766186892221372630771322662657637687111424552206336) (*.f64 1/10 x) (*.f64 1/10 y))))
(*.f64 1/10 x)
Outputs
(/.f64 (+.f64 x y) 10)
(*.f64 (+.f64 x y) 1/10)
(if (<=.f64 y 6664173656566515/54624374234151766213262145869588543874209860176411919649966143993970993052202041929903572589539772749766081827581405105732721063150545838738336612780694159737611530891378807262929537318189580490579681412185183043434010607923007170897214483464192) (*.f64 1/10 x) (if (<=.f64 y 7448434626215959/1284212866588958375791257295625031412487875928423626430541572486100764686107685747586344369208395617975337638880902885183842634826705030240021439152991181848133599529084092919480386659639727225896311829037056) (*.f64 1/10 y) (if (<=.f64 y 6829486688100709/100433627766186892221372630771322662657637687111424552206336) (*.f64 1/10 x) (*.f64 1/10 y))))
(*.f64 1/10 x)
Compiler

Compiled 45 to 33 computations (26.7% saved)

soundness0.0ms (0%)

end28.0ms (0.4%)

Remove

(sort x y)

Compiler

Compiled 53 to 36 computations (32.1% saved)

Profiling

Loading profile data...