Details

Time bar (total: 23.4s)

analyze331.0ms (1.4%)

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
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
25.6%25%72.5%0.1%2.3%0%0%9
38.6%37.4%59.7%0.1%2.7%0%0%10
46.4%44.5%51.3%0.1%4.1%0%0%11
53.7%50.3%43.4%0.1%6.1%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample1.7s (7.1%)

Results
1.6s8254×body256valid
60.0ms620×body256infinite
0.0msbody1024valid
0.0msbody512valid
Bogosity

preprocess11.2s (47.8%)

Algorithm
egg-herbie
Rules
34804×rational.json-simplify-41
3770×rational.json-simplify-1
1944×rational.json-simplify-35
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021100
141100
264100
393100
4119100
5187100
6383100
7955100
81199100
91207100
101215100
111223100
121231100
131239100
141247100
151255100
161263100
171271100
181279100
191287100
201295100
211303100
221311100
231319100
241327100
251335100
261343100
271351100
281359100
291367100
301375100
311383100
321391100
331399100
341407100
351415100
361423100
371431100
381439100
391447100
401455100
411463100
421471100
434209100
444217100
454225100
464233100
474241100
484249100
494257100
504265100
514273100
524281100
534289100
545609100
555617100
565625100
575633100
585641100
595649100
605657100
615665100
625673100
635681100
645689100
655697100
665705100
675713100
685721100
695729100
705737100
715745100
725753100
735761100
745769100
755777100
765785100
775793100
785801100
795809100
805817100
815825100
825833100
835841100
845849100
855857100
865865100
875873100
885881100
895889100
905897100
915905100
925913100
935921100
945929100
955937100
965945100
975953100
985961100
995969100
1005977100
1015985100
1025993100
1036001100
1046009100
1056017100
1066025100
1076033100
1086041100
1096049100
1106057100
1116065100
1126073100
1136081100
1146089100
1156097100
1166105100
1176113100
1186121100
1196129100
1206137100
1216145100
1226153100
1236161100
1246169100
1256177100
1266185100
1276193100
1286201100
1296209100
1306217100
1316225100
1326233100
1336241100
1346249100
1356257100
1366265100
1376273100
1386281100
1396289100
1406297100
1416305100
1426313100
1436321100
1446329100
1456337100
1466345100
1476353100
1486361100
1496369100
1506377100
1516385100
1526393100
1536401100
1546409100
1556417100
1566425100
1576433100
1586441100
1596449100
1606457100
1616465100
1626473100
1636481100
1646489100
1656497100
1666505100
1676513100
1686521100
1696529100
1706537100
1716545100
1726553100
1736561100
1746569100
1756577100
1766585100
1776593100
1786601100
1796609100
1806617100
1816625100
1826633100
1836641100
1846649100
1856657100
1866665100
1876673100
1886681100
1896689100
1906697100
1916705100
1926713100
1936721100
1946729100
1956737100
1966745100
1976753100
1986761100
1996769100
2006777100
2016785100
2026793100
2036801100
2046809100
2056817100
2066825100
2076833100
2086841100
2096849100
2106857100
2116865100
2126873100
2136881100
2146889100
2156897100
2166905100
2176913100
2186921100
2196929100
2206937100
2216945100
2226953100
2236961100
2246969100
2256977100
2266985100
2276993100
2287001100
2297009100
2307017100
2317025100
2327033100
2337041100
2347049100
2357057100
2367065100
2377073100
2387081100
2397089100
2407097100
2417105100
2427113100
2437121100
2447129100
2457137100
2467145100
2477153100
2487161100
2497169100
2507177100
2517185100
2527193100
2537201100
2547209100
2557217100
2567225100
2577233100
2587241100
2597249100
2607257100
2617265100
2627273100
2637281100
2647289100
2657297100
2667305100
2677313100
2687321100
2697329100
2707337100
2717345100
2727353100
2737361100
2747369100
2757377100
2767385100
2777393100
2787401100
2797409100
2807417100
2817425100
2827433100
2837441100
2847449100
2857457100
2867465100
2877473100
2887481100
2897489100
2907497100
2917505100
2927513100
2937521100
2947529100
2957537100
2967545100
2977553100
2987561100
2997569100
3007577100
3017585100
3027593100
3037601100
3047609100
3057617100
3067625100
3077633100
3087641100
3097649100
3107657100
3117665100
3127673100
3137681100
3147689100
3157697100
3167705100
3177713100
3187721100
3197729100
3207737100
3217745100
3227753100
3237761100
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z)
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y)
Outputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (*.f64 x y) (+.f64 (/.f64 x 2) z))
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z)
(+.f64 z (+.f64 (*.f64 x y) (/.f64 y 2)))
(+.f64 (*.f64 x y) (+.f64 (/.f64 y 2) z))
(+.f64 (*.f64 x y) (+.f64 z (/.f64 y 2)))
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x)
(+.f64 x (+.f64 (/.f64 z 2) (*.f64 y z)))
(+.f64 (*.f64 y z) (+.f64 x (/.f64 z 2)))
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y)
(+.f64 y (+.f64 (/.f64 x 2) (*.f64 x z)))
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x z) y))
(+.f64 (/.f64 x 2) (+.f64 y (*.f64 x z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify1.5s (6.2%)

Algorithm
egg-herbie
Rules
9732×rational.json-simplify-41
5888×rational.json-simplify-1
388×rational.json-simplify-35
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11725
22525
33525
44525
56925
613325
733025
841425
941825
1042225
1142625
1243025
13132025
14170725
15171125
16171525
17171925
18172325
19172725
20173125
21173525
22173925
23174325
24174725
25175125
26175525
27175925
28176325
29176725
30177125
31177525
32177925
33178325
34178725
35179125
36179525
37179925
38180325
39180725
40181125
41181525
42181925
43182325
44182725
45183125
46183525
47183925
48184325
49184725
50185125
51185525
52185925
53186325
54186725
55187125
56187525
57187925
58188325
59188725
60189125
61189525
62189925
63190325
64190725
65191125
66191525
67191925
68192325
69192725
70193125
71193525
72193925
73194325
74194725
75195125
76195525
77195925
78196325
79196725
80197125
81197525
82197925
83198325
84198725
85199125
86199525
87199925
88200325
89200725
90201125
91201525
92201925
93202325
94202725
95203125
96203525
97203925
98204325
99204725
100205125
101205525
102205925
103206325
104206725
105207125
106207525
107207925
108208325
109208725
110209125
111209525
112209925
113210325
114210725
115211125
116211525
117211925
118212325
119212725
120213125
121213525
122213925
123214325
124214725
125215125
126215525
127215925
128216325
129216725
130217125
131217525
132217925
133218325
134218725
135219125
136219525
137219925
138220325
139220725
140221125
141221525
142221925
143222325
144222725
145223125
146223525
147223925
148224325
149224725
150225125
151225525
152225925
153226325
154226725
155227125
156227525
157227925
158228325
159228725
160229125
161229525
162229925
163230325
164748225
165748625
166749025
167749425
168749825
169750225
170750625
171751025
172751425
173751825
174752225
175752625
176753025
177753425
178753825
179754225
180754625
181755025
182755425
183755825
184756225
185756625
186757025
187757425
188757825
189758225
190758625
191759025
192759425
193759825
194760225
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
Outputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (*.f64 x y) (+.f64 (/.f64 x 2) z))

eval1.0ms (0%)

Compiler

Compiled 39 to 21 computations (46.2% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New314
Fresh101
Picked000
Done000
Total415
Error
0.0b
Counts
5 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize9.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 11 computations (59.3% saved)

series3.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

rewrite91.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1754×bool.json-1
1754×bool.json-2
1714×rational.json-1
1068×bool.json-3
1028×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01038
110438
229432
362732
4136432
5326132
6675032
Stop Event
node limit
Counts
2 → 36
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 x (+.f64 y 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 x (+.f64 y 1/2))) (+.f64 z (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 x (+.f64 y 1/2))) (+.f64 z (*.f64 x (+.f64 y 1/2))))))))

