Details

Time bar (total: 10.2s)

analyze1.1s (10.6%)

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)

sample3.8s (36.9%)

Results
3.1s8256×body256valid
647.0ms1019×body256infinite
Bogosity

preprocess110.0ms (1.1%)

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)

simplify114.0ms (1.1%)

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

3 alts after pruning (3 fresh and 0 done)

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

Compiled 28 to 17 computations (39.3% 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
@0
(+.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
y
@inf
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
0.0ms
y
@0
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))

rewrite119.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1804×bool.json-1
1804×bool.json-2
1776×rational.json-1
1390×bool.json-3
878×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01050
110150
226750
359050
4185550
5585950
Stop Event
node limit
Counts
2 → 20
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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))))
((#(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 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 2 (*.f64 y (+.f64 x (+.f64 x y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (+.f64 x (+.f64 x y))) (*.f64 y (+.f64 x (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (+.f64 x (+.f64 x y))) (*.f64 y (+.f64 x (+.f64 x y))))))))

simplify158.0ms (1.6%)

Algorithm
egg-herbie
Rules
978×rational.json-simplify-2
918×rational.json-simplify-50
854×rational.json-simplify-19
768×rational.json-simplify-61
752×rational.json-simplify-21
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0541670
11231670
22611670
36821670
421491670
552921670
666991670
779591670
Stop Event
node limit
Counts
68 → 40
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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
(+.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(+.f64 0 (*.f64 y (+.f64 x (+.f64 x y))))
(-.f64 (*.f64 y (+.f64 x (+.f64 x y))) 0)
(/.f64 (*.f64 y (+.f64 x (+.f64 x y))) 1)
(/.f64 (*.f64 2 (*.f64 y (+.f64 x (+.f64 x y)))) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4)) 4)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4)))) 16)
Outputs
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.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 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 x 2)) (+.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 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 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(*.f64 y (*.f64 x 2))
(*.f64 y (*.f64 2 x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 2 x)))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y 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 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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.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 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 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 2 (*.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 (+.f64 x (+.f64 x y)) 4)) 4)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) 8)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4))) (*.f64 2 (*.f64 y (*.f64 (+.f64 x (+.f64 x y)) 4)))) 16)
(*.f64 y (+.f64 x (+.f64 y x)))
(*.f64 y (+.f64 y (+.f64 x x)))

localize15.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 41 to 19 computations (53.7% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite57.0ms (0.6%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
01162
111162
230150
376250
4291450
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y))
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x 2) y)) (*.f64 y y))
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 (*.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 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 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 x (+.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))))
((#(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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))))))))

simplify117.0ms (1.1%)

Algorithm
egg-herbie
Rules
1298×rational.json-simplify-41
1286×rational.json-simplify-19
992×rational.json-simplify-2
906×rational.json-simplify-59
820×rational.json-simplify-54
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0631784
11371784
23051784
39141784
418561784
553851784
672921784
Stop Event
node limit
Counts
74 → 36
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))
(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 (*.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 (*.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 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 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
(-.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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4))) 16)
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))
(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 x 2) (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 x 2) (pow.f64 y 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 x 2) (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 x 2) (pow.f64 y 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 x 2) (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 x 2) (pow.f64 y 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 x 2) (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 x 2) (pow.f64 y 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 x 2) (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 x 2) (pow.f64 y 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 x 2) (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 x 2) (pow.f64 y 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 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 x (+.f64 x (+.f64 y y)))
(*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 1 (*.f64 x (+.f64 x (+.f64 y y))))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 1/2)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))))
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(*.f64 (/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 2) 2)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 x (+.f64 x (+.f64 y y))) 1)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 x (+.f64 y y)))) 2)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4) 4)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) 8)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.f64 x (+.f64 y y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
(*.f64 x (+.f64 y (+.f64 y x)))
(*.f64 x (+.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 (*.f64 2 (*.f64 (+.f64 (*.f64 x x) (*.f64 y (+.f64 x (+.f64 x y)))) 4)) (*.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))))

