Details

Time bar (total: 7.1s)

analyze324.0ms (4.5%)

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)

sample3.5s (49.5%)

Results
3.5s8256×body256valid
39.0ms476×body256infinite
Bogosity

preprocess149.0ms (2.1%)

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)

simplify132.0ms (1.9%)

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)

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

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.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
@-inf
(+.f64 (*.f64 x x) (*.f64 x y))

rewrite63.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
2020×rational.json-simplify-35
1146×rational.json-1
1146×rational.json-2
1146×rational.json-4
1146×rational.json-3
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0944
16132
213632
332532
4118632
5397132
Stop Event
node limit
Counts
2 → 37
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 x (*.f64 2 (+.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 x (*.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 x 2) (*.f64 2 (+.f64 x y)))))) (#(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 x (*.f64 2 (+.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 /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x y)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (*.f64 x (+.f64 x (+.f64 y 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 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 (+.f64 y 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 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 (*.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 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)))))

simplify112.0ms (1.6%)

Algorithm
egg-herbie
Rules
936×rational.json-simplify-59
934×rational.json-simplify-51
898×rational.json-simplify-41
874×rational.json-simplify-2
830×rational.json-simplify-19
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0751681
11581573
24071483
314321483
432721483
560341483
674891483
Stop Event
node limit
Counts
85 → 53
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 x (*.f64 2 (+.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 x (*.f64 2 (+.f64 x y))))
(*.f64 (/.f64 (*.f64 x (+.f64 x y)) 2) 2)
(*.f64 (/.f64 x 2) (*.f64 2 (+.f64 x y)))
(*.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 x (*.f64 2 (+.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 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 32)
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(+.f64 (*.f64 x x) (*.f64 x (+.f64 x (+.f64 y 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 x (*.f64 2 (+.f64 x y))) 0)
(+.f64 0 (*.f64 x (*.f64 2 (+.f64 x y))))
(+.f64 (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x x))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
(-.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(/.f64 (*.f64 x (*.f64 2 (+.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 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)))) 32)
(pow.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)
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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 x 2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 x 2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 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 y (*.f64 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 y (*.f64 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 y (*.f64 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 x (*.f64 2 (+.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 x (*.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 x 2) (*.f64 2 (+.f64 x y)))
(*.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 x (*.f64 2 (+.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 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 32)
(*.f64 x (+.f64 y x))
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(+.f64 (*.f64 x x) (*.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 x (+.f64 x y))))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 0 (*.f64 x (*.f64 2 (+.f64 x y))))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x x))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 x (+.f64 x y))) (*.f64 x y))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(-.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 0)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 4) 2)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x y)) 8) 4)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)) 8)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) 16)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 8)))) 32)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(pow.f64 (*.f64 x (*.f64 2 (+.f64 x y))) 1)
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 x (*.f64 2 (+.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
@0
(*.f64 (+.f64 x y) (*.f64 x 2))
0.0ms
x
@-inf
(*.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))

rewrite121.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
1664×rational.json-simplify-35
1554×exponential.json-3
1554×rational.json-1
1554×rational.json-2
1554×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
15519
212419
325019
444719
5100219
6244019
7459319
8578519
9700919
Stop Event
node limit
Counts
1 → 14
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 (+.f64 x y) (*.f64 x 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)))))

simplify682.0ms (9.6%)

Algorithm
egg-herbie
Rules
3176×rational.json-simplify-35
2976×rational.json-simplify-2
1358×rational.json-simplify-53
958×rational.json-simplify-1
902×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
048902
1123794
2250794
3556794
41954794
54093794
65016794
75252794
85390794
95502794
105614794
116235794
126628794
136904794
147005794
157190794
167190794
177300794
187410794
197525794
207635794
217745794
Stop Event
node limit
Counts
38 → 21
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 (+.f64 x y) (*.f64 x 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))))) 256)
(pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
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 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x 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 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x 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 (*.f64 (+.f64 x y) (*.f64 x 4)) 2)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x 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 (*.f64 (*.f64 x (+.f64 x y)) 16) 8)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x 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 (*.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 (*.f64 2 (*.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 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) 128)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x y)) 16)))))) 256)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))
(pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(*.f64 x (*.f64 2 (+.f64 y x)))
(*.f64 (+.f64 y x) (+.f64 x x))

eval13.0ms (0.2%)

Compiler

Compiled 744 to 395 computations (46.9% saved)

prune9.0ms (0.1%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New71374
Fresh000
Picked011
Done011
Total71576
Error
0b
Counts
76 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
21.7b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
21.7b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 45 to 28 computations (37.8% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

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

rewrite289.0ms (4.1%)

Algorithm
batch-egg-rewrite
Rules
2570×rational.json-simplify-2
1730×rational.json-simplify-35
1394×rational.json-1
1394×rational.json-2
1122×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14813
211313
322013
437813
584313
6181513
7319213
8393213
9470913
10581513
11647413
12647413
13780513
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 y (*.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y 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 16 (*.f64 y x)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 y x))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 y x)) 1)))))