simplify1.0s (4.4%)

Algorithm
egg-herbie
Rules
7634×rational.json-simplify-41
2832×rational.json-simplify-35
1942×rational.json-simplify-2
1934×rational.json-simplify-51
1792×rational.json-simplify-49
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0851602
11621586
24181586
39481570
418151554
523211554
624151554
724951554
825601554
926161554
1038311554
1138981554
1239551554
1340081554
1440561554
1541041554
1647521554
1748041554
1848741554
1949441554
2050021554
2150671554
2251221554
2351771554
2452261554
2552751554
2652751554
2753241554
2853731554
2954221554
3054711554
3155201554
3255691554
3356181554
3467991554
Stop Event
node limit
Counts
108 → 60
Calls
Call 1
Inputs
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(*.f64 (+.f64 1/2 y) x)
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 (*.f64 1/2 x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
z
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
z
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(-.f64 (+.f64 (*.f64 x y) z) 0)
(*.f64 (+.f64 (*.f64 x y) z) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))
(*.f64 1 (+.f64 (*.f64 x y) z))
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)
(/.f64 (+.f64 (*.f64 x y) z) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32)
(-.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0)
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2))
(*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)
(*.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2))))
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))
(*.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2)
(*.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))))
(*.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2)
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)
(*.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2)
(/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)
(/.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32)
Outputs
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 y 1/2))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2)))
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))
(*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x))
(*.f64 (-.f64 -1/2 y) (neg.f64 x))
(*.f64 x (-.f64 y -1/2))
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2))))
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))))
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x)))
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x)))
(+.f64 z (*.f64 x (-.f64 y -1/2)))
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2))))
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))))
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x)))
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x)))
(+.f64 z (*.f64 x (-.f64 y -1/2)))
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z)
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2))))
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))))
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x)))
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x)))
(+.f64 z (*.f64 x (-.f64 y -1/2)))
(+.f64 (*.f64 1/2 x) z)
(+.f64 z (*.f64 x 1/2))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 y 1/2))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
z
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
z
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(-.f64 (+.f64 (*.f64 x y) z) 0)
(+.f64 z (*.f64 y x))
(*.f64 (+.f64 (*.f64 x y) z) 1)
(+.f64 z (*.f64 y x))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))
(+.f64 z (*.f64 y x))
(*.f64 1 (+.f64 (*.f64 x y) z))
(+.f64 z (*.f64 y x))
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)
(+.f64 z (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)
(+.f64 z (*.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)
(+.f64 z (*.f64 y x))
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)
(+.f64 z (*.f64 y x))
(/.f64 (+.f64 (*.f64 x y) z) 1)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16)
(+.f64 z (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32)
(+.f64 z (*.f64 y x))
(-.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2))))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(*.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32)
(+.f64 z (*.f64 x (+.f64 y 1/2)))