eval71.0ms (0.7%)

Compiler

Compiled 1016 to 357 computations (64.9% saved)

prune9.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New74276
Fresh000
Picked101
Done011
Total75378
Error
0.0b
Counts
78 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
29.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2)))
27.1b
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y))
Compiler

Compiled 35 to 22 computations (37.1% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 25 to 10 computations (60% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

12 calls:

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

rewrite119.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1760×bool.json-1
1760×bool.json-2
1732×rational.json-1
1358×bool.json-3
862×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0938
19332
226732
361332
4184732
5580332
Stop Event
node limit
Counts
2 → 25
Calls
Call 1
Inputs
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y))
(*.f64 2 (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 y (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y x) (/.f64 (*.f64 y y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (+.f64 y (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (+.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 x (/.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 x x)) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (+.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (+.f64 y (+.f64 x x))) (*.f64 y (+.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (+.f64 y (+.f64 x x))) (*.f64 y (+.f64 y (+.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x 4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y x) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) (*.f64 2 (*.f64 (*.f64 y x) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 2 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 2 (*.f64 y x)) (*.f64 2 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 2 (*.f64 y x)) (*.f64 2 (*.f64 y x)))))))

simplify126.0ms (1.2%)

Algorithm
egg-herbie
Rules
1146×rational.json-simplify-61
1084×rational.json-simplify-2
974×rational.json-simplify-41
780×rational.json-simplify-19
744×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
058949
1132943
2308943
3955943
42196943
55746943
66632943
77410943
Stop Event
node limit
Counts
49 → 29
Calls
Call 1
Inputs
(*.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 y (+.f64 y (+.f64 x x))) 0)
(*.f64 2 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2))
(*.f64 2 (+.f64 (*.f64 y x) (/.f64 (*.f64 y y) 2)))
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(*.f64 1 (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 1/2)
(*.f64 (+.f64 y y) (+.f64 x (/.f64 y 2)))
(*.f64 (+.f64 y (+.f64 x x)) y)
(*.f64 1/2 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))))
(*.f64 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2) 2)
(/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(/.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 2)
(/.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4))) 16)
(+.f64 (*.f64 y x) (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(+.f64 0 (*.f64 2 (*.f64 y x)))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(/.f64 (*.f64 (*.f64 y x) 8) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) (*.f64 2 (*.f64 (*.f64 y x) 8))) 16)
Outputs
(*.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 y (+.f64 y (+.f64 x x))) 0)
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 2 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2))
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 2 (+.f64 (*.f64 y x) (/.f64 (*.f64 y y) 2)))
(*.f64 2 (*.f64 y (+.f64 x (/.f64 y 2))))
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 1 (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 1/2)
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 (+.f64 y y) (+.f64 x (/.f64 y 2)))
(*.f64 (+.f64 y (+.f64 x x)) y)
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 1/2 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))))
(*.f64 y (+.f64 y (+.f64 x x)))
(*.f64 (/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 2) 2)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 y (+.f64 y (+.f64 x x)))) 2)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4) 4)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) 8)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4)) (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 4))) 16)
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(*.f64 2 (*.f64 y x))
(+.f64 0 (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x 4)) 2)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 (*.f64 y x) 8) 4)
(*.f64 2 (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) 8)
(*.f64 2 (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y x) 8)) (*.f64 2 (*.f64 (*.f64 y x) 8))) 16)
(*.f64 2 (*.f64 y x))

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 25 to 13 computations (48% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite71.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1774×bool.json-1
1774×bool.json-2
1746×rational.json-1
1374×bool.json-3
864×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
19319
226719
361619
4185619
5582819
Stop Event
node limit
Counts
1 → 16
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2)))
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 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 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 x (+.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))))

simplify106.0ms (1%)

