Details

Time bar (total: 8.5s)

analyze129.0ms (1.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
32%25%53.1%0.1%21.9%0%0%7
41.7%31.2%43.7%0.1%25%0%0%8
54.3%39%32.8%0.1%28.1%0%0%9
62.9%42.9%25.4%0.1%31.6%0%0%10
72.5%47.2%18%0.1%34.7%0%0%11
78.4%49.4%13.6%0.1%37%0%0%12
Compiler

Compiled 16 to 10 computations (37.5% saved)

sample4.7s (55.6%)

Results
3.5s8256×body256valid
1.2s1046×body256infinite
Bogosity

preprocess115.0ms (1.4%)

Algorithm
egg-herbie
Rules
1098×rational.json-simplify-2
904×rational.json-simplify-44
892×rational.json-simplify-37
818×rational.json-simplify-39
814×rational.json-simplify-47
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01574
12674
24862
39662
439762
5395462
6627062
7740462
022
122
Stop Event
unsound
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
(+.f64 (+.f64 (*.f64 y y) (*.f64 (*.f64 y 2) x)) (*.f64 x x))
Outputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (+.f64 (*.f64 x (*.f64 2 y)) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (*.f64 x 2))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
(+.f64 (+.f64 (*.f64 y y) (*.f64 (*.f64 y 2) x)) (*.f64 x x))
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (+.f64 (*.f64 x (*.f64 2 y)) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (*.f64 x 2))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
Symmetry

(sort x y)

Compiler

Compiled 17 to 11 computations (35.3% saved)

simplify118.0ms (1.4%)

Algorithm
egg-herbie
Rules
1094×rational.json-simplify-2
922×rational.json-simplify-44
906×rational.json-simplify-37
838×rational.json-simplify-39
822×rational.json-simplify-47
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01137
11837
23431
38331
438631
5397131
6631931
7746631
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
Outputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (+.f64 (*.f64 (*.f64 x 2) y) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (*.f64 x 2))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))

eval1.0ms (0%)

Compiler

Compiled 50 to 24 computations (52% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New314
Fresh101
Picked000
Done000
Total415
Error
0.0b
Counts
5 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
Compiler

Compiled 13 to 8 computations (38.5% saved)

localize12.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 34 to 18 computations (47.1% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite67.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01050
16850
214350
333050
4120950
5407950
Stop Event
node limit
Counts
2 → 25
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
(*.f64 y (+.f64 (*.f64 x 2) y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x y)) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)))))

simplify136.0ms (1.6%)

Algorithm
egg-herbie
Rules
980×rational.json-simplify-2
910×rational.json-simplify-50
864×rational.json-simplify-19
770×rational.json-simplify-61
762×rational.json-simplify-21
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0641789
11491789
23161789
38291789
422651789
555691789
671211789
Stop Event
node limit
Counts
73 → 45
Calls
Call 1
Inputs
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))
(*.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 1/2)
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(/.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)))) 32)
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(+.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))
(+.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))
(-.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))))) 32)
(pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
Outputs
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (+.f64 y y)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (+.f64 y y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (+.f64 y y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (+.f64 y y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (+.f64 y y)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 1/2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 2 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))) 2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)))) 32)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(+.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(-.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (+.f64 y y)) 2)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))))) 32)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))

eval8.0ms (0.1%)

Compiler

Compiled 609 to 225 computations (63.1% saved)

prune7.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New43245
Fresh000
Picked011
Done000
Total43346
Error
0.0b
Counts
46 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
25.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 2 x)))
Compiler