simplify515.0ms (7.2%)

Algorithm
egg-herbie
Rules
2986×rational.json-simplify-35
2158×rational.json-simplify-2
1058×rational.json-simplify-53
1030×rational.json-simplify-49
1028×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
051323
1139221
2288221
3758221
42759221
54584221
65379221
75668221
85857221
96018221
106819221
117018221
127165221
137281221
147290221
157290221
167440221
177707221
187988221
Stop Event
node limit
Counts
17 → 19
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(+.f64 0 (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 y (*.f64 x 3/2)))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 1/2)))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(/.f64 (*.f64 y (*.f64 x 8)) 4)
(/.f64 (*.f64 16 (*.f64 y x)) 8)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 y x))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))))) 512)
(pow.f64 (*.f64 2 (*.f64 y x)) 1)
Outputs
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(+.f64 0 (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 y (*.f64 x 3/2)))
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 1/2)))
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 y (*.f64 x 8)) 4)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 16 (*.f64 y x)) 8)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 16 (*.f64 y x))) 16)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))) 32)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))) 64)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))) 128)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x))))))) 256)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y x)))))))) 512)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))
(pow.f64 (*.f64 2 (*.f64 y x)) 1)
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 y (*.f64 x 2))

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 28 to 6 computations (78.6% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite116.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
1736×rational.json-1
1736×rational.json-2
1736×rational.json-3
1498×rational.json-simplify-35
1238×exponential.json-3
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0844
15544
212544
327132
460032
5160832
6373732
7550432
8744332
Stop Event
node limit
Counts
2 → 35
Calls
Call 1
Inputs
(+.f64 x (+.f64 x (+.f64 y y)))
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) 2) 0)))) (#(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 (+.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 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 x y) 2) 8) 1/8)))) (#(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) 1/2) 4)))) (#(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 (*.f64 (+.f64 x y) 2) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x y) 2) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) (+.f64 x x)))))) (#(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 y) (+.f64 x x)) 0)))) (#(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 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 16 (*.f64 x (+.f64 x y))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)))))

simplify501.0ms (7%)

Algorithm
egg-herbie
Rules
3952×rational.json-simplify-41
1962×rational.json-simplify-53
1822×rational.json-simplify-35
1538×rational.json-simplify-2
890×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0831685
11921337
24471337
315991337
432171337
538331337
639481337
740311337
841041337
941761337
1052741337
1158841337
1260251337
1360971337
1461691337
1562411337
1666151337
1766151337
1866151337
Stop Event
node limit
Counts
83 → 51
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 (+.f64 x y) 2) 0)
(*.f64 (*.f64 (+.f64 x y) 2) 1)
(*.f64 1 (*.f64 (+.f64 x y) 2))
(*.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 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))
(*.f64 (*.f64 (*.f64 (+.f64 x y) 2) 8) 1/8)
(*.f64 1/4 (*.f64 (+.f64 x y) 8))
(*.f64 (*.f64 (+.f64 x y) 1/2) 4)
(/.f64 (*.f64 (+.f64 x y) 2) 1)
(/.f64 (*.f64 (+.f64 x y) 4) 2)
(/.f64 (*.f64 (+.f64 x y) 8) 4)
(/.f64 (*.f64 (*.f64 (+.f64 x y) 2) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))))) 128)
(pow.f64 (*.f64 (+.f64 x y) 2) 1)
(+.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)
(+.f64 0 (*.f64 (+.f64 x y) (+.f64 x x)))
(+.f64 (*.f64 x (+.f64 x y)) (*.f64 x (+.f64 x y)))
(-.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 0)
(/.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(/.f64 (*.f64 4 (*.f64 x (+.f64 x y))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 8)) 4)
(/.f64 (*.f64 16 (*.f64 x (+.f64 x y))) 8)
(/.f64 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))) 16)
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 128)
(pow.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
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 2 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 2 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 2 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 (+.f64 x y) 2) 0)
(+.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 (+.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 1/2 (+.f64 (*.f64 x 4) (*.f64 y 4)))
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(*.f64 (*.f64 (*.f64 (+.f64 x y) 2) 8) 1/8)
(+.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) 1/2) 4)
(+.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 (*.f64 (+.f64 x y) 2) 8) 8)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)) 16)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))) 32)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) 64)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x y) 2) 8))))) 128)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y x))
(pow.f64 (*.f64 (+.f64 x y) 2) 1)
(+.f64 (*.f64 2 y) (*.f64 2 x))
(*.f64 2 (+.f64 y 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 0 (*.f64 (+.f64 x y) (+.f64 x 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 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y 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 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 4 (*.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) 8)) 4)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 16 (*.f64 x (+.f64 x y))) 8)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))) 16)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))) 32)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) 64)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8))))) (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 (+.f64 x y) 8)))))) 128)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))
(pow.f64 (*.f64 (+.f64 x y) (+.f64 x x)) 1)
(*.f64 (+.f64 y x) (+.f64 x x))
(*.f64 2 (*.f64 x (+.f64 y x)))