Algorithm
egg-herbie
Rules
1336×rational.json-simplify-2
1150×rational.json-simplify-61
998×rational.json-simplify-43
940×rational.json-simplify-1
894×rational.json-simplify-54
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
046838
199826
2219826
3691826
42352826
56607826
67738826
Stop Event
node limit
Counts
40 → 25
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 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 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
Outputs
(*.f64 2 (*.f64 y x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(*.f64 2 (*.f64 y x))
(*.f64 x (*.f64 y 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 2)) (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 1/2)))
(*.f64 (+.f64 x x) (+.f64 y (/.f64 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 1/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 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 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4)) (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 4))) 16)
(*.f64 x (+.f64 y (+.f64 y x)))

eval13.0ms (0.1%)

Compiler

Compiled 554 to 236 computations (57.4% saved)

prune10.0ms (0.1%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New50454
Fresh000
Picked011
Done022
Total50757
Error
0.0b
Counts
57 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
29.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2)))
27.1b
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y))
27.1b
(*.f64 (+.f64 y (+.f64 x x)) y)
29.7b
(*.f64 (+.f64 x (+.f64 y y)) x)
56.3b
(*.f64 x (*.f64 y 2))
56.3b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 67 to 42 computations (37.3% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

localize5.0ms (0%)

Compiler

Compiled 13 to 8 computations (38.5% saved)

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

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite100.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
2000×bool.json-1
1250×bool.json-2
1214×rational.json-simplify-35
1206×rational.json-1
1206×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
17219
220819
343919
495019
5216519
6465219
7763019
Stop Event
node limit
Counts
1 → 11
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 (+.f64 y y)) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 x (+.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 x (+.f64 y y))) (*.f64 x (+.f64 x (+.f64 y y))))))))

simplify1.2s (11.4%)

Algorithm
egg-herbie
Rules
8232×rational.json-simplify-41
4278×rational.json-simplify-35
2404×rational.json-simplify-2
1284×rational.json-simplify-53
936×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044731
1103731
2202731
3427731
41666731
53204731
64103731
74456731
84571731
94686731
104801731
115328731
125441731
135547731
145712731
155720731
165742731
175753731
185874731
195988731
206101731
216214731
226327731
236440731
246553731
256759731
266872731
276985731
287098731
297098731
307211731
Stop Event
node limit
Counts
35 → 19
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 (+.f64 y y)) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)))) 64)
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 (+.f64 (*.f64 y 4) (+.f64 x x)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (+.f64 x (+.f64 x (*.f64 y 4)))))
(/.f64 (*.f64 (+.f64 x (+.f64 y y)) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8) 8)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)) 16)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) 32)
(*.f64 x (+.f64 y (+.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 x (+.f64 y y))) 8)))) 64)
(*.f64 x (+.f64 y (+.f64 y x)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite99.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
2000×bool.json-1
1250×bool.json-2
1214×rational.json-simplify-35
1206×rational.json-1
1206×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
17219
220819
343919
495019
5216519
6465219
7763019
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 y (+.f64 x x)) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 y (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x (*.f64 y 1/2))) (*.f64 y (+.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 y (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 y (+.f64 x x))) 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 y (+.f64 x x)) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (+.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (+.f64 y (+.f64 x x))) (*.f64 y (+.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (+.f64 y (+.f64 x x))) (*.f64 y (+.f64 y (+.f64 x x))))))))

simplify1.1s (11.2%)

