Details

Time bar (total: 8.2s)

analyze3.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
75%75%25%0%0%0%0%4
87.5%87.5%12.5%0%0%0%0%5
93.8%93.7%6.2%0%0%0%0%6
96.9%96.8%3.1%0%0%0%0%7
98.4%98.4%1.6%0%0%0%0%8
99.2%99.2%0.8%0%0%0%0%9
99.6%99.6%0.4%0%0%0%0%10
99.8%99.8%0.2%0%0%0%0%11
99.9%99.9%0.1%0%0%0%0%12
Compiler

Compiled 7 to 6 computations (14.3% saved)

sample3.8s (46.3%)

Results
3.8s8256×body256valid
Bogosity

preprocess3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
087
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 x (/.f64 1 3))
Outputs
(-.f64 x (/.f64 1 3))
(-.f64 x 1/3)
Compiler

Compiled 7 to 6 computations (14.3% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
087
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 x (/.f64 1 3))
Outputs
(-.f64 x (/.f64 1 3))
(-.f64 x 1/3)

eval0.0ms (0%)

Compiler

Compiled 9 to 7 computations (22.2% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 x 1/3)
Compiler

Compiled 4 to 3 computations (25% saved)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 x 1/3)
Compiler

Compiled 6 to 4 computations (33.3% saved)

series0.0ms (0%)

Counts
1 → 3
Calls

3 calls:

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

rewrite89.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1662×rational.json-simplify-35
1394×bool.json-1
1394×bool.json-2
1350×rational.json-1
1350×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
1507
21527
33237
46427
513407
631107
758007
Stop Event
node limit
Counts
1 → 26
Calls
Call 1
Inputs
(-.f64 x 1/3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x -1/3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 x -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1/3 x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -1/3) 1/2) (*.f64 (+.f64 x -1/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x -1/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x -1/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x -2/3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x -1/3) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -1/3) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -1/3) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x -2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -1/3) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x -1/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -1/3) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x -1/3) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x -1/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x -2/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1/3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x -1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x -1/3) (+.f64 x -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x -1/3) (+.f64 x -1/3))))))

simplify835.0ms (10.2%)