localize5.0ms (0.1%)

Compiler

Compiled 12 to 4 computations (66.7% saved)

eval12.0ms (0.2%)

Compiler

Compiled 686 to 408 computations (40.5% saved)

prune83.0ms (1.2%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New69170
Fresh000
Picked011
Done134
Total70575
Error
0b
Counts
75 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
21.7b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
33.7b
(*.f64 x (+.f64 x x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 45 to 27 computations (40% saved)

localize4.0ms (0.1%)

Compiler

Compiled 11 to 4 computations (63.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done044
Total055
Error
0b
Counts
5 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (+.f64 x y) (*.f64 x 2))
21.7b
(*.f64 y (+.f64 x x))
0.0b
(*.f64 x (+.f64 x (+.f64 x (+.f64 y y))))
33.7b
(*.f64 x (+.f64 x x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 45 to 27 computations (40% saved)

regimes20.0ms (0.3%)

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

4 calls:

5.0ms
y
4.0ms
x
4.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 68 to 37 computations (45.6% saved)

regimes65.0ms (0.9%)

Accuracy

Total -48.3b remaining (-749%)

Threshold costs -48.3b (-749%)

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

2 calls:

55.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
10.8b3x
6.4b3y
Compiler

Compiled 23 to 12 computations (47.8% saved)

bsearch26.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
1.083908027725365e-34
3.872972578518965e-29
11.0ms
-1.5209720977729215e-46
-6.502615982993093e-48
Results
23.0ms256×body256valid
Compiler

Compiled 272 to 187 computations (31.3% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02189
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (*.f64 x 2))
(if (<=.f64 y -1666073364287721/102844034832575377634685573909834406561420991602098741459288064) (*.f64 2 (*.f64 y x)) (if (<=.f64 y 2319277500647185/89202980794122492566142873090593446023921664) (*.f64 x (+.f64 x x)) (*.f64 2 (*.f64 y x))))
(*.f64 2 (*.f64 y x))
Outputs
(*.f64 (+.f64 x y) (*.f64 x 2))
(if (<=.f64 y -1666073364287721/102844034832575377634685573909834406561420991602098741459288064) (*.f64 2 (*.f64 y x)) (if (<=.f64 y 2319277500647185/89202980794122492566142873090593446023921664) (*.f64 x (+.f64 x x)) (*.f64 2 (*.f64 y x))))
(*.f64 2 (*.f64 y x))
Compiler

Compiled 41 to 26 computations (36.6% saved)

soundness227.0ms (3.2%)

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
Compiler

Compiled 48 to 25 computations (47.9% saved)

end83.0ms (1.2%)

Compiler

Compiled 37 to 21 computations (43.2% saved)

Profiling

Loading profile data...