Details

Time bar (total: 7.1s)

analyze433.0ms (6.1%)

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
28.6%25%62.4%0.1%12.5%0%0%6
42.9%37.5%50%0.1%12.5%0%0%7
55.6%46.8%37.5%0.1%15.6%0%0%8
63.6%53.1%30.4%0.1%16.4%0%0%9
73.9%58.5%20.7%0.1%20.7%0%0%10
79.3%62%16.2%0.1%21.7%0%0%11
85.7%65%10.8%0.1%24.1%0%0%12
Compiler

Compiled 12 to 8 computations (33.3% saved)

sample1.4s (19.9%)

Results
1.3s8256×body256valid
106.0ms478×body256infinite
Bogosity

preprocess144.0ms (2%)

Algorithm
egg-herbie
Rules
1106×rational.json-simplify-2
918×rational.json-simplify-44
904×rational.json-simplify-37
824×rational.json-simplify-47
824×rational.json-simplify-39
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01350
12238
23638
37738
438438
5395438
6624838
7732238
8798038
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (+.f64 (*.f64 y y) (*.f64 y x)))
Outputs
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 (+.f64 x y) (*.f64 x 2))
(*.f64 2 (+.f64 (*.f64 y y) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y y) (*.f64 x y)))
(*.f64 2 (*.f64 y (+.f64 y x)))
(*.f64 2 (*.f64 y (+.f64 x y)))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify127.0ms (1.8%)

Algorithm
egg-herbie
Rules
1814×rational.json-simplify-35
1346×rational.json-simplify-53
1020×rational.json-simplify-39
866×rational.json-simplify-59
654×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
11419
22219
34319
419819
5198119
6596819
7784519
Stop Event
node limit
Counts
1 → 5
Calls
Call 1
Inputs
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Outputs
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 (+.f64 x y) (*.f64 x 2))
(*.f64 (+.f64 x y) (*.f64 2 x))

eval1.0ms (0%)

Compiler

Compiled 39 to 21 computations (46.2% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New325
Fresh011
Picked000
Done000
Total336
Error
0.0b
Counts
6 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 20 to 13 computations (35% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series4.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite74.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1726×bool.json-1
1726×bool.json-2
1698×rational.json-1
1330×bool.json-3
852×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0944
19132
225132
357532
4180332
5571932
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 x y))
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (*.f64 x (+.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x y)) (/.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x x) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 2) (*.f64 2 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (*.f64 x (+.f64 y (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 x (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x x) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y (+.f64 x y))) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x x) (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x x) (+.f64 x y)) (*.f64 (+.f64 x x) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x x) (+.f64 x y)) (*.f64 (+.f64 x x) (+.f64 x y)))))))

simplify136.0ms (1.9%)