eval12.0ms (0%)

Compiler

Compiled 641 to 395 computations (38.4% saved)

prune10.0ms (0%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New56460
Fresh000
Picked011
Done000
Total56561
Error
0.0b
Counts
61 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
30.4b
(+.f64 (/.f64 x 2) (*.f64 y x))
15.9b
(+.f64 (/.f64 x 2) z)
0.0b
(+.f64 z (*.f64 (+.f64 1/2 y) x))
30.4b
(*.f64 (+.f64 1/2 y) x)
Compiler

Compiled 48 to 34 computations (29.2% saved)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite92.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1598×bool.json-1
1598×bool.json-2
1560×rational.json-1
1560×rational.json-2
1560×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219313
340113
481913
5176413
6383713
7638213
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 1/2 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 1/2 y) x) (*.f64 (+.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 1/2 y) x) (*.f64 (+.f64 1/2 y) x))))))

simplify2.5s (10.7%)

Algorithm
egg-herbie
Rules
5270×rational.json-simplify-35
2808×rational.json-simplify-2
1794×rational.json-simplify-53
1034×rational.json-simplify-1
726×rational.json-simplify-41
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
039401
191281
2183281
3418281
41324281
52739281
63757281
73881281
83967281
94049281
104131281
114213281
124709281
134933281
145073281
155155281
165237281
175237281
185237281
195319281
205545281
215825281
225960281
236067281
246153281
256235281
266317281
276399281
286481281
296563281
306645281
317019281
327101281
337101281
347101281
357183281
367265281
377347281
387429281
397511281
407593281
417675281
427757281
437839281
447921281
Stop Event
node limit
Counts
23 → 17
Calls
Call 1
Inputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1/2 y) x) 0)
(+.f64 0 (*.f64 (+.f64 1/2 y) x))
(+.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)))
(-.f64 (*.f64 (+.f64 1/2 y) x) 0)
(/.f64 (*.f64 (+.f64 1/2 y) x) 1)
(/.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64)
Outputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 (+.f64 1/2 y) x) 0)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 0 (*.f64 (+.f64 1/2 y) x))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(-.f64 (*.f64 (+.f64 1/2 y) x) 0)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (+.f64 1/2 y) x) 1)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))

