Details

Time bar (total: 1.9s)

analyze64.0ms (3.4%)

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.3s (68%)

Results
1.2s8256×body256valid
41.0ms460×body256infinite
Bogosity

preprocess19.0ms (1%)

Algorithm
egg-herbie
Rules
24×rational_best-simplify-2
rational_best-simplify-51
rational_best-simplify-44
rational_best-simplify-1
rational_best-simplify-22
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01350
12238
22838
33338
44038
54438
022
Stop Event
saturated
saturated
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 x y)))
(*.f64 (+.f64 x y) (*.f64 2 x))
(*.f64 2 (+.f64 (*.f64 y y) (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y y) (*.f64 x y)))
(*.f64 2 (*.f64 y (+.f64 x y)))
(*.f64 (+.f64 x y) (*.f64 2 y))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify10.0ms (0.5%)

Algorithm
egg-herbie
Rules
14×rational_best-simplify-2
rational_best-simplify-1
rational_best-simplify-51
rational_best-simplify-44
rational_best-simplify-22
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
11419
21819
32119
42519
52719
Stop Event
saturated
Counts
1 → 3
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)))

eval1.0ms (0%)

Compiler

Compiled 25 to 15 computations (40% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 20 to 13 computations (35% saved)

localize6.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series3.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite13.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
30×rational_best-simplify-2
20×rational_best-simplify-1
18×rational_best-4
18×rational_best-2
18×rational_best-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
15532
28832
39832
410032
Stop Event
saturated
Counts
2 → 10
Calls
Call 1
Inputs
(*.f64 x (+.f64 y x))
(*.f64 2 (*.f64 x (+.f64 y x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 x y)))))) (#(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 pow.f64 (*.f64 x (+.f64 x y)) 1)))))
((#(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 (+.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 pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)))))

simplify99.0ms (5.3%)

Algorithm
egg-herbie
Rules
38×rational_best-simplify-2
12×rational_best-simplify-47
12×rational_best-simplify-6
10×rational_best-simplify-1
rational_best-simplify-44
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0281180
1431072
2611072
3711072
4721072
Stop Event
saturated
Counts
58 → 24
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 0 (*.f64 x (+.f64 x y)))
(-.f64 (*.f64 x (+.f64 x y)) 0)
(/.f64 (*.f64 x (+.f64 x y)) 1)
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 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 2 x))
(*.f64 x (*.f64 2 y))
(*.f64 x (*.f64 y 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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.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 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (*.f64 2 y))
(*.f64 x (*.f64 y 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 (*.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 (*.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 (*.f64 y x) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (*.f64 2 y))
(*.f64 x (*.f64 y 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 (*.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 (*.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 (*.f64 y x) (pow.f64 x 2)))
(+.f64 (*.f64 x (+.f64 x y)) 0)
(*.f64 x (+.f64 y x))
(+.f64 0 (*.f64 x (+.f64 x y)))
(*.f64 x (+.f64 y x))
(-.f64 (*.f64 x (+.f64 x y)) 0)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(+.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 (+.f64 y x) (*.f64 x 2))
(+.f64 0 (*.f64 x (*.f64 (+.f64 x y) 2)))
(*.f64 (+.f64 y x) (*.f64 x 2))
(-.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 0)
(*.f64 (+.f64 y x) (*.f64 x 2))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(*.f64 (+.f64 y x) (*.f64 x 2))
(pow.f64 (*.f64 x (*.f64 (+.f64 x y) 2)) 1)
(*.f64 (+.f64 y x) (*.f64 x 2))

localize8.0ms (0.4%)

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

Counts
2 → 48
Calls

12 calls:

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

rewrite242.0ms (12.9%)

Algorithm
batch-egg-rewrite
Rules
170×rational_best-simplify-2
146×rational_best-simplify-44
96×rational_best-2
96×rational_best-3
96×rational_best-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0944
16132
210032
312432
414032
516732
618132
719532
821232
922932
1031532
1144632
1254932
1357832
Stop Event
saturated
Counts
2 → 22
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 0 (*.f64 x (neg.f64 (+.f64 x y))))))) (#(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 1 (*.f64 x (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 x (neg.f64 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (neg.f64 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (+.f64 x y)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (neg.f64 (+.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) (*.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) (*.f64 x 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 (+.f64 x y) (*.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x y) -2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (*.f64 (+.f64 x y) -2)))))))

simplify68.0ms (3.6%)

Algorithm
egg-herbie
Rules
316×rational_best-simplify-44
308×rational_best-simplify-2
60×rational_best-simplify-1
56×rational_best-simplify-47
42×rational_best-simplify-49
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0471354
1781246
21201246
32181246
43141246
53671246
64331246
75011246
85451246
95571246
105911246
116001246
126101246
136131246
Stop Event
saturated
Counts
70 → 36
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 0 (*.f64 x (neg.f64 (+.f64 x y))))
(*.f64 x (+.f64 x y))
(*.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 1 (*.f64 x (+.f64 x y)))
(*.f64 (+.f64 x y) x)
(*.f64 -1 (*.f64 x (neg.f64 (+.f64 x y))))
(*.f64 (neg.f64 x) (neg.f64 (+.f64 x y)))
(*.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)
(*.f64 (neg.f64 (+.f64 x y)) (neg.f64 x))
(/.f64 (*.f64 x (+.f64 x y)) 1)
(/.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(neg.f64 (*.f64 x (neg.f64 (+.f64 x y))))
(+.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 0)
(+.f64 0 (*.f64 (+.f64 x y) (*.f64 x 2)))
(-.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 0)
(-.f64 0 (*.f64 x (*.f64 (+.f64 x y) -2)))
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 1)
(/.f64 (*.f64 x (*.f64 (+.f64 x y) -2)) -1)
(pow.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 1)
(neg.f64 (*.f64 x (*.f64 (+.f64 x y) -2)))
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 (*.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 (*.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 (*.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 0 (*.f64 x (neg.f64 (+.f64 x y))))
(*.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 1 (*.f64 x (+.f64 x y)))
(*.f64 x (+.f64 y x))
(*.f64 (+.f64 x y) x)
(*.f64 x (+.f64 y x))
(*.f64 -1 (*.f64 x (neg.f64 (+.f64 x y))))
(*.f64 x (+.f64 y x))
(*.f64 (neg.f64 x) (neg.f64 (+.f64 x y)))
(*.f64 x (+.f64 y x))
(*.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)
(*.f64 x (+.f64 y x))
(*.f64 (neg.f64 (+.f64 x y)) (neg.f64 x))
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(/.f64 (*.f64 x (neg.f64 (+.f64 x y))) -1)
(*.f64 x (+.f64 y x))
(pow.f64 (*.f64 x (+.f64 x y)) 1)
(*.f64 x (+.f64 y x))
(neg.f64 (*.f64 x (neg.f64 (+.f64 x y))))
(*.f64 x (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 0)
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(+.f64 0 (*.f64 (+.f64 x y) (*.f64 x 2)))
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(-.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 0)
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(-.f64 0 (*.f64 x (*.f64 (+.f64 x y) -2)))
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 1)
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x y) -2)) -1)
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(pow.f64 (*.f64 (+.f64 x y) (*.f64 x 2)) 1)
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))
(neg.f64 (*.f64 x (*.f64 (+.f64 x y) -2)))
(*.f64 x (*.f64 (+.f64 y x) 2))
(*.f64 x (*.f64 2 (+.f64 y x)))

