Details

Time bar (total: 7.2s)

analyze344.0ms (4.8%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
28.6%25%62.4%0.1%12.5%0%0%6
42.9%37.5%50%0.1%12.5%0%0%7
55.6%46.8%37.5%0.1%15.6%0%0%8
63.6%53.1%30.4%0.1%16.4%0%0%9
73.9%58.5%20.7%0.1%20.7%0%0%10
79.3%62%16.2%0.1%21.7%0%0%11
85.7%65%10.8%0.1%24.1%0%0%12
Compiler

Compiled 12 to 8 computations (33.3% saved)

sample4.6s (64.2%)

Results
4.4s8256×body256valid
184.0ms468×body256infinite
Bogosity

preprocess144.0ms (2%)

Algorithm
egg-herbie
Rules
1112×rational.json-simplify-2
926×rational.json-simplify-44
902×rational.json-simplify-37
836×rational.json-simplify-39
822×rational.json-simplify-47
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01350
11938
23138
37338
438238
5396038
6623838
7731938
8799138
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (-.f64 (*.f64 y y) (*.f64 y x)))
Outputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (*.f64 x 2))
(*.f64 2 (-.f64 (*.f64 y y) (*.f64 y x)))
(*.f64 2 (-.f64 (*.f64 y y) (*.f64 x y)))
(*.f64 2 (*.f64 y (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 y 2))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify133.0ms (1.8%)

Algorithm
egg-herbie
Rules
1816×rational.json-simplify-35
1348×rational.json-simplify-53
1022×rational.json-simplify-39
862×rational.json-simplify-59
638×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
11319
21919
34019
419419
5196819
6594219
7782619
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
Outputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))

eval1.0ms (0%)

Compiler