Compiled 37 to 22 computations (40.5% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 25 to 13 computations (48% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite65.0ms (0.8%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
0925
16325
214719
334319
4121519
5407519
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y (*.f64 2 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 x (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 y (/.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 y y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (/.f64 x 2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)))))

simplify127.0ms (1.5%)

Algorithm
egg-herbie
Rules
1140×rational.json-simplify-61
964×rational.json-simplify-1
962×rational.json-simplify-2
750×rational.json-simplify-39
748×rational.json-simplify-53
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
052926
1113914
2260914
3818914
41802914
54972914
66274914
77202914
Stop Event
node limit
Counts
44 → 30
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(-.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 2 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2))
(*.f64 2 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)))
(*.f64 (+.f64 x x) (+.f64 y (/.f64 x 2)))
(*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 1 (*.f64 x (+.f64 x (+.f64 y y))))
(*.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 1/2)
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))))
(*.f64 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2) 2)
(*.f64 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)) 2)
(*.f64 (+.f64 y (/.f64 x 2)) (+.f64 x x))
(/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)))) 32)
(pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
Outputs
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(-.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 2 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 2 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)))
(*.f64 2 (+.f64 (*.f64 y x) (/.f64 (*.f64 x x) 2)))
(*.f64 2 (*.f64 x (+.f64 y (/.f64 x 2))))
(*.f64 (+.f64 x x) (+.f64 y (/.f64 x 2)))
(*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 1 (*.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 1/2)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2) 2)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 (+.f64 (*.f64 x y) (/.f64 (*.f64 x x) 2)) 2)
(*.f64 2 (+.f64 (*.f64 y x) (/.f64 (*.f64 x x) 2)))
(*.f64 2 (*.f64 x (+.f64 y (/.f64 x 2))))
(*.f64 (+.f64 y (/.f64 x 2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 y (/.f64 x 2)))
(/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 2)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4) 4)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) 8)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)))) 32)
(*.f64 x (+.f64 y (+.f64 y x)))
(pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))

localize10.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 33 to 7 computations (78.8% saved)

series2.0ms (0%)

Counts
3 → 72
Calls

18 calls:

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

rewrite73.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1278×rational.json-1
1278×rational.json-2
1278×rational.json-4
1278×rational.json-3
1268×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0963
16463
214563
334763
4127563
5429963
Stop Event
node limit
Counts
3 → 38
Calls
Call 1
Inputs
(+.f64 x (+.f64 y x))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(*.f64 y (+.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 (+.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 (+.f64 x (+.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (/.f64 y 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 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))))) (#(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 (/.f64 y 2)) 2)))) (#(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 pow.f64 (+.f64 x (+.f64 x y)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 y (+.f64 y (*.f64 x 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)))))

simplify106.0ms (1.2%)

Algorithm
egg-herbie
Rules
1128×rational.json-simplify-19
1064×rational.json-simplify-2
846×rational.json-simplify-40
780×rational.json-simplify-38
748×rational.json-simplify-61
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0842252
11892252
24132252
311712252
426252252
567282252
Stop Event
node limit
Counts
110 → 68
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)
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(-.f64 (+.f64 x (+.f64 x y)) 0)
(*.f64 (+.f64 x (+.f64 x y)) 1)
(*.f64 1 (+.f64 x (+.f64 x y)))
(*.f64 2 (/.f64 (+.f64 x (+.f64 x y)) 2))
(*.f64 2 (+.f64 x (/.f64 y 2)))
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))
(*.f64 (/.f64 (+.f64 x (+.f64 x y)) 2) 2)
(*.f64 (+.f64 x (/.f64 y 2)) 2)
(/.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)
(pow.f64 (+.f64 x (+.f64 x y)) 1)
(-.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)
(*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(*.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 1/2)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(+.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))
(+.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))
(-.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(/.f64 (*.f64 y (+.f64 y (+.f64 y (*.f64 x 4)))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)
(pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
Outputs
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(*.f64 2 x)
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
y
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 x) y)
(+.f64 y (*.f64 2 x))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 2 x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 2 x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 2)))
(-.f64 (+.f64 x (+.f64 x y)) 0)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(*.f64 (+.f64 x (+.f64 x y)) 1)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(*.f64 1 (+.f64 x (+.f64 x y)))
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(*.f64 2 (/.f64 (+.f64 x (+.f64 x y)) 2))
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(*.f64 2 (+.f64 x (/.f64 y 2)))
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)
(*.f64 (+.f64 (*.f64 x 4) (+.f64 y y)) 1/2)
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 x 4))))
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 1/2)
(*.f64 (+.f64 (*.f64 x 4) (+.f64 y y)) 1/2)
(*.f64 (/.f64 (+.f64 x (+.f64 x y)) 2) 2)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(*.f64 (+.f64 x (/.f64 y 2)) 2)
(*.f64 2 (+.f64 x (/.f64 y 2)))
(/.f64 (+.f64 x (+.f64 x y)) 1)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(/.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 2)
(/.f64 (+.f64 (*.f64 x 4) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) 4) 4)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4)) 8)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) 4))) 16)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(pow.f64 (+.f64 x (+.f64 x y)) 1)
(+.f64 x (+.f64 y x))
(+.f64 y (+.f64 x x))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 0)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 1/2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 2) 2)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4) 4)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) 8)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 1)
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
(+.f64 (*.f64 x x) (*.f64 y (+.f64 y (+.f64 x x))))
(+.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2) (/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 2))
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(-.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 y (+.f64 y (+.f64 y (*.f64 x 4)))) 2)
(*.f64 (+.f64 y (+.f64 y (*.f64 x 4))) (/.f64 y 2))
(*.f64 y (/.f64 (+.f64 y (+.f64 y (*.f64 x 4))) 2))
(*.f64 (/.f64 y 2) (+.f64 (*.f64 x 4) (+.f64 y y)))
(/.f64 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)) 4)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4))) 8)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x y)) (*.f64 y 4)))) 16)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(pow.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))

