Details

Time bar (total: 4.4s)

analyze386.0ms (8.8%)

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 (41%)

Results
1.7s8133×body256valid
21.0ms226×body256infinite
19.0ms79×body1024valid
7.0ms43×body512valid
0.0msbody2048valid
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)

simplify13.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.1b
(+.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
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))

rewrite204.0ms (4.6%)

Algorithm
batch-egg-rewrite
Rules
2428×rational.json-simplify-35
1520×rational.json-simplify-53
1482×rational.json-simplify-1
1242×exponential.json-3
1242×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14613
29913
320113
436913
582013
6206313
7365013
8475613
9615313
10689213
11689213
12689213
Stop Event
node limit
Counts
1 → 15
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 d1 (*.f64 (+.f64 d2 30) 1/2)) (*.f64 d1 (*.f64 (+.f64 d2 30) 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 d1 (*.f64 (+.f64 d2 30) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 d1 (+.f64 d2 30))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 30) (*.f64 8 (*.f64 d1 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))))

simplify545.0ms (12.4%)

Algorithm
egg-herbie
Rules
3338×rational.json-simplify-35
2310×rational.json-simplify-2
1622×rational.json-simplify-53
1348×rational.json-simplify-1
914×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055437
1139437
2291437
3729437
42321437
54532437
65304437
75537437
85708437
95860437
106009437
117308437
127382437
137382437
147529437
157676437
167823437
177970437
Stop Event
node limit
Counts
35 → 21
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 d1 (*.f64 (+.f64 d2 30) 1/2)) (*.f64 d1 (*.f64 (+.f64 d2 30) 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 d1 (*.f64 (+.f64 d2 30) 8)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))) 128)
(/.f64 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)) 64)
(/.f64 (*.f64 16 (*.f64 d1 (+.f64 d2 30))) 16)
(/.f64 (*.f64 (+.f64 d2 30) (*.f64 8 (*.f64 d1 4))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))))) 512)
(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 d1 (*.f64 (+.f64 d2 30) 1/2)) (*.f64 d1 (*.f64 (+.f64 d2 30) 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 d1 (*.f64 (+.f64 d2 30) 8)) 8)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))) 128)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)) 64)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 16 (*.f64 d1 (+.f64 d2 30))) 16)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (+.f64 d2 30) (*.f64 8 (*.f64 d1 4))) 32)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) 256)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 8) (*.f64 d1 8))))) 512)
(*.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))

rewrite198.0ms (4.5%)