Compiled 18 to 11 computations (38.9% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
0.0b
(*.f64 2 (*.f64 x (-.f64 x y)))
Compiler

Compiled 20 to 13 computations (35% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series4.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite78.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1412×bool.json-1
1412×bool.json-2
1360×rational.json-1
1360×rational.json-2
1360×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
18132
223132
348832
495632
5213132
6479932
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 x (-.f64 x y))
(*.f64 2 (*.f64 x (-.f64 x y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 x y) (*.f64 x 1/2)) (*.f64 (-.f64 x y) (*.f64 x 1/2)))))) (#(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 (*.f64 x (*.f64 (-.f64 x y) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (-.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 (-.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 (-.f64 x y) 2)) (*.f64 x (*.f64 (-.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 (-.f64 x y) 2)) (*.f64 x (*.f64 (-.f64 x y) 2)))))))

simplify857.0ms (11.9%)

Algorithm
egg-herbie
Rules
3542×rational.json-simplify-2
3494×rational.json-simplify-35
1982×rational.json-simplify-53
990×rational.json-simplify-1
800×rational.json-simplify-49
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0591630
11471456
23111456
37951456
420651456
536561456
642171456
743671456
844751456
945811456
1046871456
1155521456
1260881456
1361981456
1461981456
1563031456
1664081456
1767271456
1871381456
1973861456
2075741456
2177181456
2278261456
2379321456
Stop Event
node limit
Counts
70 → 36
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 x (-.f64 x y)) 0)
(+.f64 0 (*.f64 x (-.f64 x y)))
(+.f64 (*.f64 (-.f64 x y) (*.f64 x 1/2)) (*.f64 (-.f64 x y) (*.f64 x 1/2)))
(-.f64 (*.f64 x (-.f64 x y)) 0)
(/.f64 (*.f64 x (-.f64 x y)) 1)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 4)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 8)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 64)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(+.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)
(+.f64 0 (*.f64 x (*.f64 (-.f64 x y) 2)))
(-.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 1)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 4)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))))) 64)
Outputs
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (neg.f64 x)) (pow.f64 x 2))
(*.f64 -2 (*.f64 y x))
(*.f64 y (*.f64 x -2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 y x))
(*.f64 y (*.f64 x -2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 y x))
(*.f64 y (*.f64 x -2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -2)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 x (-.f64 x y)) 0)
(*.f64 x (-.f64 x y))
(+.f64 0 (*.f64 x (-.f64 x y)))
(*.f64 x (-.f64 x y))
(+.f64 (*.f64 (-.f64 x y) (*.f64 x 1/2)) (*.f64 (-.f64 x y) (*.f64 x 1/2)))
(*.f64 x (-.f64 x y))
(-.f64 (*.f64 x (-.f64 x y)) 0)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (-.f64 x y)) 1)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 2)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 4)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 8)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 16)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 32)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 64)
(*.f64 x (-.f64 x y))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(+.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(+.f64 0 (*.f64 x (*.f64 (-.f64 x y) 2)))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(-.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 0)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 2)) 1)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 4)) 2)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 x y) 8)) 4)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)) 8)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))) 16)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) 32)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 x y) 8))))) 64)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 x (*.f64 2 (-.f64 x y)))

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite74.0ms (1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0944
19032
225032
358132
4182632
5573032
Stop Event
node limit
Counts
2 → 44
Calls
Call 1
Inputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(-.f64 (*.f64 x x) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2 (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x (-.f64 x y)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x x) (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 2 (*.f64 x (-.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 2 (*.f64 x (-.f64 x y))) (*.f64 2 (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 2 (*.f64 x (-.f64 x y))) (*.f64 2 (*.f64 x (-.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 (*.f64 x (-.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (*.f64 x (-.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (-.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 x y)) (/.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 x (-.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 2) (*.f64 2 (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (-.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (-.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (-.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) (+.f64 x x)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (-.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))))

simplify122.0ms (1.7%)

Algorithm
egg-herbie
Rules
972×rational.json-simplify-1
938×rational.json-simplify-59
906×rational.json-simplify-2
840×rational.json-simplify-51
828×rational.json-simplify-19
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0881964
11821844
24341808
313831808
431231808
554071808
668591808
Stop Event
node limit
Counts
92 → 65
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 x x) (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(+.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)
(+.f64 0 (*.f64 2 (*.f64 x (-.f64 x y))))
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x (-.f64 x y)) (*.f64 x x)))
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x x) (*.f64 x (-.f64 x y))))
(+.f64 -1 (+.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) (*.f64 x (-.f64 x y))))
(+.f64 (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))) (*.f64 x x))
(-.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)
(/.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 2)
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8))) 16)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 x y)) 0)
(+.f64 0 (*.f64 x (-.f64 x y)))
(+.f64 (neg.f64 (*.f64 x y)) (*.f64 x x))
(+.f64 -1 (-.f64 (*.f64 x (-.f64 x y)) -1))
(+.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) -1)
(*.f64 2 (/.f64 (*.f64 x (-.f64 x y)) 2))
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 x (-.f64 x y)) 1)
(*.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1/2)
(*.f64 1 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 1/4)
(*.f64 (*.f64 x (-.f64 y x)) -1)
(*.f64 (-.f64 x y) x)
(*.f64 4 (/.f64 (*.f64 x (-.f64 x y)) 4))
(*.f64 (*.f64 2 (-.f64 x y)) (/.f64 x 2))
(*.f64 -1 (*.f64 x (-.f64 y x)))
(*.f64 1/2 (*.f64 2 (*.f64 x (-.f64 x y))))
(*.f64 (/.f64 x 2) (*.f64 2 (-.f64 x y)))
(*.f64 (/.f64 (*.f64 x (-.f64 x y)) 2) 2)
(*.f64 (/.f64 (*.f64 x (-.f64 x y)) 4) 4)
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 x y)) 4))
(/.f64 (*.f64 x (-.f64 x y)) 1)
(/.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 2)
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 4)
(/.f64 (*.f64 x (-.f64 y x)) -1)
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 8)
(/.f64 (*.f64 (-.f64 y x) (+.f64 x x)) -2)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 16)
(neg.f64 (*.f64 x (-.f64 y x)))
Outputs
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 -2 (*.f64 y x)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (pow.f64 x 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (neg.f64 (*.f64 y x)))
(+.f64 (pow.f64 x 2) (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 x x) (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x (+.f64 x (-.f64 x y))))
(*.f64 x (+.f64 (+.f64 x (-.f64 x y)) (neg.f64 y)))
(*.f64 x (+.f64 x (+.f64 (-.f64 x y) (neg.f64 y))))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(+.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(+.f64 0 (*.f64 2 (*.f64 x (-.f64 x y))))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x (-.f64 x y)) (*.f64 x x)))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x (+.f64 x (-.f64 x y))))
(*.f64 x (+.f64 (+.f64 x (-.f64 x y)) (neg.f64 y)))
(*.f64 x (+.f64 x (+.f64 (-.f64 x y) (neg.f64 y))))
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 (*.f64 x x) (*.f64 x (-.f64 x y))))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x (+.f64 x (-.f64 x y))))
(*.f64 x (+.f64 (+.f64 x (-.f64 x y)) (neg.f64 y)))
(*.f64 x (+.f64 x (+.f64 (-.f64 x y) (neg.f64 y))))
(+.f64 -1 (+.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) (*.f64 x (-.f64 x y))))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(+.f64 (+.f64 (*.f64 x (-.f64 x y)) (neg.f64 (*.f64 x y))) (*.f64 x x))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x (+.f64 x (-.f64 x y))))
(*.f64 x (+.f64 (+.f64 x (-.f64 x y)) (neg.f64 y)))
(*.f64 x (+.f64 x (+.f64 (-.f64 x y) (neg.f64 y))))
(-.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 0)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(/.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 2)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 4)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 8)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8))) 16)
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (-.f64 x y) (+.f64 x x))
(*.f64 -2 (*.f64 x (-.f64 y x)))
(*.f64 (-.f64 y x) (*.f64 -2 x))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 x y)))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y x)))
(*.f64 x (+.f64 x (neg.f64 y)))
(+.f64 (*.f64 x (-.f64 x y)) 0)
(*.f64 x (-.f64 x y))
(+.f64 0 (*.f64 x (-.f64 x y)))
(*.f64 x (-.f64 x y))
(+.f64 (neg.f64 (*.f64 x y)) (*.f64 x x))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y x)))
(*.f64 x (+.f64 x (neg.f64 y)))
(+.f64 -1 (-.f64 (*.f64 x (-.f64 x y)) -1))
(*.f64 x (-.f64 x y))
(+.f64 (-.f64 (*.f64 x (-.f64 x y)) -1) -1)
(*.f64 x (-.f64 x y))
(*.f64 2 (/.f64 (*.f64 x (-.f64 x y)) 2))
(*.f64 x (-.f64 x y))
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 x (-.f64 x y)) 1)
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1/2)
(*.f64 x (-.f64 x y))
(*.f64 1 (*.f64 x (-.f64 x y)))
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 1/4)
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 x (-.f64 y x)) -1)
(*.f64 x (-.f64 x y))
(*.f64 (-.f64 x y) x)
(*.f64 x (-.f64 x y))
(*.f64 4 (/.f64 (*.f64 x (-.f64 x y)) 4))
(*.f64 x (-.f64 x y))
(*.f64 (*.f64 2 (-.f64 x y)) (/.f64 x 2))
(*.f64 x (-.f64 x y))
(*.f64 -1 (*.f64 x (-.f64 y x)))
(*.f64 x (-.f64 x y))
(*.f64 1/2 (*.f64 2 (*.f64 x (-.f64 x y))))
(*.f64 x (-.f64 x y))
(*.f64 (/.f64 x 2) (*.f64 2 (-.f64 x y)))
(*.f64 x (-.f64 x y))
(*.f64 (/.f64 (*.f64 x (-.f64 x y)) 2) 2)
(*.f64 x (-.f64 x y))
(*.f64 (/.f64 (*.f64 x (-.f64 x y)) 4) 4)
(*.f64 x (-.f64 x y))
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 x y)) 4))
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (-.f64 x y)) 1)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 2)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 4) 4)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 x (-.f64 y x)) -1)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 (*.f64 x (-.f64 x y)) 8) 8)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 (-.f64 y x) (+.f64 x x)) -2)
(*.f64 x (-.f64 x y))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 x y)) 8)) 16)
(*.f64 x (-.f64 x y))
(neg.f64 (*.f64 x (-.f64 y x)))
(*.f64 x (-.f64 x y))