localize9.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 13 computations (40.9% saved)

series1.0ms (0%)

Counts
1 → 18
Calls

9 calls:

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

rewrite103.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1954×bool.json-1
1954×bool.json-2
1320×rational.json-simplify-35
1210×rational.json-1
1210×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
18919
223219
347819
4100219
5221119
6463719
7756519
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 z (*.f64 (+.f64 1/2 y) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 (+.f64 1/2 y) x)) (+.f64 z (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 (+.f64 1/2 y) x)) (+.f64 z (*.f64 (+.f64 1/2 y) x)))))))

simplify1.0s (4.3%)

Algorithm
egg-herbie
Rules
5918×rational.json-simplify-51
1948×rational.json-simplify-35
1762×rational.json-simplify-1
1724×rational.json-simplify-2
1220×rational.json-simplify-41
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
062868
1122868
2301694
3712694
41170694
52860694
63223694
73261694
83292694
93323694
103353694
114067694
124118694
134157694
144187694
154215694
164243694
174271694
184299694
195125694
205493694
215527694
225559694
235590694
245621694
255652694
265683694
275714694
285745694
295776694
305807694
315838694
325869694
335900694
345931694
355962694
365993694
376024694
386024694
396024694
Stop Event
node limit
Counts
40 → 31
Calls
Call 1
Inputs
(*.f64 (+.f64 1/2 y) x)
z
z
(+.f64 (*.f64 1/2 x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
z
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(-.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z)))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x))))
(*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)
(*.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x)))
(*.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))))
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2)))
(*.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x))))
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4)
(*.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))
(*.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)
(/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64)
Outputs
(*.f64 (+.f64 1/2 y) x)
z
z
(+.f64 (*.f64 1/2 x) z)
(+.f64 z (*.f64 1/2 x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
z
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(-.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z)))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x))))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x)))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2)))
(*.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x))))
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2)))
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(*.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64)
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x)))
(+.f64 (*.f64 (+.f64 1/2 y) x) z)

localize6.0ms (0%)

Compiler

Compiled 14 to 9 computations (35.7% saved)

localize7.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 10 computations (47.4% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite83.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1406×bool.json-1
1406×bool.json-2
1348×rational.json-1
1348×rational.json-2
1348×rational.json-4
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0819
18319
223913
350013
4102913
5228413
6502313
Stop Event
node limit
Counts
1 → 42
Calls
Call 1
Inputs
(+.f64 (/.f64 x 2) (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 y 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 y 1/2)) (*.f64 x (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 y 1/2)) (*.f64 x (+.f64 y 1/2)))))))

simplify462.0ms (2%)