Algorithm
batch-egg-rewrite
Rules
1714×rational.json-simplify-35
1708×rational.json-simplify-1
1416×exponential.json-3
1416×rational.json-1
1416×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
15313
211413
324513
445713
5104913
6260213
7470013
8558713
9687513
10785213
11785213
Stop Event
node limit
Counts
1 → 44
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) 1/2)))))) (#(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 1/2) 15))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 1/4 (+.f64 d2 (+.f64 d2 60))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))) 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)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 d1 8) (+.f64 d2 (+.f64 d2 60))))))) (#(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 d1 4) (/.f64 (+.f64 d2 30) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (*.f64 1/8 (+.f64 d2 (+.f64 d2 60))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 d1 8) (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d2 (+.f64 d2 60)) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 8) (*.f64 1/8 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 d2 (+.f64 d2 60)))))) (#(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 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/16 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))))) (#(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) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/4) (*.f64 (+.f64 d2 30) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 d2 1/2) 15) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 d2 d2) 60) (*.f64 d1 1/2))))) (#(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 d2 (+.f64 d2 60))) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))))

simplify188.0ms (4.3%)

Algorithm
egg-herbie
Rules
2738×rational.json-simplify-2
1682×rational.json-simplify-1
1604×rational.json-simplify-35
1292×rational.json-simplify-51
1146×rational.json-simplify-41
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0107938
1247922
2563922
32065906
44761890
56002890
66185890
76309890
86437890
96562890
107377890
Stop Event
node limit
Counts
68 → 54
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) 1/2)))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d2 1/2) 15))
(*.f64 (+.f64 d1 d1) (*.f64 1/4 (+.f64 d2 (+.f64 d2 60))))
(*.f64 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))) 1/2)
(*.f64 (+.f64 d2 30) d1)
(*.f64 4 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4))
(*.f64 4 (*.f64 (/.f64 d1 8) (+.f64 d2 (+.f64 d2 60))))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 1/4)
(*.f64 (*.f64 d1 4) (/.f64 (+.f64 d2 30) 4))
(*.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))
(*.f64 (*.f64 d1 4) (*.f64 1/8 (+.f64 d2 (+.f64 d2 60))))
(*.f64 8 (*.f64 (/.f64 d1 8) (+.f64 d2 30)))
(*.f64 (+.f64 d2 (+.f64 d2 60)) (*.f64 d1 1/2))
(*.f64 (*.f64 d1 8) (*.f64 1/8 (+.f64 d2 30)))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)
(*.f64 1/2 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))))
(*.f64 (*.f64 d1 1/2) (+.f64 d2 (+.f64 d2 60)))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 d2) 60))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/16 (+.f64 d2 30)))
(*.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))
(*.f64 1/4 (*.f64 (+.f64 d2 30) (*.f64 d1 4)))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)
(*.f64 (*.f64 d1 1/4) (*.f64 (+.f64 d2 30) 4))
(*.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))
(*.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))
(*.f64 (+.f64 (*.f64 d2 1/2) 15) (+.f64 d1 d1))
(*.f64 (+.f64 (+.f64 d2 d2) 60) (*.f64 d1 1/2))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(/.f64 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))))) 256)
(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 (-.f64 (*.f64 d2 -1) 30) (*.f64 d1 -1))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 (-.f64 (*.f64 d2 -1) 30) (*.f64 d1 -1))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 (-.f64 (*.f64 d2 -1) 30) (*.f64 d1 -1))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 -30 d2)))
(*.f64 d1 (-.f64 d2 -30))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 30) d1))
(*.f64 (-.f64 (*.f64 d2 -1) 30) (*.f64 d1 -1))
(*.f64 (-.f64 (neg.f64 d2) 30) (neg.f64 d1))
(*.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) 1/2)))
(*.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 1/2) 15))
(*.f64 (+.f64 d1 d1) (*.f64 1/4 (+.f64 d2 (+.f64 d2 60))))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))) 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)) 1/4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 4 (*.f64 (/.f64 d1 8) (+.f64 d2 (+.f64 d2 60))))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (+.f64 d2 30) (*.f64 d1 4)) 1/4)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 4) (/.f64 (+.f64 d2 30) 4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 4) (*.f64 1/8 (+.f64 d2 (+.f64 d2 60))))
(*.f64 d1 (+.f64 d2 30))
(*.f64 8 (*.f64 (/.f64 d1 8) (+.f64 d2 30)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 d2 (+.f64 d2 60)) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 8) (*.f64 1/8 (+.f64 d2 30)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)
(*.f64 d1 (+.f64 d2 30))
(*.f64 1/2 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 1/2) (+.f64 d2 (+.f64 d2 60)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d2 d2) 60))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/16 (+.f64 d2 30)))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))
(*.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) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)
(*.f64 d1 (+.f64 d2 30))
(*.f64 (*.f64 d1 1/4) (*.f64 (+.f64 d2 30) 4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))
(*.f64 d1 (+.f64 d2 30))
(*.f64 (+.f64 (*.f64 d2 1/2) 15) (+.f64 d1 d1))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d2 1/2) 15))
(*.f64 (+.f64 (+.f64 d2 d2) 60) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 d1 (+.f64 d2 (+.f64 d2 60))) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)
(*.f64 d1 (+.f64 d2 30))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))))) 256)
(*.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.2b
(+.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))

rewrite217.0ms (4.9%)