Algorithm
egg-herbie
Rules
5436×rational.json-simplify-1
4450×rational.json-simplify-41
1658×rational.json-simplify-35
1388×rational.json-simplify-2
1328×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056203
1108203
2336203
3946203
41662203
52019203
62068203
72106203
82137203
92168203
102950203
112984203
123014203
133044203
143071203
153098203
163545203
173574203
183603203
193630203
206708203
216749203
226833203
237105203
247212203
257240203
267267203
277294203
287321203
297348203
307375203
317402203
327429203
337456203
347483203
357510203
Stop Event
node limit
Counts
29 → 28
Calls
Call 1
Inputs
-1/3
x
x
(+.f64 x -1/3)
(+.f64 (+.f64 x -1/3) 0)
(+.f64 0 (+.f64 x -1/3))
(+.f64 -1/3 x)
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) 1/3))
(+.f64 (*.f64 (+.f64 x -1/3) 1/2) (*.f64 (+.f64 x -1/3) 1/2))
(*.f64 (+.f64 x -1/3) 1)
(*.f64 1 (+.f64 x -1/3))
(*.f64 2 (*.f64 (+.f64 x -1/3) 1/2))
(*.f64 (+.f64 x (+.f64 x -2/3)) 1/2)
(*.f64 4 (*.f64 (+.f64 x -1/3) 1/4))
(*.f64 (*.f64 (+.f64 x -1/3) 4) 1/4)
(*.f64 (*.f64 (+.f64 x -1/3) 8) 1/8)
(*.f64 1/2 (+.f64 x (+.f64 x -2/3)))
(*.f64 (*.f64 (+.f64 x -1/3) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x -1/3) 4))
(*.f64 (*.f64 (+.f64 x -1/3) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 x -1/3) 8))
(/.f64 (+.f64 x -1/3) 1)
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
(/.f64 (*.f64 (+.f64 x -1/3) 4) 4)
(/.f64 (*.f64 (+.f64 x -1/3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))))) 128)
Outputs
-1/3
x
x
(+.f64 x -1/3)
(+.f64 -1/3 x)
(+.f64 (+.f64 x -1/3) 0)
(+.f64 -1/3 x)
(+.f64 0 (+.f64 x -1/3))
(+.f64 -1/3 x)
(+.f64 -1/3 x)
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) 1/3))
(+.f64 (*.f64 (+.f64 x -1/3) 1/2) (*.f64 (+.f64 x -1/3) 1/2))
(+.f64 -1/3 x)
(*.f64 (+.f64 x -1/3) 1)
(+.f64 -1/3 x)
(*.f64 1 (+.f64 x -1/3))
(+.f64 -1/3 x)
(*.f64 2 (*.f64 (+.f64 x -1/3) 1/2))
(+.f64 -1/3 x)
(*.f64 (+.f64 x (+.f64 x -2/3)) 1/2)
(+.f64 -1/3 x)
(*.f64 4 (*.f64 (+.f64 x -1/3) 1/4))
(+.f64 -1/3 x)
(*.f64 (*.f64 (+.f64 x -1/3) 4) 1/4)
(+.f64 -1/3 x)
(*.f64 (*.f64 (+.f64 x -1/3) 8) 1/8)
(+.f64 -1/3 x)
(*.f64 1/2 (+.f64 x (+.f64 x -2/3)))
(+.f64 -1/3 x)
(*.f64 (*.f64 (+.f64 x -1/3) 1/2) 2)
(+.f64 -1/3 x)
(*.f64 1/4 (*.f64 (+.f64 x -1/3) 4))
(+.f64 -1/3 x)
(*.f64 (*.f64 (+.f64 x -1/3) 1/4) 4)
(+.f64 -1/3 x)
(*.f64 1/8 (*.f64 (+.f64 x -1/3) 8))
(+.f64 -1/3 x)
(/.f64 (+.f64 x -1/3) 1)
(+.f64 -1/3 x)
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
(+.f64 -1/3 x)
(/.f64 (*.f64 (+.f64 x -1/3) 4) 4)
(+.f64 -1/3 x)
(/.f64 (*.f64 (+.f64 x -1/3) 8) 8)
(+.f64 -1/3 x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)) 16)
(+.f64 -1/3 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))) 32)
(+.f64 -1/3 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) 64)
(+.f64 -1/3 x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1/3) 8))))) 128)
(+.f64 -1/3 x)

eval7.0ms (0.1%)

Compiler

Compiled 203 to 170 computations (16.3% saved)

prune4.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New25328
Fresh000
Picked011
Done000
Total25429
Error
0.0b
Counts
29 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
0.0b
(-.f64 x 1/3)
30.0b
x
32.8b
-1/3
Compiler

Compiled 16 to 12 computations (25% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 13 computations (31.6% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite99.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1706×bool.json-1
1706×bool.json-2
1664×rational.json-1
1664×rational.json-2
1076×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0620
16120
217520
337020
478720
5177620
6407020
7678320
Stop Event
node limit
Counts
2 → 39
Calls
Call 1
Inputs
(+.f64 x -2/3)
(+.f64 x (+.f64 x -2/3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x -2/3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x -2/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x -2/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x -2/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x -4/3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x -2/3) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -2/3) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -2/3) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x -4/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -2/3) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x -2/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -2/3) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x -2/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x -4/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -2/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -2/3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x -2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x -2/3) (+.f64 x -2/3))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x -2/3) (+.f64 x -2/3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 x -2/3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x -2/3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 x -2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 x -2/3) 1/2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x -4/3) (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (+.f64 x -2/3)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x -2/3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 x -2/3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 x -2/3)) (+.f64 x (+.f64 x -2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 x -2/3)) (+.f64 x (+.f64 x -2/3)))))))