Algorithm
egg-herbie
Rules
2920×rational.json-simplify-2
1992×rational.json-simplify-35
1788×rational.json-simplify-1
1076×rational.json-simplify-51
990×rational.json-simplify-43
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01081032
12231004
25211004
31945970
43918954
54835954
65410954
75596954
85810954
95944954
106754954
117252954
127475954
137588954
147753954
157900954
167921954
177921954
187921954
Stop Event
node limit
Counts
66 → 61
Calls
Call 1
Inputs
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 (+.f64 1/2 y) x)
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(-.f64 (*.f64 x (+.f64 y 1/2)) 0)
(*.f64 x (+.f64 y 1/2))
(*.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4)))
(*.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2)))
(*.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y)))
(*.f64 (*.f64 x (+.f64 y 1/2)) 1)
(*.f64 1 (*.f64 x (+.f64 y 1/2)))
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2)))
(*.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4))
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2)
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2)))
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4)))
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8)))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2))))
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4)
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2)))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4))
(*.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x)))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2)))
(*.f64 (+.f64 y 1/2) x)
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2)))
(*.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2))
(*.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2)
(*.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2))
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x))
(*.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4))
(*.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)
(*.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x))
(/.f64 (*.f64 x (+.f64 y 1/2)) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64)
Outputs
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/2 y) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1))
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))
(*.f64 x (neg.f64 (-.f64 -1/2 y)))
(*.f64 x (-.f64 y -1/2))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1))
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))
(*.f64 x (neg.f64 (-.f64 -1/2 y)))
(*.f64 x (-.f64 y -1/2))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1))
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))
(*.f64 x (neg.f64 (-.f64 -1/2 y)))
(*.f64 x (-.f64 y -1/2))
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2)))
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1))
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))
(*.f64 x (neg.f64 (-.f64 -1/2 y)))
(*.f64 x (-.f64 y -1/2))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(*.f64 y x)
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 y x))
(*.f64 x (+.f64 1/2 y))
(-.f64 (*.f64 x (+.f64 y 1/2)) 0)
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 y 1/2))
(*.f64 x (+.f64 1/2 y))
(*.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4)))
(*.f64 2 (+.f64 (*.f64 y (*.f64 1/2 x)) (*.f64 x 1/4)))
(*.f64 2 (*.f64 x (+.f64 (*.f64 1/2 y) 1/4)))
(*.f64 x (*.f64 (+.f64 (*.f64 1/2 y) 1/4) 2))
(*.f64 x (*.f64 2 (+.f64 (*.f64 1/2 y) 1/4)))
(*.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2))))
(*.f64 2 (+.f64 (*.f64 y (*.f64 1/2 x)) (*.f64 x 1/4)))
(*.f64 2 (*.f64 x (+.f64 (*.f64 1/2 y) 1/4)))
(*.f64 x (*.f64 (+.f64 (*.f64 1/2 y) 1/4) 2))
(*.f64 x (*.f64 2 (+.f64 (*.f64 1/2 y) 1/4)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x (+.f64 y 1/2)) 1)
(*.f64 x (+.f64 1/2 y))
(*.f64 1 (*.f64 x (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 1/2 y) 1/4))
(*.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4))
(*.f64 x (+.f64 1/2 y))
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2)
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4)))
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 y 1/4))))
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8)))
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 (+.f64 y y) 1/8))))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2))))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4)
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4))
(*.f64 x (+.f64 1/2 y))
(*.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x)))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4)))))
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4)))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4)))))
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4)))
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 y 1/2) x)
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2)
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4)))))
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4)))
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x))
(*.f64 x (+.f64 1/2 y))
(*.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4))
(*.f64 x (+.f64 1/2 y))
(*.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(*.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 (*.f64 1/2 y) 1/4))
(/.f64 (*.f64 x (+.f64 y 1/2)) 1)
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2)
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8)
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16)
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32)
(*.f64 x (+.f64 1/2 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64)
(*.f64 x (+.f64 1/2 y))

eval26.0ms (0.1%)

Compiler

Compiled 1192 to 829 computations (30.5% saved)

prune21.0ms (0.1%)

Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New1224126
Fresh000
Picked011
Done044
Total1229131
Error
0.0b
Counts
131 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
30.4b
(+.f64 (/.f64 x 2) (*.f64 y x))
15.9b
(+.f64 (/.f64 x 2) z)
0.0b
(+.f64 z (*.f64 (+.f64 1/2 y) x))
17.8b
(+.f64 z (*.f64 y x))
30.4b
(*.f64 (+.f64 1/2 y) x)
47.7b
(*.f64 y x)
45.3b
(*.f64 1/2 x)
33.3b
z
Compiler

Compiled 72 to 51 computations (29.2% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 6 computations (25% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize9.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 z (*.f64 y x))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(+.f64 z (*.f64 y x))
0.0ms
z
@0
(+.f64 z (*.f64 y x))
0.0ms
z
@inf
(+.f64 z (*.f64 y x))
0.0ms
y
@inf
(+.f64 z (*.f64 y x))
0.0ms
x
@-inf
(+.f64 z (*.f64 y x))

rewrite95.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1618×bool.json-1
1618×bool.json-2
1586×rational.json-1
1586×rational.json-2
1586×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219613
341713
486113
5188513
6389913
7638113
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 z (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 y x)) (+.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 y x)) (+.f64 z (*.f64 y x)))))))

simplify995.0ms (4.2%)

