Details

Time bar (total: 6.2s)

analyze162.0ms (2.6%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
37.5%37.5%62.4%0.1%0%0%0%6
51.6%50%46.8%0.1%3.1%0%0%7
62.3%59.3%35.9%0.1%4.7%0%0%8
72.3%67.1%25.8%0.1%7%0%0%9
79.1%72.6%19.1%0.1%8.2%0%0%10
85.1%76.9%13.5%0.1%9.6%0%0%11
89%79.8%9.9%0.1%10.2%0%0%12
Compiler

Compiled 14 to 10 computations (28.6% saved)

sample1.8s (28.9%)

Results
1.7s8152×body256valid
20.0ms220×body256infinite
16.0ms72×body1024valid
5.0ms32×body512valid
Bogosity

preprocess4.0ms (0.1%)

Algorithm
egg-herbie
Rules
44×rational.json-simplify-1
26×rational.json-simplify-2
20×rational.json-simplify-51
16×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01662
12650
24238
36426
47926
58326
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (+.f64 (*.f64 d2 10) (*.f64 d2 d1)) (*.f64 d2 20))
Outputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (+.f64 (*.f64 d2 10) (*.f64 d2 d1)) (*.f64 d2 20))
(+.f64 (+.f64 (*.f64 d1 d2) (*.f64 10 d2)) (*.f64 d2 20))
(+.f64 (*.f64 d2 (+.f64 10 d1)) (*.f64 d2 20))
(+.f64 (*.f64 d1 d2) (*.f64 d2 30))
(*.f64 d2 (+.f64 d1 30))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify17.0ms (0.3%)

Algorithm
egg-herbie
Rules
22×rational.json-simplify-1
14×rational.json-simplify-2
10×rational.json-simplify-51
rational.json-simplify-41
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01131
11625
22419
33613
44413
54613
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Outputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 d2 30))

eval1.0ms (0%)

Compiler

Compiled 34 to 21 computations (38.2% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New134
Fresh101
Picked000
Done000
Total235
Error
0.0b
Counts
5 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
0.0b
(*.f64 d1 (+.f64 d2 30))
Compiler

Compiled 27 to 19 computations (29.6% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 d1 (+.f64 d2 30))
Compiler

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0%)

Counts
1 → 20
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d2
@inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d1
@0
(*.f64 d1 (+.f64 d2 30))
0.0ms
d1
@-inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d1
@inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d2
@-inf
(*.f64 d1 (+.f64 d2 30))

rewrite96.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
1604×bool.json-1
1604×bool.json-2
1564×rational.json-1
1564×rational.json-2
1564×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219313
340113
482113
5178113
6386413
7639913
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 30))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (+.f64 d2 30)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d2 30)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 30) (+.f64 d1 d1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d2 30))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))))

simplify1.5s (24.8%)

Algorithm
egg-herbie
Rules
5364×rational.json-simplify-35
2492×rational.json-simplify-2
1068×rational.json-simplify-53
974×rational.json-simplify-1
736×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042385
194385
2183385
3448385
41877385
53676385
64583385
74895385
85056385
95209385
105360385
115695385
125700385
135771385
145814385
155825385
165976385
176127385
186278385
196429385
206580385
216731385
226882385
237033385
247131385
257146385
267193385
277226385
287227385
297227385
307378385
317529385
327680385
337831385
347982385
Stop Event
node limit
Counts
31 → 17
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 30 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(+.f64 0 (*.f64 d1 (+.f64 d2 30)))
(+.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(/.f64 (*.f64 (+.f64 d2 30) (+.f64 d1 d1)) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
Outputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 30 d1)
(*.f64 d1 30)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 30 d2))
(+.f64 0 (*.f64 d1 (+.f64 d2 30)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 30 d2))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (+.f64 d2 30) (+.f64 d1 d1)) 2)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(*.f64 d1 (+.f64 30 d2))

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
Compiler

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d2
@0
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
1.0ms
d1
@inf
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
0.0ms
d1
@0
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
0.0ms
d1
@-inf
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
0.0ms
d2
@inf
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))

rewrite103.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
2018×bool.json-1
1266×bool.json-2
1222×rational.json-1
1222×rational.json-2
1222×rational.json-4
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
18013
221713
346713
496613
5213313
6453313
7772613
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d2 30)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 d1 (+.f64 d2 30))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (*.f64 d1 d2) 1/2) (*.f64 d1 15)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/2) d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (+.f64 (*.f64 d2 1/2) 15))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d2 30) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 60)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 d2) 60))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 d2 30) (*.f64 d1 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d2 30))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))))

simplify1.8s (29%)