simplify872.0ms (10.6%)

Algorithm
egg-herbie
Rules
3364×rational.json-simplify-51
3034×rational.json-simplify-2
2822×rational.json-simplify-35
2060×rational.json-simplify-49
1380×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
082627
1160627
2450627
31330627
42651627
53450627
63555627
73621627
83671627
93721627
103771627
113821627
123871627
133921627
143971627
154021627
164071627
174121627
184171627
194221627
206273627
216339627
226393627
236443627
246443627
256443627
266487627
276531627
286575627
296619627
306663627
316707627
326751627
337839627
347885627
Stop Event
node limit
Counts
63 → 51
Calls
Call 1
Inputs
-2/3
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
x
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
x
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
-2/3
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(*.f64 2 x)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(*.f64 2 x)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (+.f64 x -2/3) 0)
(*.f64 (+.f64 x -2/3) 1)
(*.f64 1 (+.f64 x -2/3))
(*.f64 2 (*.f64 (+.f64 x -2/3) 1/2))
(*.f64 (+.f64 x (+.f64 x -4/3)) 1/2)
(*.f64 4 (*.f64 (+.f64 x -2/3) 1/4))
(*.f64 (*.f64 (+.f64 x -2/3) 4) 1/4)
(*.f64 (*.f64 (+.f64 x -2/3) 8) 1/8)
(*.f64 1/2 (+.f64 x (+.f64 x -4/3)))
(*.f64 (*.f64 (+.f64 x -2/3) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x -2/3) 4))
(*.f64 (*.f64 (+.f64 x -2/3) 1/4) 4)
(/.f64 (+.f64 x -2/3) 1)
(/.f64 (+.f64 x (+.f64 x -4/3)) 2)
(/.f64 (*.f64 (+.f64 x -2/3) 4) 4)
(/.f64 (*.f64 (+.f64 x -2/3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)))) 64)
(-.f64 (+.f64 x (+.f64 x -2/3)) 0)
(*.f64 (+.f64 x (+.f64 x -2/3)) 1)
(*.f64 1 (+.f64 x (+.f64 x -2/3)))
(*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2))
(*.f64 2 (+.f64 (*.f64 (+.f64 x -2/3) 1/2) (*.f64 x 1/2)))
(*.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 1/2)
(*.f64 4 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 1/8)
(*.f64 1/2 (+.f64 (+.f64 x -4/3) (*.f64 x 3)))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x -2/3)) 4))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4) 4)
(/.f64 (+.f64 x (+.f64 x -2/3)) 1)
(/.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 4)
(/.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)))) 64)
Outputs
-2/3
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
x
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
x
(-.f64 x 2/3)
(-.f64 x 2/3)
(-.f64 x 2/3)
-2/3
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(*.f64 2 x)
(*.f64 x 2)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(*.f64 2 x)
(*.f64 x 2)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (*.f64 2 x) 2/3)
(-.f64 (*.f64 x 2) 2/3)
(-.f64 (+.f64 x -2/3) 0)
(+.f64 -2/3 x)
(*.f64 (+.f64 x -2/3) 1)
(+.f64 -2/3 x)
(*.f64 1 (+.f64 x -2/3))
(+.f64 -2/3 x)
(*.f64 2 (*.f64 (+.f64 x -2/3) 1/2))
(+.f64 -2/3 x)
(*.f64 (+.f64 x (+.f64 x -4/3)) 1/2)
(+.f64 -2/3 x)
(*.f64 4 (*.f64 (+.f64 x -2/3) 1/4))
(+.f64 -2/3 x)
(*.f64 (*.f64 (+.f64 x -2/3) 4) 1/4)
(+.f64 -2/3 x)
(*.f64 (*.f64 (+.f64 x -2/3) 8) 1/8)
(+.f64 -2/3 x)
(*.f64 1/2 (+.f64 x (+.f64 x -4/3)))
(+.f64 -2/3 x)
(*.f64 (*.f64 (+.f64 x -2/3) 1/2) 2)
(+.f64 -2/3 x)
(*.f64 1/4 (*.f64 (+.f64 x -2/3) 4))
(+.f64 -2/3 x)
(*.f64 (*.f64 (+.f64 x -2/3) 1/4) 4)
(+.f64 -2/3 x)
(/.f64 (+.f64 x -2/3) 1)
(+.f64 -2/3 x)
(/.f64 (+.f64 x (+.f64 x -4/3)) 2)
(+.f64 -2/3 x)
(/.f64 (*.f64 (+.f64 x -2/3) 4) 4)
(+.f64 -2/3 x)
(/.f64 (*.f64 (+.f64 x -2/3) 8) 8)
(+.f64 -2/3 x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)) 16)
(+.f64 -2/3 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) 32)
(+.f64 -2/3 x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -2/3) 8)))) 64)
(+.f64 -2/3 x)
(-.f64 (+.f64 x (+.f64 x -2/3)) 0)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 (+.f64 x (+.f64 x -2/3)) 1)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 1 (+.f64 x (+.f64 x -2/3)))
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2))
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 2 (+.f64 (*.f64 (+.f64 x -2/3) 1/2) (*.f64 x 1/2)))
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 1/2)
(*.f64 1/2 (+.f64 (+.f64 x -4/3) (*.f64 x 3)))
(*.f64 1/2 (+.f64 x (+.f64 -4/3 (*.f64 x 3))))
(*.f64 4 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4))
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 1/4)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 1/8)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 1/2 (+.f64 (+.f64 x -4/3) (*.f64 x 3)))
(*.f64 1/2 (+.f64 x (+.f64 -4/3 (*.f64 x 3))))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/2) 2)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x -2/3)) 4))
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(*.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 1/4) 4)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (+.f64 x (+.f64 x -2/3)) 1)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2)
(/.f64 (+.f64 x (+.f64 -4/3 (*.f64 x 3))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 4) 4)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (*.f64 (+.f64 x (+.f64 x -2/3)) 8) 8)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)) 16)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) 32)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x -2/3)) 8)))) 64)
(+.f64 x (+.f64 -2/3 x))
(+.f64 -2/3 (+.f64 x x))