Algorithm
egg-herbie
Rules
5914×rational.json-simplify-51
1978×rational.json-simplify-35
1696×rational.json-simplify-2
1278×rational.json-simplify-1
1128×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054650
1111650
2281650
3690650
41105650
52508650
63350650
73408650
83438650
93464650
103490650
113516650
123565650
133591650
143617650
153643650
163669650
173695650
183721650
194550650
204922650
214954650
224984650
235013650
245042650
255071650
265100650
275129650
285158650
295187650
305216650
315245650
325274650
335303650
345332650
355361650
365390650
375419650
385448650
395477650
405477650
Stop Event
node limit
Counts
56 → 23
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(-.f64 (+.f64 z (*.f64 y x)) 0)
(*.f64 (+.f64 z (*.f64 y x)) 1)
(*.f64 1 (+.f64 z (*.f64 y x)))
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2))))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z)))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))
(*.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4)
(/.f64 (+.f64 z (*.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(-.f64 (+.f64 z (*.f64 y x)) 0)
(+.f64 (*.f64 y x) z)
(*.f64 (+.f64 z (*.f64 y x)) 1)
(+.f64 (*.f64 y x) z)
(*.f64 1 (+.f64 z (*.f64 y x)))
(+.f64 (*.f64 y x) z)
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))
(+.f64 (*.f64 y x) z)
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2))))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)
(+.f64 (*.f64 y x) z)
(*.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)
(+.f64 (*.f64 y x) z)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))
(+.f64 (*.f64 y x) z)
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z)))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)
(+.f64 (*.f64 y x) z)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))
(+.f64 (*.f64 y x) z)
(*.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4)
(+.f64 (*.f64 y x) z)
(/.f64 (+.f64 z (*.f64 y x)) 1)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)
(+.f64 (*.f64 y x) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)
(+.f64 (*.f64 y x) z)

eval3.0ms (0%)

Compiler

Compiled 210 to 101 computations (51.9% saved)