Algorithm
egg-herbie
Rules
5186×rational.json-simplify-35
1970×rational.json-simplify-2
1310×rational.json-simplify-1
918×rational.json-simplify-41
814×rational.json-simplify-53
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
083793
1178777
2358771
31143755
42285739
53445739
64256739
74469739
84613739
94730739
104827739
114918739
125262739
135350739
145438739
155526739
165614739
175637739
185729739
195806739
205814739
215814739
225902739
235990739
246078739
256166739
266254739
276342739
286430739
296518739
306606739
316694739
326782739
336870739
346958739
357046739
367134739
377222739
387222739
397222739
407310739
417398739
427486739
437574739
447662739
457750739
467838739
477926739
Stop Event
node limit
Counts
55 → 45
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 30 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 1 (*.f64 d1 (+.f64 d2 30)))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)))
(*.f64 2 (+.f64 (*.f64 (*.f64 d1 d2) 1/2) (*.f64 d1 15)))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/2) d1))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d2 1/2) 15))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)
(*.f64 (+.f64 d2 30) d1)
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))
(*.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 60)))
(*.f64 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)) 2)
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 d2) 60))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 1/4 (*.f64 (+.f64 d2 30) (*.f64 d1 4)))
(*.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)
(/.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
Outputs
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 30)))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (neg.f64 d2) 30)))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 30)))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (neg.f64 d2) 30)))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 30)))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (neg.f64 d2) 30)))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 30)))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (neg.f64 d2) 30)))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 30 d1)
(*.f64 d1 30)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d2 d1) (*.f64 30 d1))
(*.f64 d1 (+.f64 d2 30))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 d2 30))
(*.f64 1 (*.f64 d1 (+.f64 d2 30)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 2 (+.f64 (*.f64 (*.f64 d1 d2) 1/2) (*.f64 d1 15)))
(*.f64 2 (+.f64 (*.f64 d2 (*.f64 d1 1/2)) (*.f64 d1 15)))
(*.f64 2 (*.f64 d1 (+.f64 15 (*.f64 d2 1/2))))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/2) d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d2 1/2) 15))
(*.f64 (+.f64 d1 d1) (+.f64 15 (*.f64 d2 1/2)))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 d2 30) d1)
(*.f64 d1 (+.f64 d2 30))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 1/4)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))
(*.f64 d1 (+.f64 d2 30))
(*.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 60)))
(*.f64 (*.f64 d1 (/.f64 (+.f64 d2 30) 2)) 2)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 d2) 60))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 1/4 (*.f64 (+.f64 d2 30) (*.f64 d1 4)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 4)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(*.f64 d1 (+.f64 d2 30))

localize16.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 d1 (+.f64 d2 10))
0.2b
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
Compiler

Compiled 26 to 17 computations (34.6% saved)

series2.0ms (0%)

Counts
2 → 44
Calls

12 calls:

TimeVariablePointExpression
1.0ms
d1
@-inf
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0ms
d1
@0
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0ms
d2
@0
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0ms
d2
@-inf
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0ms
d2
@inf
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))

rewrite87.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1474×bool.json-1
1474×bool.json-2
1430×rational.json-1
1430×rational.json-2
1430×rational.json-4
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01038
19932
225326
353326
4113226
5249826
6532026
Stop Event
node limit
Counts
2 → 43
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
(*.f64 d1 (+.f64 d2 10))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d2 30)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 d1 (+.f64 d2 30))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 d1 10) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 d1 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (+.f64 (*.f64 (+.f64 d2 10) 1/2) 10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d2 30) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) (*.f64 d1 40)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 40 (+.f64 d2 (+.f64 d2 20))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 (+.f64 d2 20)) 40))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d2 30))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d2 30)) (*.f64 d1 (+.f64 d2 30)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (+.f64 d2 10)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 d1 (+.f64 d2 10)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d2 10)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d2 10) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d2 10))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 (+.f64 d2 10)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 (+.f64 d2 10)))))))

simplify402.0ms (6.5%)