Algorithm
egg-herbie
Rules
1278×rational.json-simplify-2
1178×rational.json-simplify-41
916×rational.json-simplify-61
734×rational.json-simplify-50
682×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0691605
11401419
23401419
311041419
423681419
556901419
664091419
772021419
Stop Event
node limit
Counts
81 → 48
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(-.f64 (*.f64 x (+.f64 x y)) 0)
(*.f64 x (+.f64 x y))
(*.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 2 (/.f64 (*.f64 x (+.f64 x y)) 2))
(*.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1/2)
(*.f64 1 (*.f64 x (+.f64 x y)))
(*.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 1/4)
(*.f64 (+.f64 x y) x)
(*.f64 4 (/.f64 (*.f64 x (+.f64 x y)) 4))
(*.f64 (*.f64 2 (+.f64 x y)) (/.f64 x 2))
(*.f64 1/2 (*.f64 (+.f64 x x) (+.f64 x y)))
(*.f64 (/.f64 x 2) (*.f64 2 (+.f64 x y)))
(*.f64 (/.f64 (*.f64 x (+.f64 x y)) 2) 2)
(*.f64 (/.f64 (*.f64 x (+.f64 x y)) 4) 4)
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 x y)) 4))
(/.f64 (*.f64 x (+.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 16)
(+.f64 (*.f64 x x) (*.f64 x (+.f64 y (+.f64 x y))))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 x (+.f64 x y))))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(+.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)
(+.f64 0 (*.f64 (+.f64 x x) (+.f64 x y)))
(+.f64 (*.f64 x (+.f64 y (+.f64 x y))) (*.f64 x x))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
(-.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)
(/.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1)
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 y x)
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(+.f64 (*.f64 y x) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 (*.f64 y x) 2) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(-.f64 (*.f64 x (+.f64 x y)) 0)
(*.f64 x (+.f64 y x))
(*.f64 x (+.f64 x y))
(*.f64 x (+.f64 y x))
(*.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(*.f64 2 (/.f64 (*.f64 x (+.f64 x y)) 2))
(*.f64 x (+.f64 y x))
(*.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1/2)
(*.f64 x (+.f64 y x))
(*.f64 1 (*.f64 x (+.f64 x y)))
(*.f64 x (+.f64 y x))
(*.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 1/4)
(*.f64 x (+.f64 y x))
(*.f64 (+.f64 x y) x)
(*.f64 x (+.f64 y x))
(*.f64 4 (/.f64 (*.f64 x (+.f64 x y)) 4))
(*.f64 x (+.f64 y x))
(*.f64 (*.f64 2 (+.f64 x y)) (/.f64 x 2))
(*.f64 x (+.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x x) (+.f64 x y)))
(*.f64 x (+.f64 y x))
(*.f64 (/.f64 x 2) (*.f64 2 (+.f64 x y)))
(*.f64 x (+.f64 y x))
(*.f64 (/.f64 (*.f64 x (+.f64 x y)) 2) 2)
(*.f64 x (+.f64 y x))
(*.f64 (/.f64 (*.f64 x (+.f64 x y)) 4) 4)
(*.f64 x (+.f64 y x))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 x y)) 4))
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 2)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 4)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 8)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 16)
(*.f64 x (+.f64 y x))
(+.f64 (*.f64 x x) (*.f64 x (+.f64 y (+.f64 x y))))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 x (+.f64 x y))))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 0 (*.f64 (+.f64 x x) (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 y (+.f64 x y))) (*.f64 x x))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(-.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 0)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (+.f64 x x) (+.f64 x y)) 1)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 2)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 4)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 8)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(*.f64 2 (*.f64 x (+.f64 y x)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite155.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
1920×bool.json-1
1920×bool.json-2
1144×rational.json-simplify-35
1112×rational.json-1
1112×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18219
223019
347919
494219
5205519
6430419
7727419
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (*.f64 x 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (*.f64 x 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x y)) 16) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 (+.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 (+.f64 x y) 2)) (*.f64 x (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 (+.f64 x y) 2)) (*.f64 x (*.f64 (+.f64 x y) 2)))))))

simplify967.0ms (13.6%)

Algorithm
egg-herbie
Rules
8440×rational.json-simplify-41
4134×rational.json-simplify-35
2538×rational.json-simplify-2
1266×rational.json-simplify-53
832×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
041845
199737
2202737
3450737
41557737
52944737
63743737
73934737
84066737
94174737
104281737
114700737
124971737
135271737
145374737
155573737
165573737
175680737
185787737
195894737
206001737
216108737
226215737
236462737
246604737
256732737
266839737
276946737
286946737
Stop Event
node limit
Counts
35 → 19
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 8)) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 16) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))) 64)
Outputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 8)) 4)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 16) 8)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)) 16)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) 32)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))) 64)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))

eval10.0ms (0.1%)

Compiler

Compiled 643 to 306 computations (52.4% saved)

prune10.0ms (0.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New63467
Fresh000
Picked011
Done011
Total63669
Error
0b
Counts
69 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
22.4b
(*.f64 (*.f64 y x) 2)
22.4b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 58 to 35 computations (39.7% saved)

localize7.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 28 to 6 computations (78.6% saved)

series3.0ms (0%)

Counts
3 → 72
Calls

18 calls:

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

rewrite106.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
1432×rational.json-simplify-35
1416×bool.json-1
1416×bool.json-2
1382×rational.json-1
1382×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0857
18357
223145
349045
4112145
5270945
6555445
Stop Event
node limit
Counts
3 → 47
Calls
Call 1
Inputs
(+.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y (+.f64 y x))))
(+.f64 y (+.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 8) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x y) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x y) 2) (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x y) 2) (*.f64 (+.f64 x y) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (*.f64 x 4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 (+.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 (+.f64 x y) 2)) (*.f64 x (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 (+.f64 x y) 2)) (*.f64 x (*.f64 (+.f64 x y) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 y y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 y (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (+.f64 y y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (+.f64 y y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 x 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (+.f64 y y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 y y)) (+.f64 x (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 y y)) (+.f64 x (+.f64 y y)))))))