eval15.0ms (0.2%)

Compiler

Compiled 1176 to 477 computations (59.4% saved)

prune14.0ms (0.2%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New94498
Fresh000
Picked011
Done022
Total947101
Error
0.0b
Counts
101 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
25.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 2 x)))
1.4b
(+.f64 (*.f64 x x) (*.f64 y y))
25.7b
(*.f64 (+.f64 x (+.f64 y y)) x)
52.7b
(*.f64 y (*.f64 x 2))
25.7b
(*.f64 x (+.f64 y (+.f64 y x)))
Compiler

Compiled 71 to 42 computations (40.8% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series2.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite218.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
2396×rational.json-simplify-2
1626×rational.json-simplify-35
1394×rational.json-1
1394×rational.json-2
1160×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0732
14732
210432
322232
443932
5106032
6254232
7427132
8528232
9614832
10677732
11677732
12785232
Stop Event
node limit
Counts
2 → 39
Calls
Call 1
Inputs
(+.f64 y (+.f64 y x))
(*.f64 x (+.f64 y (+.f64 y x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (+.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (+.f64 y x)))))) (#(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 y (+.f64 y x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 y x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 1/8)))) (#(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/2 (+.f64 (+.f64 x x) (*.f64 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 1/4 (*.f64 (+.f64 y (+.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 y x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 y (+.f64 y x)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 y 4)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (+.f64 y x)) 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 y (+.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (+.f64 y x)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 y (+.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 8 (*.f64 x (+.f64 y (*.f64 x 1/2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)))))

simplify589.0ms (6.9%)

Algorithm
egg-herbie
Rules
3274×rational.json-simplify-41
2260×rational.json-simplify-35
1558×rational.json-simplify-2
1154×rational.json-simplify-53
998×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0891491
12121455
25371455
317751455
436751455
541091455
642511455
743701455
844841455
945971455
1057361455
1162861455
1263991455
1363991455
1465121455
Stop Event
node limit
Counts
87 → 61
Calls
Call 1
Inputs
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 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(-.f64 (+.f64 y (+.f64 y x)) 0)
(*.f64 (+.f64 y (+.f64 y x)) 1)
(*.f64 1 (+.f64 y (+.f64 y x)))
(*.f64 2 (+.f64 y (*.f64 x 1/2)))
(*.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 1/2)
(*.f64 4 (*.f64 (+.f64 y (+.f64 y x)) 1/4))
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 4) 1/4)
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 1/8)
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y 4)))
(*.f64 (+.f64 y (*.f64 x 1/2)) 2)
(*.f64 1/4 (*.f64 (+.f64 y (+.f64 y x)) 4))
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 y (+.f64 y x)) 8))
(*.f64 (+.f64 (+.f64 x x) (*.f64 y 4)) 1/2)
(/.f64 (+.f64 y (+.f64 y x)) 1)
(/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2)
(/.f64 (*.f64 (+.f64 y (+.f64 y x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 256)
(pow.f64 (+.f64 y (+.f64 y x)) 1)
(+.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)
(+.f64 0 (*.f64 x (+.f64 y (+.f64 y x))))
(+.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))
(-.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)
(/.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)
(/.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)
(/.f64 (*.f64 8 (*.f64 x (+.f64 y (*.f64 x 1/2)))) 4)
(/.f64 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)) 8)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))))) 256)
(pow.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)
Outputs
x
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(*.f64 2 y)
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
x
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
x
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(+.f64 (*.f64 2 y) x)
(+.f64 x (*.f64 2 y))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 2 (*.f64 x y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 2 (*.f64 x y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 2 (*.f64 x y))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 x y)) (pow.f64 x 2))
(-.f64 (+.f64 y (+.f64 y x)) 0)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 (+.f64 y (+.f64 y x)) 1)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 1 (+.f64 y (+.f64 y x)))
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.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 y (+.f64 y x)) 1/4))
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 4) 1/4)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 1/8)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/2 (+.f64 (*.f64 y 4) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y 4)))
(*.f64 1/2 (+.f64 x (+.f64 x (*.f64 y 4))))
(*.f64 1/2 (+.f64 (*.f64 y 4) (+.f64 x x)))
(*.f64 (+.f64 y (*.f64 x 1/2)) 2)
(*.f64 2 (+.f64 y (*.f64 x 1/2)))
(*.f64 1/4 (*.f64 (+.f64 y (+.f64 y x)) 4))
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 (*.f64 (+.f64 y (+.f64 y x)) 1/4) 4)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 1/8 (*.f64 (+.f64 y (+.f64 y x)) 8))
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(*.f64 (+.f64 (+.f64 x 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 (+.f64 y (+.f64 y x)) 1)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2)
(/.f64 (+.f64 (*.f64 y 4) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 y (+.f64 y x)) 4) 4)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 (+.f64 y (+.f64 y x)) 8) 8)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)) 16)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))) 32)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))) 64)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8))))) 128)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 256)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(pow.f64 (+.f64 y (+.f64 y x)) 1)
(+.f64 y (+.f64 x y))
(+.f64 x (+.f64 y y))
(+.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(+.f64 0 (*.f64 x (+.f64 y (+.f64 y x))))
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(+.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))
(*.f64 (+.f64 y (*.f64 x 1/2)) (+.f64 x x))
(*.f64 x (*.f64 2 (+.f64 y (*.f64 x 1/2))))
(-.f64 (*.f64 x (+.f64 y (+.f64 y x))) 0)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)
(*.f64 (+.f64 x (+.f64 x (*.f64 y 4))) (/.f64 x 2))
(*.f64 x (/.f64 (+.f64 (*.f64 y 4) (+.f64 x x)) 2))
(*.f64 x (/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2))
(/.f64 (*.f64 8 (*.f64 x (+.f64 y (*.f64 x 1/2)))) 4)
(+.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))
(*.f64 (+.f64 y (*.f64 x 1/2)) (+.f64 x x))
(*.f64 x (*.f64 2 (+.f64 y (*.f64 x 1/2))))
(/.f64 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)) 8)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))) 16)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))) 32)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))) 64)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8)))))) 128)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y (+.f64 y x)) 8))))))) 256)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))
(pow.f64 (*.f64 x (+.f64 y (+.f64 y x))) 1)
(*.f64 x (+.f64 y (+.f64 x y)))
(*.f64 x (+.f64 x (+.f64 y y)))