Algorithm
egg-herbie
Rules
4228×rational.json-simplify-41
2798×rational.json-simplify-35
2320×rational.json-simplify-2
1196×rational.json-simplify-53
744×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01111107
12321095
24921095
314781095
431231095
537471095
640771095
743401095
845231095
946601095
1052711095
1154051095
1254171095
1354171095
1455431095
1557201095
1658961095
1761011095
1862531095
Stop Event
node limit
Counts
87 → 56
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 d2 30))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(+.f64 (*.f64 20 d1) (*.f64 10 d1))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d2 d1)
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d2 d1)
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 (+.f64 10 d2) d1)
(*.f64 10 d1)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 1 (*.f64 d1 (+.f64 d2 30)))
(*.f64 2 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))
(*.f64 2 (+.f64 (*.f64 d1 10) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2))))
(*.f64 2 (+.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 d1 10)))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))
(*.f64 (+.f64 d1 d1) (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 (+.f64 d2 10) 1/2) 10))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)
(*.f64 (+.f64 d2 30) d1)
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))
(*.f64 1/2 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) (*.f64 d1 40)))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 (*.f64 d1 1/2) (+.f64 40 (+.f64 d2 (+.f64 d2 20))))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 (+.f64 d2 20)) 40))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) 2)
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)))
(*.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(+.f64 (*.f64 d1 (+.f64 d2 10)) 0)
(+.f64 0 (*.f64 d1 (+.f64 d2 10)))
(+.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)))
(-.f64 (*.f64 d1 (+.f64 d2 10)) 0)
(/.f64 (*.f64 d1 (+.f64 d2 10)) 1)
(/.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 10) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)
Outputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 (+.f64 d2 10)) 20)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (*.f64 10 d1))
(+.f64 (*.f64 d1 20) (*.f64 d1 10))
(*.f64 d1 30)
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 20 d1) (+.f64 (*.f64 10 d1) (*.f64 d2 d1)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 (+.f64 10 d2) d1)
(*.f64 d1 (+.f64 d2 10))
(*.f64 10 d1)
(*.f64 d1 10)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 10 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d2 10))
(-.f64 (*.f64 d1 (+.f64 d2 30)) 0)
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 1 (*.f64 d1 (+.f64 d2 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (+.f64 (*.f64 d1 10) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (+.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 d1 10)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 30) 2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 d1 d1) (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 (+.f64 d2 10) 1/2) 10))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 1/2)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 d2 30) d1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 1/4)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 30))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/2 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) (*.f64 d1 40)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/2) (+.f64 40 (+.f64 d2 (+.f64 d2 20))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 (+.f64 d2 20)) 40))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/2)) 2)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (/.f64 (+.f64 d2 30) 2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 30)) 4) 4)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 30))) 2)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 4)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 8)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) 16)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 (+.f64 d2 10)) 0)
(*.f64 d1 (+.f64 d2 10))
(+.f64 0 (*.f64 d1 (+.f64 d2 10)))
(*.f64 d1 (+.f64 d2 10))
(+.f64 (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 10) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 d2 10))
(-.f64 (*.f64 d1 (+.f64 d2 10)) 0)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 d1 (+.f64 d2 10)) 1)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 (+.f64 d2 10) (+.f64 d1 d1)) 2)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 10) 4)) 4)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8) 8)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) 16)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)
(*.f64 d1 (+.f64 d2 10))

eval31.0ms (0.5%)

Compiler

Compiled 1063 to 753 computations (29.2% saved)

prune12.0ms (0.2%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1162118
Fresh000
Picked011
Done022
Total1165121
Error
0.0b
Counts
121 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
35.9b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
27.1b
(*.f64 d1 30)
Compiler

Compiled 37 to 26 computations (29.7% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done044
Total055
Error
0.0b
Counts
5 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
35.9b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
27.1b
(*.f64 d1 30)
Compiler

Compiled 37 to 26 computations (29.7% saved)

regimes15.0ms (0.2%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 d1 30)
(*.f64 d2 d1)
(*.f64 d1 (+.f64 d2 30))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Outputs
(*.f64 d1 (+.f64 d2 30))
Calls

3 calls:

4.0ms
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
4.0ms
d1
4.0ms
d2
Results
ErrorSegmentsBranch
0.0b1d1
0.0b1d2
0.0b1(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Compiler

Compiled 59 to 37 computations (37.3% saved)

regimes39.0ms (0.6%)

Accuracy

Total -59.4b remaining (-3276.2%)

Threshold costs -59.4b (-3276.2%)

Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 d1 30)
(*.f64 d2 d1)
Outputs
(*.f64 d2 d1)
(*.f64 d1 30)
(*.f64 d2 d1)
Calls

2 calls:

29.0ms
d1
9.0ms
d2
Results
ErrorSegmentsBranch
18.8b11d1
1.8b3d2
Compiler

Compiled 14 to 9 computations (35.7% saved)

bsearch25.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
0.8332286219781533
184.00543698894668
14.0ms
-2751.0284709717835
-0.29189197902147296
Results
23.0ms240×body256valid
Compiler

Compiled 198 to 148 computations (25.3% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01759
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 30))
(if (<=.f64 d2 -30) (*.f64 d2 d1) (if (<=.f64 d2 30) (*.f64 d1 30) (*.f64 d2 d1)))
(*.f64 d1 30)
Outputs
(*.f64 d1 (+.f64 d2 30))
(if (<=.f64 d2 -30) (*.f64 d2 d1) (if (<=.f64 d2 30) (*.f64 d1 30) (*.f64 d2 d1)))
(*.f64 d1 30)
Compiler

Compiled 31 to 20 computations (35.5% saved)

soundness11.0ms (0.2%)

Algorithm
egg-herbie
Rules
22×rational.json-simplify-1
14×rational.json-simplify-2
10×rational.json-simplify-51
rational.json-simplify-41
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01131
11625
22419
33613
44413
54613
Stop Event
saturated
Compiler

Compiled 79 to 51 computations (35.4% saved)

end21.0ms (0.3%)

Compiler

Compiled 27 to 16 computations (40.7% saved)

Profiling

Loading profile data...