prune6.0ms (0%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New23023
Fresh011
Picked011
Done077
Total23932
Error
0.0b
Counts
32 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
30.4b
(+.f64 (/.f64 x 2) (*.f64 y x))
15.9b
(+.f64 (/.f64 x 2) z)
0.0b
(+.f64 z (*.f64 (+.f64 1/2 y) x))
17.8b
(+.f64 z (*.f64 y x))
30.4b
(*.f64 (+.f64 1/2 y) x)
47.7b
(*.f64 y x)
45.3b
(*.f64 1/2 x)
33.3b
z
Compiler

Compiled 72 to 51 computations (29.2% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune4.0ms (0%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done088
Total099
Error
0.0b
Counts
9 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
30.4b
(+.f64 (/.f64 x 2) (*.f64 y x))
15.9b
(+.f64 (/.f64 x 2) z)
0.0b
(+.f64 z (*.f64 (+.f64 1/2 y) x))
17.8b
(+.f64 z (*.f64 y x))
30.4b
(*.f64 (+.f64 1/2 y) x)
47.7b
(*.f64 y x)
45.3b
(*.f64 1/2 x)
33.3b
z
Compiler

Compiled 72 to 51 computations (29.2% saved)

regimes34.0ms (0.1%)

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

5 calls:

7.0ms
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
6.0ms
(+.f64 (/.f64 x 2) (*.f64 y x))
6.0ms
y
6.0ms
z
6.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
0.0b1(+.f64 (/.f64 x 2) (*.f64 y x))
Compiler

Compiled 91 to 53 computations (41.8% saved)

regimes35.0ms (0.1%)

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

5 calls:

9.0ms
y
7.0ms
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
6.0ms
(+.f64 (/.f64 x 2) (*.f64 y x))
6.0ms
z
6.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
0.0b1(+.f64 (/.f64 x 2) (*.f64 y x))
Compiler

Compiled 82 to 48 computations (41.5% saved)

regimes24.0ms (0.1%)

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

4 calls:

6.0ms
(+.f64 (/.f64 x 2) (*.f64 y x))
6.0ms
y
5.0ms
z
5.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 (/.f64 x 2) (*.f64 y x))
Compiler

Compiled 61 to 36 computations (41% saved)

regimes46.0ms (0.2%)

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

3 calls:

18.0ms
z
14.0ms
y
14.0ms
x
Results
ErrorSegmentsBranch
9.1b3x
0.5b3y
6.1b4z
Compiler

Compiled 37 to 22 computations (40.5% saved)

bsearch29.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
9.487324653161126e-15
3.539394106857276e-6
14.0ms
-1092865.246552231
-441.172219646008
Results
26.0ms272×body256valid
Compiler

Compiled 324 to 234 computations (27.8% saved)

regimes48.0ms (0.2%)

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

3 calls:

20.0ms
y
13.0ms
z
13.0ms
x
Results
ErrorSegmentsBranch
9.5b3x
13.0b5y
7.1b3z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch34.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
9.57931844028648e-66
3.6854750541450026e-53
16.0ms
-2.242523945937996e-114
-1.6345957694677014e-120
Results
30.0ms304×body256valid
Compiler

Compiled 360 to 260 computations (27.8% saved)

regimes71.0ms (0.3%)

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

3 calls:

34.0ms
y
21.0ms
x
14.0ms
z
Results
ErrorSegmentsBranch
17.5b5x
22.3b9y
13.0b3z
Compiler

Compiled 27 to 18 computations (33.3% saved)

bsearch22.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
4.2152188518785656e-42
7.189669589066486e-39
8.0ms
-2.6326155856127437e-13
-6.749407500867904e-14
Results
20.0ms208×body256valid
Compiler

Compiled 200 to 156 computations (22% saved)

regimes67.0ms (0.3%)

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

3 calls:

25.0ms
y
22.0ms
z
19.0ms
x
Results
ErrorSegmentsBranch
22.7b6x
23.5b7y
20.5b7z
Compiler

Compiled 22 to 15 computations (31.8% saved)

bsearch94.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
9.57931844028648e-66
3.6854750541450026e-53
21.0ms
1.3214887881925273e-103
1.3206492797711113e-98
11.0ms
2.051864622150385e-150
6.297852781218872e-149
15.0ms
-4.534921399528442e-195
-1.3955345191677208e-196
15.0ms
-6.935909836574777e-154
-1.0196957754558557e-162
15.0ms
-2.1635491642437608e-26
-9.327369271500091e-31
Results
78.0ms800×body256valid
Compiler

Compiled 682 to 545 computations (20.1% saved)

regimes34.0ms (0.1%)

Accuracy

Total -39.4b remaining (-172.8%)

Threshold costs -39.4b (-172.8%)

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

3 calls:

13.0ms
y
11.0ms
z
10.0ms
x
Results
ErrorSegmentsBranch
25.0b3x
28.6b5y
22.8b3z
Compiler

Compiled 19 to 14 computations (26.3% saved)

bsearch32.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
9.57931844028648e-66
3.6854750541450026e-53
13.0ms
-2.1635491642437608e-26
-9.327369271500091e-31
Results
29.0ms288×body256valid
Compiler

Compiled 234 to 193 computations (17.5% saved)

simplify7.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
065335
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(if (<=.f64 y -450) (+.f64 z (*.f64 y x)) (if (<=.f64 y 8264141345021879/2361183241434822606848) (+.f64 (/.f64 x 2) z) (+.f64 z (*.f64 y x))))
(if (<=.f64 z -8695092160762875/88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050368) (+.f64 z (*.f64 y x)) (if (<=.f64 z 2037940770576765/231584178474632390847141970017375815706539969331281128078915168015826259279872) (*.f64 (+.f64 1/2 y) x) (+.f64 z (*.f64 y x))))
(if (<=.f64 z -4951760157141521/19807040628566084398385987584) z (if (<=.f64 z 5363734393030611/766247770432944429179173513575154591809369561091801088) (*.f64 (+.f64 1/2 y) x) z))
(if (<=.f64 z -348449143727041/174224571863520493293247799005065324265472) z (if (<=.f64 z -8151758837614529/60383398797144661635864873295812302254670739526663046854019300803929986598274381633378027602842540280663494000492221518396329354078796682120982948022923136698390325231616) (*.f64 1/2 x) (if (<=.f64 z -3419088336006443/5260135901548373507240989882880128665550339802823173859498280903068732154297080822113666536277588451226982968856178217713019432250183803863127814770651880849955223671128444598191663757884322717271293251735781376) (*.f64 y x) (if (<=.f64 z 5758609657015291/230344386280611654799899571593522271174128492457058131614758685317726084130380178960334883128519211886075950624436269830308263222041308144077235977260296389382897664) (*.f64 1/2 x) (if (<=.f64 z 8150226177711805/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) (*.f64 y x) (if (<=.f64 z 970558080017423/431359146674410236714672241392314090778194310760649159697657763987456) (*.f64 1/2 x) z))))))
(if (<=.f64 z -321130730858841/178405961588244985132285746181186892047843328) z (if (<=.f64 z 5521397077432451/3450873173395281893717377931138512726225554486085193277581262111899648) (*.f64 1/2 x) z))
z
Outputs
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 z (*.f64 (+.f64 1/2 y) x))
(if (<=.f64 y -450) (+.f64 z (*.f64 y x)) (if (<=.f64 y 8264141345021879/2361183241434822606848) (+.f64 (/.f64 x 2) z) (+.f64 z (*.f64 y x))))
(if (<=.f64 z -8695092160762875/88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050368) (+.f64 z (*.f64 y x)) (if (<=.f64 z 2037940770576765/231584178474632390847141970017375815706539969331281128078915168015826259279872) (*.f64 (+.f64 1/2 y) x) (+.f64 z (*.f64 y x))))
(if (<=.f64 z -4951760157141521/19807040628566084398385987584) z (if (<=.f64 z 5363734393030611/766247770432944429179173513575154591809369561091801088) (*.f64 (+.f64 1/2 y) x) z))
(if (<=.f64 z -348449143727041/174224571863520493293247799005065324265472) z (if (<=.f64 z -8151758837614529/60383398797144661635864873295812302254670739526663046854019300803929986598274381633378027602842540280663494000492221518396329354078796682120982948022923136698390325231616) (*.f64 1/2 x) (if (<=.f64 z -3419088336006443/5260135901548373507240989882880128665550339802823173859498280903068732154297080822113666536277588451226982968856178217713019432250183803863127814770651880849955223671128444598191663757884322717271293251735781376) (*.f64 y x) (if (<=.f64 z 5758609657015291/230344386280611654799899571593522271174128492457058131614758685317726084130380178960334883128519211886075950624436269830308263222041308144077235977260296389382897664) (*.f64 1/2 x) (if (<=.f64 z 8150226177711805/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) (*.f64 y x) (if (<=.f64 z 970558080017423/431359146674410236714672241392314090778194310760649159697657763987456) (*.f64 1/2 x) z))))))
(if (<=.f64 z -321130730858841/178405961588244985132285746181186892047843328) z (if (<=.f64 z 5521397077432451/3450873173395281893717377931138512726225554486085193277581262111899648) (*.f64 1/2 x) z))
z
Compiler

Compiled 168 to 105 computations (37.5% saved)

soundness1.5s (6.4%)

Algorithm
egg-herbie
Rules
9732×rational.json-simplify-41
5888×rational.json-simplify-1
388×rational.json-simplify-35
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11725
22525
33525
44525
56925
613325
733025
841425
941825
1042225
1142625
1243025
13132025
14170725
15171125
16171525
17171925
18172325
19172725
20173125
21173525
22173925
23174325
24174725
25175125
26175525
27175925
28176325
29176725
30177125
31177525
32177925
33178325
34178725
35179125
36179525
37179925
38180325
39180725
40181125
41181525
42181925
43182325
44182725
45183125
46183525
47183925
48184325
49184725
50185125
51185525
52185925
53186325
54186725
55187125
56187525
57187925
58188325
59188725
60189125
61189525
62189925
63190325
64190725
65191125
66191525
67191925
68192325
69192725
70193125
71193525
72193925
73194325
74194725
75195125
76195525
77195925
78196325
79196725
80197125
81197525
82197925
83198325
84198725
85199125
86199525
87199925
88200325
89200725
90201125
91201525
92201925
93202325
94202725
95203125
96203525
97203925
98204325
99204725
100205125
101205525
102205925
103206325
104206725
105207125
106207525
107207925
108208325
109208725
110209125
111209525
112209925
113210325
114210725
115211125
116211525
117211925
118212325
119212725
120213125
121213525
122213925
123214325
124214725
125215125
126215525
127215925
128216325
129216725
130217125
131217525
132217925
133218325
134218725
135219125
136219525
137219925
138220325
139220725
140221125
141221525
142221925
143222325
144222725
145223125
146223525
147223925
148224325
149224725
150225125
151225525
152225925
153226325
154226725
155227125
156227525
157227925
158228325
159228725
160229125
161229525
162229925
163230325
164748225
165748625
166749025
167749425
168749825
169750225
170750625
171751025
172751425
173751825
174752225
175752625
176753025
177753425
178753825
179754225
180754625
181755025
182755425
183755825
184756225
185756625
186757025
187757425
188757825
189758225
190758625
191759025
192759425
193759825
194760225
Stop Event
node limit
Compiler

Compiled 39 to 21 computations (46.2% saved)

end66.0ms (0.3%)

Compiler

Compiled 144 to 77 computations (46.5% saved)

Profiling

Loading profile data...