Algorithm
egg-herbie
Rules
8238×rational.json-simplify-41
4264×rational.json-simplify-35
2406×rational.json-simplify-2
1268×rational.json-simplify-53
936×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044731
1103731
2202731
3427731
41669731
53210731
64096731
74445731
84560731
94675731
104790731
115319731
125432731
135537731
145702731
155710731
165732731
175743731
185864731
195978731
206091731
216204731
226317731
236430731
246543731
256748731
266861731
276974731
287087731
297087731
307200731
Stop Event
node limit
Counts
35 → 18
Calls
Call 1
Inputs
(*.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 y (+.f64 y (+.f64 x x))) 0)
(+.f64 0 (*.f64 y (+.f64 y (+.f64 x x))))
(+.f64 (*.f64 y (+.f64 x (*.f64 y 1/2))) (*.f64 y (+.f64 x (*.f64 y 1/2))))
(-.f64 (*.f64 y (+.f64 y (+.f64 x x))) 0)
(/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(/.f64 (*.f64 y (+.f64 y (+.f64 y (*.f64 x 4)))) 2)
(/.f64 (*.f64 (+.f64 y (+.f64 x x)) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)))) 64)
Outputs
(*.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 y (+.f64 y (+.f64 x x))) 0)
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 0 (*.f64 y (+.f64 y (+.f64 x x))))
(*.f64 y (+.f64 y (+.f64 x x)))
(+.f64 (*.f64 y (+.f64 x (*.f64 y 1/2))) (*.f64 y (+.f64 x (*.f64 y 1/2))))
(*.f64 y (+.f64 y (+.f64 x x)))
(-.f64 (*.f64 y (+.f64 y (+.f64 x x))) 0)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 y (+.f64 y (+.f64 x x))) 1)
(*.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 (*.f64 x 4) (+.f64 y y)) 2))
(*.f64 (+.f64 (*.f64 x 4) (+.f64 y y)) (*.f64 y 1/2))
(/.f64 (*.f64 (+.f64 y (+.f64 x x)) (*.f64 y 4)) 4)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8) 8)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)) 16)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) 32)
(*.f64 y (+.f64 y (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 y (+.f64 x x))) 8)))) 64)
(*.f64 y (+.f64 y (+.f64 x x)))

eval9.0ms (0.1%)

Compiler

Compiled 484 to 242 computations (50% saved)

prune8.0ms (0.1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New46046
Fresh000
Picked011
Done066
Total46753
Error
0.0b
Counts
53 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
29.7b
(+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2)))
27.1b
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y))
27.1b
(*.f64 (+.f64 y (+.f64 x x)) y)
29.7b
(*.f64 (+.f64 x (+.f64 y y)) x)
56.3b
(*.f64 x (*.f64 y 2))
56.3b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 67 to 42 computations (37.3% saved)