localize5.0ms (0.1%)

Compiler

Compiled 13 to 8 computations (38.5% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite189.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
2516×rational.json-simplify-2
1626×rational.json-simplify-35
1200×rational.json-1
1200×rational.json-2
1200×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
14819
211119
323019
447119
5111819
6265119
7437219
8537119
9631819
10701319
11701319
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (+.f64 x (+.f64 y y)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (+.f64 y (*.f64 x 1/2))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)))))

simplify639.0ms (7.5%)

Algorithm
egg-herbie
Rules
3478×rational.json-simplify-35
2768×rational.json-simplify-2
1974×rational.json-simplify-53
1146×exponential.json-simplify-26
742×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052788
1134788
2252788
3533788
41596788
53102788
64435788
74694788
84852788
94997788
105142788
115657788
126311788
136354788
146354788
156499788
166644788
176789788
186934788
197079788
207224788
Stop Event
node limit
Counts
38 → 21
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(+.f64 0 (*.f64 x (+.f64 x (+.f64 y y))))
(+.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))
(-.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(/.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)
(/.f64 (*.f64 (*.f64 x 8) (+.f64 y (*.f64 x 1/2))) 4)
(/.f64 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)) 8)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))))) 256)
(pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
Outputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(*.f64 x (+.f64 y (+.f64 y x)))
(+.f64 0 (*.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 y (+.f64 y x)))
(+.f64 (*.f64 x (+.f64 y (*.f64 x 1/2))) (*.f64 x (+.f64 y (*.f64 x 1/2))))
(*.f64 x (+.f64 y (+.f64 y x)))
(-.f64 (*.f64 x (+.f64 x (+.f64 y y))) 0)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))) 2)
(*.f64 (+.f64 x (+.f64 x (*.f64 y 4))) (/.f64 x 2))
(*.f64 x (/.f64 (+.f64 (*.f64 y 4) (+.f64 x x)) 2))
(*.f64 x (/.f64 (+.f64 x (+.f64 x (*.f64 y 4))) 2))
(/.f64 (*.f64 (*.f64 x 8) (+.f64 y (*.f64 x 1/2))) 4)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)) 8)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))) 16)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))) 32)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))) 64)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8)))))) 128)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 x (+.f64 y y)) 8))))))) 256)
(*.f64 x (+.f64 y (+.f64 y x)))
(pow.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 5 computations (70.6% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite84.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
2042×rational.json-1
2042×rational.json-2
2042×rational.json-3
1250×rational.json-simplify-35
832×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
14819
212219
335519
4185219
5647919
Stop Event
node limit
Counts
1 → 43
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 2 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 2 (+.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 2 (fabs.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 4 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 4 (+.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))) (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 4 (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 8 (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (+.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (*.f64 x x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fabs.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (fabs.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))))))

simplify70.0ms (0.8%)

Algorithm
egg-herbie
Rules
2050×rational.json-simplify-35
1146×rational.json-simplify-2
1064×rational.json-simplify-43
890×rational.json-simplify-40
538×rational.json-simplify-38
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01011201
12831201
214301201
345541201
Stop Event
node limit
Counts
67 → 47
Calls
Call 1
Inputs
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 0)
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(*.f64 2 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))
(*.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 1/2)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 1 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 1 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 2 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 2 (+.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 2 (fabs.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))
(/.f64 4 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 4 (+.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))) (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 4 (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) 4)
(/.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))))
(/.f64 8 (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) 8)
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))
(/.f64 (+.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (+.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))) 16)
(/.f64 (+.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 (neg.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (*.f64 x x) (*.f64 y y)))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
(/.f64 (fabs.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (fabs.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(fabs.f64 (+.f64 (*.f64 x x) (*.f64 y y)))
(fabs.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))
(fabs.f64 (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
Outputs
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(+.f64 (pow.f64 y 2) (pow.f64 x 2))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 0)
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 2 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 2 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 1/2)
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 1 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 1 (fabs.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 2 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 2 (+.f64 (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 2 (fabs.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) 2)
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2) (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 4 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 4 (+.f64 (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y)))) (+.f64 (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 4 (fabs.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) 4)
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 8 (+.f64 (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) 8)
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (+.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x))) (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 4))) 16)
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (+.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))) (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (neg.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (+.f64 (*.f64 x x) (*.f64 y y))))) (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 2)))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))) (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(/.f64 (fabs.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))) (fabs.f64 (*.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (*.f64 x x)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(pow.f64 (+.f64 (*.f64 x x) (*.f64 y y)) 1)
(+.f64 (*.f64 x x) (*.f64 y y))
(fabs.f64 (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(fabs.f64 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y))))
(+.f64 (*.f64 x x) (*.f64 y y))
(fabs.f64 (-.f64 0 (neg.f64 (+.f64 (*.f64 x x) (*.f64 y y)))))
(+.f64 (*.f64 x x) (*.f64 y y))

eval21.0ms (0.3%)

Compiler

Compiled 1945 to 687 computations (64.7% saved)

prune18.0ms (0.2%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New1281129
Fresh000
Picked011
Done066
Total1288136
Error
0.0b
Counts
136 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
25.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 2 x)))
1.4b
(+.f64 (*.f64 x x) (*.f64 y y))
25.7b
(*.f64 (+.f64 x (+.f64 y y)) x)
52.7b
(*.f64 y (*.f64 x 2))
25.7b
(*.f64 x (+.f64 y (+.f64 y x)))
25.8b
(*.f64 x x)
Compiler