simplify479.0ms (6.7%)

Algorithm
egg-herbie
Rules
4658×rational.json-simplify-2
2984×rational.json-simplify-53
2284×rational.json-simplify-35
988×rational.json-simplify-1
762×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01022111
12191787
24911787
314811787
430631787
535791787
637091787
738141787
839071787
940001787
1050481787
1151411787
1252341787
1353271787
1453271787
1554201787
1665061787
1776901787
Stop Event
node limit
Counts
119 → 67
Calls
Call 1
Inputs
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(-.f64 (*.f64 (+.f64 x y) 2) 0)
(*.f64 (+.f64 x y) 2)
(*.f64 (*.f64 (+.f64 x y) 2) 1)
(*.f64 1 (*.f64 (+.f64 x y) 2))
(*.f64 2 (+.f64 x y))
(*.f64 (*.f64 (+.f64 x y) 4) 1/2)
(*.f64 4 (*.f64 (+.f64 x y) 1/2))
(*.f64 (*.f64 (+.f64 x y) 8) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x y) 4))
(*.f64 (*.f64 (+.f64 x y) 1/2) 4)
(*.f64 1/4 (*.f64 (+.f64 x y) 8))
(/.f64 (*.f64 (+.f64 x y) 2) 1)
(/.f64 (*.f64 (+.f64 x y) 4) 2)
(/.f64 (*.f64 (+.f64 x y) 8) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))))) 64)
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 4)) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 64)
(-.f64 (+.f64 x (+.f64 y y)) 0)
(*.f64 (+.f64 x (+.f64 y y)) 1)
(*.f64 1 (+.f64 x (+.f64 y y)))
(*.f64 2 (+.f64 y (*.f64 x 1/2)))
(*.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 1/2)
(*.f64 4 (/.f64 (+.f64 x (+.f64 y y)) 4))
(*.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 1/4)
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 y y)) 4))
(*.f64 (+.f64 y (*.f64 x 1/2)) 2)
(*.f64 (/.f64 (+.f64 x (+.f64 y y)) 4) 4)
(/.f64 (+.f64 x (+.f64 y y)) 1)
(/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))))) 64)
Outputs
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
x
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(+.f64 (*.f64 2 y) x)
(-.f64 (*.f64 (+.f64 x y) 2) 0)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (+.f64 x y) 2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 2) 1)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1 (*.f64 (+.f64 x y) 2))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (+.f64 x y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 4) 1/2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 4 (*.f64 (+.f64 x y) 1/2))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 8) 1/4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x y) 4))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/2) 4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 x y) 8))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 2) 1)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 4) 2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 8) 4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))))) 64)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 4)) 2)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 64)
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(-.f64 (+.f64 x (+.f64 y y)) 0)
(+.f64 y (+.f64 y x))
(*.f64 (+.f64 x (+.f64 y y)) 1)
(+.f64 y (+.f64 y x))
(*.f64 1 (+.f64 x (+.f64 y y)))
(+.f64 y (+.f64 y x))
(*.f64 2 (+.f64 y (*.f64 x 1/2)))
(*.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 1/2)
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/2 (+.f64 (*.f64 y 4) (+.f64 x x)))
(*.f64 4 (/.f64 (+.f64 x (+.f64 y y)) 4))
(+.f64 y (+.f64 y x))
(*.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 1/4)
(+.f64 y (+.f64 y x))
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/2 (+.f64 (*.f64 y 4) (+.f64 x x)))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 y y)) 4))
(+.f64 y (+.f64 y x))
(*.f64 (+.f64 y (*.f64 x 1/2)) 2)
(*.f64 2 (+.f64 y (*.f64 x 1/2)))
(*.f64 (/.f64 (+.f64 x (+.f64 y y)) 4) 4)
(+.f64 y (+.f64 y x))
(/.f64 (+.f64 x (+.f64 y y)) 1)
(+.f64 y (+.f64 y x))
(/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2)
(/.f64 (+.f64 (*.f64 y 4) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 y y)) 4) 4)
(+.f64 y (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)) 8)
(+.f64 y (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))) 16)
(+.f64 y (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) 32)
(+.f64 y (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 y y)) 4))))) 64)
(+.f64 y (+.f64 y x))

localize4.0ms (0.1%)

Compiler