eval12.0ms (0.1%)

Compiler

Compiled 542 to 438 computations (19.2% saved)

prune7.0ms (0.1%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New50151
Fresh022
Picked011
Done011
Total50555
Error
0.0b
Counts
55 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (/.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2) 2)
0.0b
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
0.0b
(-.f64 x 1/3)
30.0b
x
32.8b
-1/3
Compiler

Compiled 28 to 22 computations (21.4% saved)

localize15.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (+.f64 x -4/3) (*.f64 x 3))
0.0b
(+.f64 x -4/3)
Compiler

Compiled 38 to 29 computations (23.7% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite83.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1452×bool.json-1
1452×bool.json-2
1402×rational.json-1
1402×rational.json-2
1402×rational.json-4
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0826
18026
221420
346020
4102020
5247520
6535420
Stop Event
node limit
Counts
2 → 40
Calls
Call 1
Inputs
(+.f64 x -4/3)
(+.f64 (+.f64 x -4/3) (*.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x -4/3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x -4/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x -4/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x -4/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x -8/3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x -4/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -4/3) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x -8/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -4/3) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x -4/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x -4/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x -4/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x -8/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x -4/3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x -4/3) (+.f64 x -4/3))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x -4/3) (+.f64 x -4/3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 -4/3 (*.f64 x 4)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -4/3 (*.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 -4/3 (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 3/2) (*.f64 (+.f64 x -4/3) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 x -4/3) 1/2) (*.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 6) (+.f64 x (+.f64 x -8/3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x (+.f64 x -8/3)) (*.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -4/3 (*.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 -4/3 (*.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 -4/3 (*.f64 x 4)) (+.f64 -4/3 (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 -4/3 (*.f64 x 4)) (+.f64 -4/3 (*.f64 x 4)))))))