eval8.0ms (0.4%)

Compiler

Compiled 491 to 258 computations (47.5% saved)

prune7.0ms (0.4%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New59160
Fresh000
Picked011
Done011
Total59362
Error
0.0b
Counts
62 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
18.9b
(*.f64 y (*.f64 2 x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
0.0b
(*.f64 2 (*.f64 x (+.f64 y x)))
Compiler

Compiled 27 to 18 computations (33.3% saved)

localize5.0ms (0.3%)

Compiler

Compiled 13 to 8 computations (38.5% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Error
0.0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
18.9b
(*.f64 y (*.f64 2 x))
0.0b
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
0.0b
(*.f64 2 (*.f64 x (+.f64 y x)))
Compiler

Compiled 27 to 18 computations (33.3% saved)

regimes14.0ms (0.7%)

Accuracy

Total -18.9b remaining (-80714.6%)

Threshold costs -18.9b (-80714.6%)

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

4 calls:

4.0ms
(*.f64 2 (+.f64 (*.f64 x x) (*.f64 x y)))
3.0ms
y
3.0ms
x
3.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 49 to 30 computations (38.8% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01032
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 y (*.f64 2 x))
Outputs
(*.f64 2 (*.f64 x (+.f64 y x)))
(*.f64 y (*.f64 2 x))
Compiler

Compiled 16 to 11 computations (31.3% saved)

soundness11.0ms (0.6%)

Algorithm
egg-herbie
Rules
14×rational_best-simplify-2
rational_best-simplify-1
rational_best-simplify-51
rational_best-simplify-44
rational_best-simplify-22
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
11419
21819
32119
42519
52719
Stop Event
saturated
Compiler

Compiled 27 to 15 computations (44.4% saved)

end16.0ms (0.8%)

Compiler

Compiled 14 to 9 computations (35.7% saved)

Profiling

Loading profile data...