regimes20.0ms (0.2%)

Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
(*.f64 x (*.f64 y 2))
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 (+.f64 y (+.f64 x x)) y)
(+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2)))
(+.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:

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

Compiled 89 to 46 computations (48.3% saved)

regimes118.0ms (1.2%)

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

2 calls:

100.0ms
x
17.0ms
y
Results
ErrorSegmentsBranch
9.8b2x
7.4b4y
Compiler

Compiled 50 to 27 computations (46% saved)

bsearch234.0ms (2.3%)

Algorithm
binary-search
Steps
TimeLeftRight
207.0ms
1.7720663415410714e-11
7.375979757673447e-11
10.0ms
1.844270545549364e-26
1.4418982380889534e-25
16.0ms
9.076966289167308e-154
7.765137824142784e-149
Results
230.0ms336×body256valid
Compiler

Compiled 470 to 295 computations (37.2% saved)

regimes25.0ms (0.2%)

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

2 calls:

15.0ms
y
8.0ms
x
Results
ErrorSegmentsBranch
9.8b2x
7.4b4y
Compiler

Compiled 41 to 22 computations (46.3% saved)

bsearch105.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
77.0ms
1.7720663415410714e-11
7.375979757673447e-11
11.0ms
1.844270545549364e-26
1.4418982380889534e-25
16.0ms
9.076966289167308e-154
7.765137824142784e-149
Results
101.0ms336×body256valid
Compiler

Compiled 452 to 277 computations (38.7% saved)

regimes23.0ms (0.2%)

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

2 calls:

14.0ms
y
8.0ms
x
Results
ErrorSegmentsBranch
9.8b2x
7.4b4y
Compiler

Compiled 32 to 18 computations (43.8% saved)

bsearch693.0ms (6.8%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
1.7720663415410714e-11
7.375979757673447e-11
11.0ms
1.844270545549364e-26
1.4418982380889534e-25
671.0ms
9.076966289167308e-154
7.765137824142784e-149
Results
689.0ms336×body256valid
Compiler

Compiled 440 to 265 computations (39.8% saved)

regimes9.0ms (0.1%)

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

2 calls:

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

Compiled 25 to 15 computations (40% saved)

regimes7.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0.0b (0%)

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

2 calls:

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

Compiled 18 to 12 computations (33.3% saved)

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
050390
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
(if (<=.f64 y 3858268470200245/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2))) (if (<=.f64 y 22118353849861/170141183460469231731687303715884105728) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 870426590122533/38685626227668133590597632) (*.f64 (+.f64 x (+.f64 y y)) x) (+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y)))))
(if (<=.f64 y 8868258871803549/115172193140305827399949785796761135587064246228529065807379342658863042065190089480167441564259605943037975312218134915154131611020654072038617988630148194691448832) (*.f64 (+.f64 x (+.f64 y y)) x) (if (<=.f64 y 6620533730813779/174224571863520493293247799005065324265472) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 5570730176784211/309485009821345068724781056) (*.f64 (+.f64 x (+.f64 y y)) x) (+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y)))))
(if (<=.f64 y 8868258871803549/115172193140305827399949785796761135587064246228529065807379342658863042065190089480167441564259605943037975312218134915154131611020654072038617988630148194691448832) (*.f64 (+.f64 x (+.f64 y y)) x) (if (<=.f64 y 3266710722441009/43556142965880123323311949751266331066368) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 6653927711158919/309485009821345068724781056) (*.f64 (+.f64 x (+.f64 y y)) x) (*.f64 (+.f64 y (+.f64 x x)) y))))
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 2 (*.f64 y x))
Outputs
(+.f64 (*.f64 x x) (*.f64 y (+.f64 (*.f64 x 2) y)))
(if (<=.f64 y 3858268470200245/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 (*.f64 x x) (*.f64 y (*.f64 x 2))) (if (<=.f64 y 22118353849861/170141183460469231731687303715884105728) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 870426590122533/38685626227668133590597632) (*.f64 (+.f64 x (+.f64 y y)) x) (+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y)))))
(if (<=.f64 y 8868258871803549/115172193140305827399949785796761135587064246228529065807379342658863042065190089480167441564259605943037975312218134915154131611020654072038617988630148194691448832) (*.f64 (+.f64 x (+.f64 y y)) x) (if (<=.f64 y 6620533730813779/174224571863520493293247799005065324265472) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 5570730176784211/309485009821345068724781056) (*.f64 (+.f64 x (+.f64 y y)) x) (+.f64 (*.f64 2 (*.f64 y x)) (*.f64 y y)))))
(if (<=.f64 y 8868258871803549/115172193140305827399949785796761135587064246228529065807379342658863042065190089480167441564259605943037975312218134915154131611020654072038617988630148194691448832) (*.f64 (+.f64 x (+.f64 y y)) x) (if (<=.f64 y 3266710722441009/43556142965880123323311949751266331066368) (*.f64 (+.f64 y (+.f64 x x)) y) (if (<=.f64 y 6653927711158919/309485009821345068724781056) (*.f64 (+.f64 x (+.f64 y y)) x) (*.f64 (+.f64 y (+.f64 x x)) y))))
(*.f64 (+.f64 x (+.f64 y y)) x)
(*.f64 2 (*.f64 y x))
Compiler

Compiled 161 to 84 computations (47.8% saved)

soundness162.0ms (1.6%)

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)

end144.0ms (1.4%)

Compiler

Compiled 177 to 71 computations (59.9% saved)

Profiling

Loading profile data...