simplify841.0ms (10.3%)

Algorithm
egg-herbie
Rules
3602×rational.json-simplify-2
2774×rational.json-simplify-35
2388×rational.json-simplify-49
2024×rational.json-simplify-51
922×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
089682
1167682
2411682
31236682
42387682
52984682
63075682
73143682
83197682
93247682
103295682
113343682
123391682
133439682
143487682
153535682
163583682
173631682
183679682
193727682
204953682
215017682
225069682
235117682
245159682
255159682
265804682
275804682
285846682
295888682
305930682
315972682
326014682
336056682
346098682
356140682
367709682
Stop Event
node limit
Counts
64 → 52
Calls
Call 1
Inputs
-4/3
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
x
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
x
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
-4/3
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(*.f64 4 x)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(*.f64 4 x)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (+.f64 x -4/3) 0)
(*.f64 (+.f64 x -4/3) 1)
(*.f64 1 (+.f64 x -4/3))
(*.f64 2 (*.f64 (+.f64 x -4/3) 1/2))
(*.f64 (+.f64 x (+.f64 x -8/3)) 1/2)
(*.f64 4 (/.f64 (+.f64 x -4/3) 4))
(*.f64 (*.f64 (+.f64 x -4/3) 4) 1/4)
(*.f64 1/2 (+.f64 x (+.f64 x -8/3)))
(*.f64 (*.f64 (+.f64 x -4/3) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x -4/3) 4))
(*.f64 (/.f64 (+.f64 x -4/3) 4) 4)
(/.f64 (+.f64 x -4/3) 1)
(/.f64 (+.f64 x (+.f64 x -8/3)) 2)
(/.f64 (*.f64 (+.f64 x -4/3) 4) 4)
(/.f64 (*.f64 (+.f64 x -4/3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)))) 64)
(-.f64 (+.f64 -4/3 (*.f64 x 4)) 0)
(*.f64 (+.f64 -4/3 (*.f64 x 4)) 1)
(*.f64 1 (+.f64 -4/3 (*.f64 x 4)))
(*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2))
(*.f64 2 (+.f64 (*.f64 x 3/2) (*.f64 (+.f64 x -4/3) 1/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 x -4/3) 1/2) (*.f64 x 3/2)))
(*.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 1/2)
(*.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 1/4)
(*.f64 1/2 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))))
(*.f64 1/2 (+.f64 (*.f64 x 6) (+.f64 x (+.f64 x -8/3))))
(*.f64 1/2 (+.f64 (+.f64 x (+.f64 x -8/3)) (*.f64 x 6)))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4))
(*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)
(/.f64 (+.f64 -4/3 (*.f64 x 4)) 1)
(/.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 2)
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)))) 64)
Outputs
-4/3
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
x
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
x
(-.f64 x 4/3)
(-.f64 x 4/3)
(-.f64 x 4/3)
-4/3
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(*.f64 4 x)
(*.f64 x 4)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(*.f64 4 x)
(*.f64 x 4)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (*.f64 4 x) 4/3)
(-.f64 (*.f64 x 4) 4/3)
(-.f64 (+.f64 x -4/3) 0)
(+.f64 -4/3 x)
(*.f64 (+.f64 x -4/3) 1)
(+.f64 -4/3 x)
(*.f64 1 (+.f64 x -4/3))
(+.f64 -4/3 x)
(*.f64 2 (*.f64 (+.f64 x -4/3) 1/2))
(+.f64 -4/3 x)
(*.f64 (+.f64 x (+.f64 x -8/3)) 1/2)
(+.f64 -4/3 x)
(*.f64 4 (/.f64 (+.f64 x -4/3) 4))
(+.f64 -4/3 x)
(*.f64 (*.f64 (+.f64 x -4/3) 4) 1/4)
(+.f64 -4/3 x)
(*.f64 1/2 (+.f64 x (+.f64 x -8/3)))
(+.f64 -4/3 x)
(*.f64 (*.f64 (+.f64 x -4/3) 1/2) 2)
(+.f64 -4/3 x)
(*.f64 1/4 (*.f64 (+.f64 x -4/3) 4))
(+.f64 -4/3 x)
(*.f64 (/.f64 (+.f64 x -4/3) 4) 4)
(+.f64 -4/3 x)
(/.f64 (+.f64 x -4/3) 1)
(+.f64 -4/3 x)
(/.f64 (+.f64 x (+.f64 x -8/3)) 2)
(+.f64 -4/3 x)
(/.f64 (*.f64 (+.f64 x -4/3) 4) 4)
(+.f64 -4/3 x)
(/.f64 (*.f64 (+.f64 x -4/3) 8) 8)
(+.f64 -4/3 x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)) 16)
(+.f64 -4/3 x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) 32)
(+.f64 -4/3 x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/3) 8)))) 64)
(+.f64 -4/3 x)
(-.f64 (+.f64 -4/3 (*.f64 x 4)) 0)
(+.f64 -4/3 (*.f64 x 4))
(*.f64 (+.f64 -4/3 (*.f64 x 4)) 1)
(+.f64 -4/3 (*.f64 x 4))
(*.f64 1 (+.f64 -4/3 (*.f64 x 4)))
(+.f64 -4/3 (*.f64 x 4))
(*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2))
(+.f64 -4/3 (*.f64 x 4))
(*.f64 2 (+.f64 (*.f64 x 3/2) (*.f64 (+.f64 x -4/3) 1/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 -4/3 x) 1/2) (*.f64 x 3/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 x -4/3) 1/2) (*.f64 x 3/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 -4/3 x) 1/2) (*.f64 x 3/2)))
(*.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 1/2)
(+.f64 -4/3 (*.f64 x 4))
(*.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4))
(+.f64 -4/3 (*.f64 x 4))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 1/4)
(+.f64 -4/3 (*.f64 x 4))
(*.f64 1/2 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))))
(+.f64 -4/3 (*.f64 x 4))
(*.f64 1/2 (+.f64 (*.f64 x 6) (+.f64 x (+.f64 x -8/3))))
(*.f64 1/2 (+.f64 (+.f64 x (+.f64 x -8/3)) (*.f64 x 6)))
(*.f64 1/2 (+.f64 x (+.f64 (+.f64 x -8/3) (*.f64 x 6))))
(*.f64 1/2 (+.f64 x (+.f64 x (+.f64 -8/3 (*.f64 x 6)))))
(*.f64 1/2 (+.f64 (+.f64 x (+.f64 x -8/3)) (*.f64 x 6)))
(*.f64 1/2 (+.f64 x (+.f64 (+.f64 x -8/3) (*.f64 x 6))))
(*.f64 1/2 (+.f64 x (+.f64 x (+.f64 -8/3 (*.f64 x 6)))))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 1/2) 2)
(+.f64 -4/3 (*.f64 x 4))
(*.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4))
(+.f64 -4/3 (*.f64 x 4))
(*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (+.f64 -4/3 (*.f64 x 4)) 1)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 2)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 4) 4)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8) 8)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)) 16)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) 32)
(+.f64 -4/3 (*.f64 x 4))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 4)) 8)))) 64)
(+.f64 -4/3 (*.f64 x 4))