Algorithm
batch-egg-rewrite
Rules
2478×rational.json-simplify-2
1554×rational.json-1
1470×rational.json-simplify-53
1200×rational.json-simplify-35
1116×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01038
16632
213226
328226
454826
5124626
6276426
7425526
8553126
9618126
10618126
11718726
12794226
Stop Event
node limit
Counts
2 → 82
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) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (+.f64 d1 d1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 d1 8)))))) (#(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 10 (*.f64 (+.f64 d2 10) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 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)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (/.f64 (+.f64 d2 30) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 4) (*.f64 1/2 (*.f64 (+.f64 d2 30) 1/2)))))) (#(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 8 (*.f64 (+.f64 d2 30) (/.f64 d1 8)))))) (#(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 (*.f64 d1 8) (*.f64 (+.f64 d2 30) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 8) (*.f64 1/4 (*.f64 (+.f64 d2 30) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2))))) (#(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 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 (*.f64 (+.f64 d2 10) 2) 40))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 4 (*.f64 (+.f64 d2 30) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 (+.f64 d2 30) 1/16))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/8 (*.f64 (+.f64 d2 30) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))))) (#(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 d1 1/4) (*.f64 (+.f64 d2 30) 4))))) (#(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 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 4)) (/.f64 d1 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 d2 30) (*.f64 d1 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 1/4) (*.f64 d1 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) (/.f64 d1 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 d1 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 2 (*.f64 d1 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 d1 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (/.f64 (+.f64 d2 30) 4)) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 (+.f64 d2 10) 2) 40)) (*.f64 d1 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 1/4)) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4)) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8)) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 (+.f64 d2 30) 1/8)) (*.f64 d1 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 (+.f64 d2 30) 1/16)) (*.f64 d1 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 30)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)))))
((#(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 d2 10) (*.f64 d1 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 d1 (+.f64 d2 10)) 1)))))

simplify457.0ms (10.4%)

Algorithm
egg-herbie
Rules
4078×rational.json-simplify-41
3224×rational.json-simplify-35
1754×rational.json-simplify-2
1576×rational.json-simplify-53
1342×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01801686
14341674
210651674
324111674
439701674
544651674
647061674
748871674
850671674
957111674
1065491674
1168561674
1268561674
1368561674
1470231674
1571901674
1673571674
1775241674
Stop Event
node limit
Counts
126 → 97
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) 1/2)))
(*.f64 2 (*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) d1))
(*.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) d1))
(*.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (+.f64 d1 d1)))
(*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/4)))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 d1 8)))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 30) 1/2))
(*.f64 (+.f64 d1 d1) (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)))
(*.f64 (+.f64 d1 d1) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 1/2)
(*.f64 (+.f64 d2 30) d1)
(*.f64 4 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4))
(*.f64 (*.f64 d1 4) (/.f64 (+.f64 d2 30) 4))
(*.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))
(*.f64 (*.f64 d1 4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8))
(*.f64 (*.f64 d1 4) (*.f64 1/2 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 1/4)
(*.f64 8 (*.f64 (+.f64 d2 30) (/.f64 d1 8)))
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 (*.f64 d1 8) (*.f64 (+.f64 d2 30) 1/8))
(*.f64 (*.f64 d1 8) (*.f64 1/4 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)
(*.f64 1/2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2))
(*.f64 1/2 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 (*.f64 d1 1/2) (+.f64 (*.f64 (+.f64 d2 10) 2) 40))
(*.f64 (*.f64 d1 1/2) (*.f64 4 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 (+.f64 d2 30) 1/16))
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/8 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)))
(*.f64 (*.f64 d1 1/4) (*.f64 (+.f64 d2 30) 4))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)
(*.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 4)) (/.f64 d1 8))
(*.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))
(*.f64 1/8 (*.f64 (+.f64 d2 30) (*.f64 d1 8)))
(*.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))
(*.f64 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))) 1/2)
(*.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/2))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))
(*.f64 (*.f64 (+.f64 d2 30) 1/4) (*.f64 d1 4))
(*.f64 (*.f64 (+.f64 d2 30) (/.f64 d1 8)) 8)
(*.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 d1 8))
(*.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 2 (*.f64 d1 8)))
(*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (+.f64 d1 d1))
(*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 d1 4))
(*.f64 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))) d1)
(*.f64 (*.f64 2 (/.f64 (+.f64 d2 30) 4)) (+.f64 d1 d1))
(*.f64 (*.f64 2 (+.f64 (*.f64 (+.f64 d2 10) 2) 40)) (*.f64 d1 1/4))
(*.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 1/4)) (+.f64 d1 d1))
(*.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4)) d1)
(*.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8)) (+.f64 d1 d1))
(*.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 (+.f64 d2 30) 1/8)) (*.f64 d1 4))
(*.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 (+.f64 d2 30) 1/16)) (*.f64 d1 8))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)
(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 d2 10) (*.f64 d1 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))))) 128)
(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) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) d1))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (*.f64 d1 2))
(*.f64 d1 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))
(*.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (+.f64 d1 d1)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/4)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 d1 8)))
(*.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 10 (*.f64 (+.f64 d2 10) 1/2)))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (*.f64 d1 2))
(*.f64 d1 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))
(*.f64 (+.f64 d1 d1) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 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)) 1/4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 4) (/.f64 (+.f64 d2 30) 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 4) (*.f64 (+.f64 d2 30) 1/4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 4) (*.f64 1/2 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)) 1/4)
(*.f64 d1 (+.f64 30 d2))
(*.f64 8 (*.f64 (+.f64 d2 30) (/.f64 d1 8)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (+.f64 d2 30)) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 8) (*.f64 (+.f64 d2 30) 1/8))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 8) (*.f64 1/4 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8) 1/8)
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2))
(*.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 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/2) (+.f64 (*.f64 (+.f64 d2 10) 2) 40))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/2) (*.f64 4 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 30) 1/2)) 2)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 (+.f64 d2 30) 1/16))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (*.f64 d1 8)) (*.f64 1/8 (*.f64 (+.f64 d2 30) 1/2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) 4) (*.f64 d1 1/4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 30) 4)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 1/4) (*.f64 (+.f64 d2 30) 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 1/4) 4)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 4)) (/.f64 d1 8))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/8 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1/8 (*.f64 (+.f64 d2 30) (*.f64 d1 8)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (/.f64 (+.f64 d2 30) 4) (*.f64 d1 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 d1 40) (*.f64 (+.f64 d2 10) (+.f64 d1 d1))) 1/2)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 (+.f64 d2 10) 2) 40) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (*.f64 d1 2))
(*.f64 d1 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))))
(*.f64 (*.f64 (+.f64 d2 30) 1/4) (*.f64 d1 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) (/.f64 d1 8)) 8)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 d1 8))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 2 (*.f64 d1 8)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 d1 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))) d1)
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (*.f64 d1 2))
(*.f64 d1 (*.f64 2 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2))))
(*.f64 (+.f64 10 (*.f64 (+.f64 d2 10) 1/2)) (+.f64 d1 d1))
(*.f64 (*.f64 2 (/.f64 (+.f64 d2 30) 4)) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (+.f64 (*.f64 (+.f64 d2 10) 2) 40)) (*.f64 d1 1/4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 2 (*.f64 (+.f64 d2 30) 1/4)) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/4)) d1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8) (*.f64 (*.f64 2 (+.f64 d2 30)) 1/8)) (+.f64 d1 d1))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/8) (*.f64 (+.f64 d2 30) 1/8)) (*.f64 d1 4))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (+.f64 (*.f64 (+.f64 d2 30) 1/16) (*.f64 (+.f64 d2 30) 1/16)) (*.f64 d1 8))
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 30)) 2) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8)))) 64)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 30)) 8))))) 128)
(*.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 d2 10) (*.f64 d1 8)) 8)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))) 16)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))) 32)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8))))) 64)
(*.f64 d1 (+.f64 d2 10))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 d2 10) (*.f64 d1 8)))))) 128)
(*.f64 d1 (+.f64 d2 10))
(pow.f64 (*.f64 d1 (+.f64 d2 10)) 1)
(*.f64 d1 (+.f64 d2 10))

eval227.0ms (5.2%)

Compiler

Compiled 1679 to 1251 computations (25.5% saved)

prune18.0ms (0.4%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1702172
Fresh000
Picked011
Done022
Total1705175
Error
0.0b
Counts
175 → 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))
37.1b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
25.8b
(*.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))
37.1b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d2 30))
25.8b
(*.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))
5.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)

regimes23.0ms (0.5%)

Accuracy

Total -59.7b remaining (-3743%)

Threshold costs -59.7b (-3743%)

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:

14.0ms
d1
9.0ms
d2
Results
ErrorSegmentsBranch
20.7b5d1
1.6b3d2
Compiler

Compiled 14 to 9 computations (35.7% saved)

bsearch30.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
6.54190710957911e-6
11102.452729925726
15.0ms
-5543639709.049421
-18.210895457686018
Results
27.0ms288×body256valid
Compiler

Compiled 234 to 175 computations (25.2% 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.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)

end21.0ms (0.5%)

Compiler

Compiled 27 to 16 computations (40.7% saved)

Profiling

Loading profile data...