Compiled 12 to 4 computations (66.7% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite92.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1552×bool.json-1
1552×bool.json-2
1510×rational.json-1
1510×rational.json-2
1510×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

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

simplify1.4s (19.5%)

Algorithm
egg-herbie
Rules
8232×rational.json-simplify-41
3880×rational.json-simplify-35
2792×rational.json-simplify-2
1618×rational.json-simplify-53
766×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
035455
188455
2177455
3402455
41278455
52288455
63059455
73171455
83257455
93340455
103421455
113502455
124068455
134418455
144655455
154831455
164912455
174993455
184993455
194993455
205074455
215309455
225461455
235564455
245660455
255748455
265829455
275910455
285991455
296072455
306153455
316234455
326516455
336597455
346678455
356678455
Stop Event
node limit
Counts
35 → 12
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y x))
(+.f64 (*.f64 y (+.f64 x x)) 0)
(+.f64 0 (*.f64 y (+.f64 x x)))
(-.f64 (*.f64 y (+.f64 x x)) 0)
(/.f64 (*.f64 y (+.f64 x x)) 1)
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(/.f64 (*.f64 y (*.f64 x 8)) 4)
(/.f64 (*.f64 2 (*.f64 y (*.f64 x 8))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8)))))) 64)
Outputs
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 y (+.f64 x x)) 0)
(*.f64 2 (*.f64 y x))
(+.f64 0 (*.f64 y (+.f64 x x)))
(*.f64 2 (*.f64 y x))
(-.f64 (*.f64 y (+.f64 x x)) 0)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 y (+.f64 x x)) 1)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x 8)) 4)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 y (*.f64 x 8))) 8)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8)))) 16)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8))))) 32)
(*.f64 2 (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 x 8)))))) 64)
(*.f64 2 (*.f64 y x))

localize26.0ms (0.4%)

Local error

Found 3 expressions with local error:

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

Compiled 33 to 7 computations (78.8% saved)

series2.0ms (0%)

Counts
3 → 72
Calls

18 calls:

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

rewrite131.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
1474×rational.json-simplify-35
1380×bool.json-1
1380×bool.json-2
1356×rational.json-1
1356×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0963
19157
224251
353251
4115651
5271651
6540151
Stop Event
node limit
Counts
3 → 59
Calls
Call 1
Inputs
(+.f64 x (+.f64 x y))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
(*.f64 x (+.f64 x (+.f64 x y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 x y)) (+.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 x y)) (+.f64 x (+.f64 x y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (+.f64 x y) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 x (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 (+.f64 x y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 4) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 (+.f64 x y) 4) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 4) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (+.f64 x y) 4)) (*.f64 1/4 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/4 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 (+.f64 x y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 (+.f64 x y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 x y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 x y) 1/2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 8 (*.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x y) (+.f64 x x)) (*.f64 (+.f64 x y) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x y) (+.f64 x x)) (*.f64 (+.f64 x y) (+.f64 x x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x (*.f64 y 1/2))) (*.f64 x (+.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x (+.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y (+.f64 y (*.f64 x 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x (+.f64 x (+.f64 x y))))))))

simplify346.0ms (4.9%)