eval14.0ms (0.2%)

Compiler

Compiled 717 to 628 computations (12.4% saved)

prune50.0ms (0.6%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New51152
Fresh022
Picked011
Done022
Total51657
Error
0b
Counts
57 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (/.f64 (/.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 2) 2) 2)
0.0b
(/.f64 (/.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2) 2)
0.0b
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
0.0b
(-.f64 x 1/3)
30.0b
x
32.8b
-1/3
Compiler

Compiled 42 to 35 computations (16.7% saved)

localize22.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 -4/3 (*.f64 x 8))
0.0b
(+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8)))
Compiler

Compiled 53 to 46 computations (13.2% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite110.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1866×bool.json-1
1866×bool.json-2
1166×rational.json-1
1166×rational.json-2
1166×rational.json-4
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0832
18026
221326
344126
493526
5206326
6442226
7729426
Stop Event
node limit
Counts
2 → 40
Calls
Call 1
Inputs
(+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8)))
(+.f64 -4/3 (*.f64 x 8))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x 8) -8/3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x 8) -8/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x 8) -8/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x 8) -8/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x 8) -8/3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x 8) -8/3) (+.f64 (*.f64 x 8) -8/3))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x 8) -8/3) (+.f64 (*.f64 x 8) -8/3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 -4/3 (*.f64 x 8)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -4/3 (*.f64 x 8)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 -4/3 (*.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x 16) -8/3) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 16) -8/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -4/3 (*.f64 x 8)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x 16) -8/3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 -4/3 (*.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 -4/3 (*.f64 x 8)) (+.f64 -4/3 (*.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 -4/3 (*.f64 x 8)) (+.f64 -4/3 (*.f64 x 8)))))))