eval18.0ms (0.2%)

Compiler

Compiled 1017 to 494 computations (51.4% saved)

prune54.0ms (0.8%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New992101
Fresh000
Picked011
Done101
Total1003103
Error
0.0b
Counts
103 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (-.f64 y x) (*.f64 -2 x))
22.0b
(*.f64 y (*.f64 x -2))
0.0b
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 27 to 18 computations (33.3% saved)

localize5.0ms (0.1%)

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 y x) (*.f64 -2 x))
Compiler

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite82.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1394×rational.json-simplify-35
1306×bool.json-1
1306×bool.json-2
1260×rational.json-1
1260×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18119
223219
351019
4104619
5237219
6499319
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(*.f64 (-.f64 y x) (*.f64 -2 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (-.f64 y x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 x (*.f64 (-.f64 y x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) (*.f64 x -4)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 y x) -8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 y x) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 y x)) 4) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (*.f64 (-.f64 y x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 (-.f64 y x) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 (-.f64 y x) -2)) (*.f64 x (*.f64 (-.f64 y x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 (-.f64 y x) -2)) (*.f64 x (*.f64 (-.f64 y x) -2)))))))

simplify435.0ms (6%)

Algorithm
egg-herbie
Rules
2858×rational.json-simplify-2
2298×rational.json-simplify-35
1892×rational.json-simplify-53
1060×rational.json-simplify-1
1002×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057959
1133959
2278959
3647959
42800959
53807959
64895959
75128959
85343959
95583959
106920959
116998959
127625959
137647959
147699959
157731959
167988959
Stop Event
node limit
Counts
41 → 28
Calls
Call 1
Inputs
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)
(+.f64 0 (*.f64 x (*.f64 (-.f64 y x) -2)))
(+.f64 -1 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(+.f64 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))) -1)
(-.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)
(-.f64 0 (*.f64 x (*.f64 (-.f64 y x) 2)))
(/.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 1)
(/.f64 (*.f64 (-.f64 y x) (*.f64 x -4)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 y x) -8)) 4)
(/.f64 (*.f64 x (*.f64 (-.f64 y x) 2)) -1)
(/.f64 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8) 8)
(/.f64 (*.f64 (*.f64 x (-.f64 y x)) 4) -2)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)))) 64)
(neg.f64 (*.f64 x (*.f64 (-.f64 y x) 2)))
Outputs
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(*.f64 -2 (*.f64 y x))
(*.f64 -2 (*.f64 x y))
(*.f64 x (*.f64 y -2))
(*.f64 x (*.f64 -2 y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(*.f64 -2 (*.f64 y x))
(*.f64 -2 (*.f64 x y))
(*.f64 x (*.f64 y -2))
(*.f64 x (*.f64 -2 y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(*.f64 -2 (*.f64 y x))
(*.f64 -2 (*.f64 x y))
(*.f64 x (*.f64 y -2))
(*.f64 x (*.f64 -2 y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 y -2)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x (*.f64 -2 y)))
(+.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(+.f64 0 (*.f64 x (*.f64 (-.f64 y x) -2)))
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(+.f64 -1 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))))
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(+.f64 (*.f64 x (-.f64 x y)) (*.f64 x (-.f64 x y)))
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(+.f64 (-.f64 1 (*.f64 x (*.f64 (-.f64 y x) 2))) -1)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(-.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 0)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(-.f64 0 (*.f64 x (*.f64 (-.f64 y x) 2)))
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 1)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 (-.f64 y x) (*.f64 x -4)) 2)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 y x) -8)) 4)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 x (*.f64 (-.f64 y x) 2)) -1)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8) 8)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 (*.f64 x (-.f64 y x)) 4) -2)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)) 16)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) 32)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 (-.f64 y x) -2)) 8)))) 64)
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(neg.f64 (*.f64 x (*.f64 (-.f64 y x) 2)))
(*.f64 x (*.f64 -2 (-.f64 y x)))
(*.f64 2 (*.f64 x (-.f64 x y)))