Algorithm
egg-herbie
Rules
5734×rational.json-simplify-41
2372×rational.json-simplify-35
1832×rational.json-simplify-2
1266×rational.json-simplify-53
854×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01242453
12752327
26072327
315882327
434862327
539772327
641332327
742502327
843632327
944752327
1056582327
1157712327
1258832327
1358832327
1459952327
Stop Event
node limit
Counts
131 → 83
Calls
Call 1
Inputs
y
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
y
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
y
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(+.f64 (*.f64 2 x) y)
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(-.f64 (+.f64 x (+.f64 x y)) 0)
(*.f64 (+.f64 x (+.f64 x y)) 1)
(*.f64 1 (+.f64 x (+.f64 x y)))
(*.f64 2 (+.f64 x (*.f64 y 1/2)))
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)
(*.f64 4 (/.f64 (+.f64 x (+.f64 x y)) 4))
(*.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 1/4)
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))
(*.f64 (+.f64 x (*.f64 y 1/2)) 2)
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x y)) 4))
(*.f64 (/.f64 (+.f64 x (+.f64 x y)) 4) 4)
(/.f64 (+.f64 x (+.f64 x y)) 1)
(/.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))))) 64)
(-.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)
(*.f64 x (*.f64 (+.f64 x y) 2))
(*.f64 (+.f64 x y) (+.f64 x x))
(*.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(*.f64 1 (*.f64 (+.f64 x y) (+.f64 x x)))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 1/2)
(*.f64 (+.f64 x x) (+.f64 x y))
(*.f64 (*.f64 (+.f64 x y) 2) x)
(*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 1/2)))
(*.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 1/4)
(*.f64 (*.f64 x 4) (*.f64 (+.f64 x y) 1/2))
(*.f64 (*.f64 (+.f64 x y) 4) (*.f64 x 1/2))
(*.f64 8 (*.f64 (/.f64 (+.f64 x y) 4) x))
(*.f64 8 (*.f64 (/.f64 x 4) (+.f64 x y)))
(*.f64 (*.f64 2 (*.f64 (+.f64 x y) 4)) (*.f64 1/4 x))
(*.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/4 (+.f64 x y)))
(*.f64 1/2 (*.f64 x (*.f64 (+.f64 x y) 4)))
(*.f64 (*.f64 x 1/2) (*.f64 (+.f64 x y) 4))
(*.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 x 4))
(*.f64 (*.f64 x (+.f64 x y)) 2)
(*.f64 (*.f64 x (*.f64 (+.f64 x y) 1/2)) 4)
(*.f64 1/4 (*.f64 8 (*.f64 x (+.f64 x y))))
(/.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)
(/.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 4)
(/.f64 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))))) 64)
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)
(+.f64 0 (*.f64 x (+.f64 x (+.f64 x y))))
(+.f64 (*.f64 x (+.f64 x (*.f64 y 1/2))) (*.f64 x (+.f64 x (*.f64 y 1/2))))
(-.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)
(/.f64 (*.f64 x (+.f64 x (+.f64 x y))) 1)
(/.f64 (*.f64 x (+.f64 y (+.f64 y (*.f64 x 4)))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))))) 64)
Outputs
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 2 x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(*.f64 y x)
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 2 (pow.f64 x 2)))
(-.f64 (+.f64 x (+.f64 x y)) 0)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 (+.f64 x (+.f64 x y)) 1)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 1 (+.f64 x (+.f64 x y)))
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 2 (+.f64 x (*.f64 y 1/2)))
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 4 (/.f64 (+.f64 x (+.f64 x y)) 4))
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 1/4)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 (+.f64 x (*.f64 y 1/2)) 2)
(*.f64 2 (+.f64 x (*.f64 y 1/2)))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x y)) 4))
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (+.f64 x y)) 4) 4)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (+.f64 x (+.f64 x y)) 1)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 2)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 4)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)) 8)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))) 16)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) 32)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))))) 64)
(+.f64 y (*.f64 2 x))
(+.f64 y (+.f64 x x))
(-.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 x (*.f64 (+.f64 x y) 2))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (+.f64 x y) (+.f64 x x))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 1 (*.f64 (+.f64 x y) (+.f64 x x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 1/2)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (+.f64 x x) (+.f64 x y))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 (+.f64 x y) 2) x)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 1/4)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 x 4) (*.f64 (+.f64 x y) 1/2))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 (+.f64 x y) 4) (*.f64 x 1/2))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 8 (*.f64 (/.f64 (+.f64 x y) 4) x))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 8 (*.f64 (/.f64 x 4) (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 2 (*.f64 (+.f64 x y) 4)) (*.f64 1/4 x))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/4 (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 1/2 (*.f64 x (*.f64 (+.f64 x y) 4)))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 x 1/2) (*.f64 (+.f64 x y) 4))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 x 4))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 x (+.f64 x y)) 2)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 (*.f64 x (*.f64 (+.f64 x y) 1/2)) 4)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 1/4 (*.f64 8 (*.f64 x (+.f64 x y))))
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 4)) 2)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 8 (*.f64 x (+.f64 x y))) 4)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))) 8)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))) 16)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) 32)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 8 (*.f64 x (+.f64 x y))))))) 64)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(+.f64 0 (*.f64 x (+.f64 x (+.f64 x y))))
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(+.f64 (*.f64 x (+.f64 x (*.f64 y 1/2))) (*.f64 x (+.f64 x (*.f64 y 1/2))))
(*.f64 (+.f64 x (*.f64 y 1/2)) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 x (*.f64 y 1/2))))
(-.f64 (*.f64 x (+.f64 x (+.f64 x y))) 0)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 x (+.f64 x (+.f64 x y))) 1)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 x (+.f64 y (+.f64 y (*.f64 x 4)))) 2)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)) 4)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))) 8)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))) 16)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) 32)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 x 4)))))) 64)
(*.f64 x (+.f64 x (+.f64 y x)))
(*.f64 x (+.f64 y (+.f64 x x)))