Compiled 76 to 45 computations (40.8% saved)

localize190.0ms (2.2%)

Compiler

Compiled 6 to 3 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0%)

Pruning

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done077
Total088
Error
0.0b
Counts
8 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 y x))))
25.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 2 x)))
1.4b
(+.f64 (*.f64 x x) (*.f64 y y))
25.7b
(*.f64 (+.f64 x (+.f64 y y)) x)
52.7b
(*.f64 y (*.f64 x 2))
25.7b
(*.f64 x (+.f64 y (+.f64 y x)))
25.8b
(*.f64 x x)
Compiler

Compiled 76 to 45 computations (40.8% saved)

regimes19.0ms (0.2%)

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

3 calls:

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

Compiled 96 to 44 computations (54.2% saved)

regimes428.0ms (5%)

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

2 calls:

5.0ms
y
5.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
Compiler

Compiled 57 to 25 computations (56.1% saved)

regimes11.0ms (0.1%)

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

2 calls:

5.0ms
y
5.0ms
x
Results
ErrorSegmentsBranch
1.4b1x
1.4b1y
Compiler

Compiled 46 to 22 computations (52.2% saved)

regimes9.0ms (0.1%)

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

2 calls:

4.0ms
y
4.0ms
x
Results
ErrorSegmentsBranch
25.7b1x
25.7b1y
Compiler

Compiled 30 to 16 computations (46.7% saved)

regimes8.0ms (0.1%)

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

2 calls:

4.0ms
y
3.0ms
x
Results
ErrorSegmentsBranch
25.7b1x
25.7b1y
Compiler

Compiled 23 to 13 computations (43.5% saved)

regimes7.0ms (0.1%)

Accuracy

Total -27.0b remaining (-104.8%)

Threshold costs -27.0b (-104.8%)

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

2 calls:

3.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
25.8b1x
25.8b1y
Compiler

Compiled 16 to 10 computations (37.5% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 58 to 33 computations (43.1% saved)

soundness202.0ms (2.4%)

Algorithm
egg-herbie
Rules
1094×rational.json-simplify-2
922×rational.json-simplify-44
906×rational.json-simplify-37
838×rational.json-simplify-39
822×rational.json-simplify-47
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01137
11837
23431
38331
438631
5397131
6631931
7746631
Stop Event
node limit
Compiler

Compiled 65 to 29 computations (55.4% saved)

end33.0ms (0.4%)

Remove

(sort x y)

Compiler

Compiled 74 to 35 computations (52.7% saved)

Profiling

Loading profile data...