simplify284.0ms (3.5%)

Algorithm
egg-herbie
Rules
4826×rational.json-simplify-41
2680×rational.json-simplify-51
1734×rational.json-simplify-35
846×rational.json-simplify-2
554×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
084784
1168784
2480784
31271784
42225784
52730784
62821784
72889784
82943784
92993784
103041784
113089784
123137784
133185784
143233784
153281784
163329784
173377784
183425784
193473784
Stop Event
node limit
Counts
64 → 47
Calls
Call 1
Inputs
-8/3
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
-4/3
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (+.f64 (*.f64 x 8) -8/3) 0)
(*.f64 (+.f64 (*.f64 x 8) -8/3) 1)
(*.f64 1 (+.f64 (*.f64 x 8) -8/3))
(*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1))
(*.f64 4 (*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)
(/.f64 (+.f64 (*.f64 x 8) -8/3) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)))) 64)
(-.f64 (+.f64 -4/3 (*.f64 x 8)) 0)
(*.f64 (+.f64 -4/3 (*.f64 x 8)) 1)
(*.f64 1 (+.f64 -4/3 (*.f64 x 8)))
(*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2))
(*.f64 (+.f64 (*.f64 x 16) -8/3) 1/2)
(*.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4))
(*.f64 4 (*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1))
(*.f64 4 (*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 1/2))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1/4)
(*.f64 1/2 (+.f64 (*.f64 x 16) -8/3))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4))
(*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)
(/.f64 (+.f64 -4/3 (*.f64 x 8)) 1)
(/.f64 (+.f64 (*.f64 x 16) -8/3) 2)
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)))) 64)
Outputs
-8/3
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
(-.f64 (*.f64 8 x) 8/3)
-4/3
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(*.f64 8 x)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (*.f64 8 x) 4/3)
(-.f64 (+.f64 (*.f64 x 8) -8/3) 0)
(+.f64 -8/3 (*.f64 8 x))
(*.f64 (+.f64 (*.f64 x 8) -8/3) 1)
(+.f64 -8/3 (*.f64 8 x))
(*.f64 1 (+.f64 (*.f64 x 8) -8/3))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 1/2)
(+.f64 -8/3 (*.f64 8 x))
(*.f64 4 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 4 (*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 1/2))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 1/4)
(+.f64 -8/3 (*.f64 8 x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 1/2) 2)
(+.f64 -8/3 (*.f64 8 x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4))
(+.f64 -8/3 (*.f64 8 x))
(*.f64 (/.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (+.f64 (*.f64 x 8) -8/3) 1)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 2) 2)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 4) 4)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8) 8)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)) 16)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) 32)
(+.f64 -8/3 (*.f64 8 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x 8) -8/3) 8)))) 64)
(+.f64 -8/3 (*.f64 8 x))
(-.f64 (+.f64 -4/3 (*.f64 x 8)) 0)
(+.f64 -4/3 (*.f64 8 x))
(*.f64 (+.f64 -4/3 (*.f64 x 8)) 1)
(+.f64 -4/3 (*.f64 8 x))
(*.f64 1 (+.f64 -4/3 (*.f64 x 8)))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 (+.f64 (*.f64 x 16) -8/3) 1/2)
(+.f64 -4/3 (*.f64 8 x))
(*.f64 4 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 4 (*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 4 (*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 1/2))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 1/4)
(+.f64 -4/3 (*.f64 8 x))
(*.f64 1/2 (+.f64 (*.f64 x 16) -8/3))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 1/2) 2)
(+.f64 -4/3 (*.f64 8 x))
(*.f64 1/4 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4))
(+.f64 -4/3 (*.f64 8 x))
(*.f64 (/.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (+.f64 -4/3 (*.f64 x 8)) 1)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (+.f64 (*.f64 x 16) -8/3) 2)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 4) 4)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8) 8)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)) 16)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) 32)
(+.f64 -4/3 (*.f64 8 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 -4/3 (*.f64 x 8)) 8)))) 64)
(+.f64 -4/3 (*.f64 8 x))