eval88.0ms (1.2%)

Compiler

Compiled 1850 to 947 computations (48.8% saved)

prune23.0ms (0.3%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1602162
Fresh000
Picked101
Done235
Total1635168
Error
0b
Counts
168 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
22.4b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 (*.f64 2 y) x)))
31.4b
(*.f64 x (+.f64 x x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 45 to 28 computations (37.8% saved)

localize4.0ms (0.1%)

Compiler

Compiled 11 to 4 computations (63.6% saved)

localize13.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 29 to 17 computations (41.4% saved)

series1.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite77.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1494×bool.json-1
1494×bool.json-2
1454×rational.json-1
1454×rational.json-2
1454×rational.json-4
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0944
19244
224332
348532
4103732
5249532
6554632
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(+.f64 x (+.f64 (*.f64 2 y) x))
(*.f64 x (+.f64 x (+.f64 (*.f64 2 y) x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (+.f64 y (*.f64 x 1/2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (+.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (+.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (+.f64 x y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 8) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 4 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y 4) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x y) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x y) 2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 x y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 2 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 2 (+.f64 x y)) (*.f64 2 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 2 (+.f64 x y)) (*.f64 2 (+.f64 x y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 2 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (*.f64 x (+.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 2 (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 2 (+.f64 x y))) (*.f64 x (*.f64 2 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 2 (+.f64 x y))) (*.f64 x (*.f64 2 (+.f64 x y))))))))

simplify390.0ms (5.5%)

Algorithm
egg-herbie
Rules
4986×rational.json-simplify-41
3112×rational.json-simplify-2
1818×rational.json-simplify-53
1744×rational.json-simplify-35
724×rational.json-simplify-49
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0821647
11711293
23391293
38431293
422421293
530931293
632761293
733941293
834911293
935731293
1047031293
1147871293
1248671293
1349471293
1459311293
1560111293
1660111293
Stop Event
node limit
Counts
81 → 49
Calls
Call 1
Inputs
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(-.f64 (*.f64 2 (+.f64 x y)) 0)
(*.f64 2 (+.f64 x y))
(*.f64 2 (+.f64 (+.f64 y (*.f64 x 1/2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (+.f64 y (*.f64 x 1/2))))
(*.f64 2 (+.f64 (*.f64 y 1/2) (+.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 2 (+.f64 x y)) 1)
(*.f64 1 (*.f64 2 (+.f64 x y)))
(*.f64 (*.f64 4 (+.f64 x y)) 1/2)
(*.f64 4 (/.f64 (+.f64 x y) 2))
(*.f64 4 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))
(*.f64 (*.f64 (+.f64 x y) 8) 1/4)
(*.f64 1/2 (*.f64 4 (+.f64 x y)))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))
(*.f64 1/2 (+.f64 (*.f64 y 4) (*.f64 x 4)))
(*.f64 (+.f64 x y) 2)
(*.f64 1/4 (*.f64 (+.f64 x y) 8))
(*.f64 (/.f64 (+.f64 x y) 2) 4)
(/.f64 (*.f64 2 (+.f64 x y)) 1)
(/.f64 (*.f64 4 (+.f64 x y)) 2)
(/.f64 (*.f64 (+.f64 x y) 8) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)
(+.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(+.f64 0 (*.f64 x (*.f64 2 (+.f64 x y))))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(-.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(/.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)
(/.f64 (*.f64 4 (*.f64 x (+.f64 x y))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)
Outputs
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 y)
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 2 x) (*.f64 2 y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (+.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(-.f64 (*.f64 2 (+.f64 x y)) 0)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (+.f64 x y))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (+.f64 (+.f64 y (*.f64 x 1/2)) (*.f64 x 1/2)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (+.f64 (*.f64 x 1/2) (+.f64 y (*.f64 x 1/2))))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (+.f64 x (*.f64 y 1/2))))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 2 (+.f64 x y)) 1)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1 (*.f64 2 (+.f64 x y)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 4 (+.f64 x y)) 1/2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 4 (/.f64 (+.f64 x y) 2))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 4 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 8) 1/4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/2 (*.f64 4 (+.f64 x y)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 y 4) (*.f64 x 4)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (+.f64 x y) 2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 x y) 8))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (/.f64 (+.f64 x y) 2) 4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (+.f64 x y)) 1)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 4 (+.f64 x y)) 2)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) 8) 4)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x y) 8)) 8)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) 16)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x y) 8)))) 32)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(+.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 0 (*.f64 x (*.f64 2 (+.f64 x y))))
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(-.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 4 (*.f64 x (+.f64 x y))) 2)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))) 8)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) 16)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x y) 8))))) 32)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (*.f64 2 x))
(*.f64 2 (*.f64 x (+.f64 y x)))