eval5.0ms (0.1%)

Compiler

Compiled 275 to 168 computations (38.9% saved)

prune7.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New28028
Fresh000
Picked011
Done022
Total28331
Error
0.0b
Counts
31 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (-.f64 y x) (*.f64 -2 x))
22.0b
(*.f64 y (*.f64 x -2))
0.0b
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 27 to 18 computations (33.3% saved)

regimes17.0ms (0.2%)

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

4 calls:

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

Compiled 56 to 34 computations (39.3% saved)

regimes7.0ms (0.1%)

Accuracy

Total -22.0b remaining (-80462.3%)

Threshold costs -22.0b (-80462.3%)

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

2 calls:

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

Compiled 20 to 13 computations (35% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 25 to 17 computations (32% saved)

soundness146.0ms (2%)

Algorithm
egg-herbie
Rules
972×rational.json-simplify-1
938×rational.json-simplify-59
906×rational.json-simplify-2
840×rational.json-simplify-51
828×rational.json-simplify-19
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0881964
11821844
24341808
313831808
431231808
554071808
668591808
Stop Event
node limit
Compiler

Compiled 217 to 106 computations (51.2% saved)

end20.0ms (0.3%)

Compiler

Compiled 21 to 13 computations (38.1% saved)

Profiling

Loading profile data...