eval161.0ms (2%)

Compiler

Compiled 744 to 697 computations (6.3% saved)

prune7.0ms (0.1%)

Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New47047
Fresh022
Picked011
Done033
Total47653
Error
0b
Counts
53 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (/.f64 (/.f64 (+.f64 -4/3 (+.f64 -4/3 (*.f64 x 8))) 2) 2) 2)
0.0b
(/.f64 (/.f64 (+.f64 (+.f64 x -4/3) (*.f64 x 3)) 2) 2)
0.0b
(/.f64 (+.f64 x (+.f64 x -2/3)) 2)
0.0b
(-.f64 x 1/3)
30.0b
x
32.8b
-1/3
Compiler

Compiled 42 to 35 computations (16.7% saved)

regimes10.0ms (0.1%)

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

2 calls:

5.0ms
x
4.0ms
(-.f64 x (/.f64 1 3))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 x (/.f64 1 3))
Compiler

Compiled 50 to 40 computations (20% saved)

regimes474.0ms (5.8%)

Accuracy

Total -60.5b remaining (-5323.2%)

Threshold costs -60.5b (-5323.2%)

Counts
2 → 3
Calls
Call 1
Inputs
-1/3
x
Outputs
x
-1/3
x
Calls

1 calls:

473.0ms
x
Results
ErrorSegmentsBranch
1.1b3x
Compiler

Compiled 5 to 3 computations (40% saved)

bsearch343.0ms (4.2%)

Algorithm
binary-search
Steps
TimeLeftRight
330.0ms
0.0004655833307986515
0.6682571328058488
12.0ms
-2261.1628400366367
-0.002210021736400799
Results
340.0ms272×body256valid
Compiler

Compiled 112 to 93 computations (17% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01529
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 x 1/3)
(if (<=.f64 x -5944751508129055/18014398509481984) x (if (<=.f64 x 5944751508129055/18014398509481984) -1/3 x))
-1/3
Outputs
(-.f64 x 1/3)
(if (<=.f64 x -5944751508129055/18014398509481984) x (if (<=.f64 x 5944751508129055/18014398509481984) -1/3 x))
-1/3
Compiler

Compiled 18 to 13 computations (27.8% saved)

soundness8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
087
Stop Event
saturated
Compiler

Compiled 9 to 7 computations (22.2% saved)

end29.0ms (0.4%)

Compiler

Compiled 16 to 11 computations (31.3% saved)

Profiling

Loading profile data...