eval11.0ms (0.1%)

Compiler

Compiled 473 to 281 computations (40.6% saved)

prune8.0ms (0.1%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New49049
Fresh000
Picked011
Done044
Total49554
Error
0b
Counts
54 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
22.4b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 (*.f64 2 y) x)))
31.4b
(*.f64 x (+.f64 x x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 45 to 28 computations (37.8% saved)

regimes22.0ms (0.3%)

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

4 calls:

7.0ms
y
5.0ms
x
5.0ms
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
4.0ms
(+.f64 (*.f64 x x) (*.f64 x y))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
0.0b1(+.f64 (*.f64 x x) (*.f64 x y))
Compiler

Compiled 88 to 45 computations (48.9% saved)

regimes19.0ms (0.3%)

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

4 calls:

5.0ms
x
4.0ms
y
4.0ms
(+.f64 (*.f64 x x) (*.f64 x y))
4.0ms
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
0.0b1(+.f64 (*.f64 x x) (*.f64 x y))
Compiler

Compiled 68 to 37 computations (45.6% saved)

regimes28.0ms (0.4%)

Accuracy

Total -46.3b remaining (-732.5%)

Threshold costs -46.3b (-732.5%)

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

2 calls:

15.0ms
y
11.0ms
x
Results
ErrorSegmentsBranch
11.4b3x
6.3b5y
Compiler

Compiled 23 to 12 computations (47.8% saved)

bsearch36.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
0.0ms
4.388258655951177e-62
4.575677811543141e-62
12.0ms
-1.1241299107270843e-89
-1.4330890743911046e-92
13.0ms
-1.8217346877212136e-29
-5.1767991099931475e-33
11.0ms
-1.5121228821375215e+43
-7.120863575786126e+40
Results
32.0ms368×body256valid
Compiler

Compiled 384 to 241 computations (37.2% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030158
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 x (+.f64 x (+.f64 (*.f64 2 y) x)))
(*.f64 (+.f64 x y) (*.f64 x 2))
(if (<=.f64 y -71999999999999999285837437599316382318592) (*.f64 y (+.f64 x x)) (if (<=.f64 y -1248841731117715/713623846352979940529142984724747568191373312) (*.f64 x (+.f64 x x)) (if (<=.f64 y -8485944879163265/4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109248) (*.f64 y (+.f64 x x)) (if (<=.f64 y 5210644015679229/115792089237316195423570985008687907853269984665640564039457584007913129639936) (*.f64 x (+.f64 x x)) (*.f64 y (+.f64 x x))))))
(*.f64 x (+.f64 x x))
Outputs
(*.f64 x (+.f64 x (+.f64 (*.f64 2 y) x)))
(*.f64 (+.f64 x y) (*.f64 x 2))
(if (<=.f64 y -71999999999999999285837437599316382318592) (*.f64 y (+.f64 x x)) (if (<=.f64 y -1248841731117715/713623846352979940529142984724747568191373312) (*.f64 x (+.f64 x x)) (if (<=.f64 y -8485944879163265/4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109248) (*.f64 y (+.f64 x x)) (if (<=.f64 y 5210644015679229/115792089237316195423570985008687907853269984665640564039457584007913129639936) (*.f64 x (+.f64 x x)) (*.f64 y (+.f64 x x))))))
(*.f64 x (+.f64 x x))
Compiler

Compiled 70 to 34 computations (51.4% saved)

soundness220.0ms (3.1%)

Algorithm
egg-herbie
Rules
1278×rational.json-simplify-2
1178×rational.json-simplify-41
916×rational.json-simplify-61
734×rational.json-simplify-50
682×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0691605
11401419
23401419
311041419
423681419
556901419
664091419
772021419
Stop Event
node limit
Compiler

Compiled 42 to 14 computations (66.7% saved)

end97.0ms (1.4%)

Compiler

Compiled 64 to 26 computations (59.4% saved)

Profiling

Loading profile data...