Details

Time bar (total: 4.3s)

analyze883.0ms (20.7%)

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)

sample785.0ms (18.4%)

Results
728.0ms8126×body256valid
19.0ms227×body256infinite
16.0ms83×body1024valid
6.0ms47×body512valid
Bogosity

preprocess5.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)

simplify9.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
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.1b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
0.0b
(*.f64 d1 (+.f64 d2 30))
Compiler

Compiled 27 to 19 computations (29.6% saved)

localize10.0ms (0.2%)

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
0.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))

rewrite104.0ms (2.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17713
221413
343913
489113
5191213
6413613
7690213
Stop Event
node limit
Counts
1 → 12
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 (+.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 pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(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)))))))

simplify717.0ms (16.8%)

Algorithm
egg-herbie
Rules
3516×rational.json-simplify-35
2488×rational.json-simplify-2
1046×rational.json-simplify-53
1000×exponential.json-simplify-26
992×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
043398
198398
2195398
3463398
42073398
54378398
65266398
75596398
85757398
95894398
106029398
116666398
126669398
136743398
146835398
156903398
166923398
177060398
187195398
197330398
207465398
217600398
227869398
Stop Event
node limit
Counts
32 → 18
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 (+.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)
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
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 (+.f64 d2 30) (*.f64 d1 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))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))

localize6.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.1%)

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))

rewrite82.0ms (1.9%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
18813
224013
351013
4104713
5228713
6486313
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 (+.f64 d2 30) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 d2 (*.f64 d1 1/2)) (*.f64 d1 15)))))) (#(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 d1 (+.f64 d2 d2)) (*.f64 d1 60)))))) (#(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 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 pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(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)))))))

simplify957.0ms (22.4%)

Algorithm
egg-herbie
Rules
3348×rational.json-simplify-35
2396×rational.json-simplify-2
1452×rational.json-simplify-1
1010×rational.json-simplify-41
1006×rational.json-simplify-53
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
081781
1175753
2377753
31240737
42753721
54194721
64673721
74985721
85140721
95239721
105331721
115923721
126263721
136432721
146702721
156915721
167025721
177030721
187030721
197060721
207060721
217148721
227236721
237324721
247412721
257500721
267588721
277676721
287764721
297852721
307940721
Stop Event
node limit
Counts
55 → 47
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 (+.f64 d2 30) (*.f64 d1 1/2)))
(*.f64 2 (+.f64 (*.f64 d2 (*.f64 d1 1/2)) (*.f64 d1 15)))
(*.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 d1 (+.f64 d2 d2)) (*.f64 d1 60)))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/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)
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
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 (-.f64 -30 d2) (neg.f64 d1))
(*.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 (-.f64 -30 d2) (neg.f64 d1))
(*.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 (-.f64 -30 d2) (neg.f64 d1))
(*.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 (-.f64 -30 d2) (neg.f64 d1))
(*.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 (+.f64 d2 30) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 2 (+.f64 (*.f64 d2 (*.f64 d1 1/2)) (*.f64 d1 15)))
(*.f64 2 (+.f64 (*.f64 d1 (*.f64 d2 1/2)) (*.f64 d1 15)))
(*.f64 2 (*.f64 d1 (+.f64 15 (*.f64 d2 1/2))))
(*.f64 d1 (*.f64 (+.f64 15 (*.f64 d2 1/2)) 2))
(*.f64 d1 (*.f64 2 (+.f64 15 (*.f64 d2 1/2))))
(*.f64 (+.f64 d1 d1) (+.f64 15 (*.f64 d2 1/2)))
(*.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 2 (+.f64 (*.f64 d1 (*.f64 d2 1/2)) (*.f64 d1 15)))
(*.f64 2 (*.f64 d1 (+.f64 15 (*.f64 d2 1/2))))
(*.f64 d1 (*.f64 (+.f64 15 (*.f64 d2 1/2)) 2))
(*.f64 d1 (*.f64 2 (+.f64 15 (*.f64 d2 1/2))))
(*.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 d1 (+.f64 d2 d2)) (*.f64 d1 60)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 1/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))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 d2 30))

localize10.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 17 computations (34.6% saved)

series2.0ms (0.1%)

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))

rewrite86.0ms (2%)

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
110932
228026
358126
4122626
5267526
6570926
Stop Event
node limit
Counts
2 → 45
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 d1 (/.f64 (+.f64 d2 30) 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 d1 (/.f64 (+.f64 d2 30) 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 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(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 (+.f64 d2 10) (*.f64 d1 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 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 10)) 1)))) (#(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)))))))

simplify453.0ms (10.6%)

Algorithm
egg-herbie
Rules
4736×rational.json-simplify-41
2758×rational.json-simplify-35
2356×rational.json-simplify-2
1314×rational.json-simplify-53
984×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01131133
12311121
25101121
315231121
434611121
543931121
648131121
751361121
853491121
955131121
1061351121
1162761121
1262891121
1363311121
1463311121
1563311121
1666271121
1770591121
1872441121
Stop Event
node limit
Counts
89 → 58
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 d1 (/.f64 (+.f64 d2 30) 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 d1 (/.f64 (+.f64 d2 30) 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 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(+.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 (+.f64 d2 10) (*.f64 d1 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)
(pow.f64 (*.f64 d1 (+.f64 d2 10)) 1)
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 d1 (/.f64 (+.f64 d2 30) 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 d1 (/.f64 (+.f64 d2 30) 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 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))) 32)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.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 (+.f64 d2 10) (*.f64 d1 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 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 10)) 8))) 32)
(*.f64 d1 (+.f64 d2 10))
(pow.f64 (*.f64 d1 (+.f64 d2 10)) 1)
(*.f64 d1 (+.f64 d2 10))

eval24.0ms (0.6%)

Compiler

Compiled 1120 to 795 computations (29% saved)

prune14.0ms (0.3%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1212123
Fresh000
Picked011
Done022
Total1215126
Error
0.0b
Counts
126 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 d1 (+.f64 d2 10)) (*.f64 d1 20))
0.1b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
34.3b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
29.5b
(*.f64 d1 30)
Compiler

Compiled 37 to 26 computations (29.7% saved)

localize3.0ms (0.1%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize3.0ms (0.1%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.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.1b
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
34.3b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
29.5b
(*.f64 d1 30)
Compiler

Compiled 37 to 26 computations (29.7% saved)

regimes16.0ms (0.4%)

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:

5.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)

regimes35.0ms (0.8%)

Accuracy

Total -58.6b remaining (-2257.6%)

Threshold costs -58.6b (-2257.6%)

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:

25.0ms
d1
9.0ms
d2
Results
ErrorSegmentsBranch
21.1b9d1
2.6b3d2
Compiler

Compiled 14 to 9 computations (35.7% saved)

bsearch26.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
25.108103274128673
994.3135269456569
14.0ms
-61985339.768090874
-11.88804169159177
Results
23.0ms256×body256valid
Compiler

Compiled 210 to 157 computations (25.2% saved)

simplify2.0ms (0.1%)

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.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
Compiler

Compiled 79 to 51 computations (35.4% saved)

end24.0ms (0.6%)

Compiler

Compiled 27 to 16 computations (40.7% saved)

Profiling

Loading profile data...