Details

Time bar (total: 3.6s)

analyze139.0ms (3.9%)

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
30.8%25%56.2%0.1%18.7%0%0%6
38.1%25%40.6%0.1%34.3%0%0%7
50%31.2%31.2%0.1%37.5%0%0%8
64.9%39%21.1%0.1%39.8%0%0%9
72.8%42.9%16%0.1%41%0%0%10
81.5%47.2%10.7%0.1%42%0%0%11
85.9%49.4%8.1%0.1%42.4%0%0%12
Compiler

Compiled 10 to 5 computations (50% saved)

sample2.3s (62.6%)

Results
2.2s8256×body256valid
21.0ms177×body256infinite
Bogosity

preprocess11.0ms (0.3%)

Algorithm
egg-herbie
Rules
rational.json-simplify-54
rational.json-simplify-55
swap-x-y
rational.json-simplify-73
rational.json-simplify-71
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0838
11038
21238
31438
41838
51838
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(*.f64 (+.f64 x y) (+.f64 x y))
(*.f64 (+.f64 y x) (+.f64 y x))
Outputs
(*.f64 (+.f64 x y) (+.f64 x y))
(*.f64 (+.f64 y x) (+.f64 y x))
(*.f64 (+.f64 x y) (+.f64 x y))
Symmetry

(sort x y)

Compiler

Compiled 11 to 6 computations (45.5% saved)

simplify27.0ms (0.8%)

Algorithm
egg-herbie
Rules
rational.json-simplify-54
rational.json-simplify-55
rational.json-simplify-73
rational.json-simplify-71
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0619
1919
21119
31319
41719
51719
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (+.f64 x y))
Outputs
(*.f64 (+.f64 x y) (+.f64 x y))

eval1.0ms (0%)

Compiler

Compiled 9 to 4 computations (55.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 4 computations (55.6% saved)

localize8.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 4 computations (71.4% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite110.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
1436×rational.json-5
1434×exponential.json-3
1434×rational.json-1
1434×rational.json-2
1434×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0619
15319
219119
369619
4283819
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (+.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x y) (+.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (+.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (+.f64 x y) (fabs.f64 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (neg.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (+.f64 x y) (-.f64 (neg.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (+.f64 x y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (-.f64 (neg.f64 x) y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) 2) (*.f64 (fabs.f64 (+.f64 x y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (-.f64 0 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))))))

simplify169.0ms (4.7%)

Algorithm
egg-herbie
Rules
1882×rational.json-simplify-47
1260×rational.json-simplify-111
1152×rational.json-simplify-49
1090×rational.json-simplify-50
1046×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0911269
12171269
23701269
311671269
443261269
Stop Event
node limit
Counts
55 → 48
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 (*.f64 (+.f64 x y) (+.f64 x y)) 0)
(+.f64 0 (*.f64 (+.f64 x y) (+.f64 x y)))
(-.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 0)
(-.f64 0 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x y) (+.f64 x y)))) 1)
(/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))
(pow.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)
(neg.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(fabs.f64 (*.f64 (+.f64 x y) (+.f64 x y)))
(fabs.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(fabs.f64 (*.f64 (+.f64 x y) (fabs.f64 (+.f64 x y))))
(fabs.f64 (neg.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (*.f64 (+.f64 x y) (-.f64 (neg.f64 x) y)))
(fabs.f64 (*.f64 (+.f64 x y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y)))
(fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (*.f64 (-.f64 (neg.f64 x) y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (*.f64 (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (+.f64 x y)))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) 2) (*.f64 (fabs.f64 (+.f64 x y)) 2))))
(fabs.f64 (/.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(fabs.f64 (/.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(fabs.f64 (-.f64 0 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
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 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 x 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 x 2))
(+.f64 (*.f64 y (*.f64 x 2)) (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
(+.f64 (pow.f64 y 2) (*.f64 x (*.f64 y 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 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 y x)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x 2)) (+.f64 (pow.f64 y 2) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 x (*.f64 y 2)) (pow.f64 x 2)))
(+.f64 (pow.f64 y 2) (+.f64 (*.f64 y (*.f64 2 x)) (pow.f64 x 2)))
(+.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 0)
(*.f64 (+.f64 y x) (+.f64 y x))
(+.f64 0 (*.f64 (+.f64 x y) (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 y x))
(-.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 0)
(*.f64 (+.f64 y x) (+.f64 y x))
(-.f64 0 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(*.f64 (+.f64 y x) (+.f64 y x))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x y) (+.f64 x y)))) 1)
(*.f64 (+.f64 y x) (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)
(*.f64 (+.f64 y x) (+.f64 y x))
(/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 y x))
(pow.f64 (*.f64 (+.f64 x y) (+.f64 x y)) 1)
(*.f64 (+.f64 y x) (+.f64 y x))
(neg.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (+.f64 x y) (+.f64 x y)))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (+.f64 x y) (fabs.f64 (+.f64 x y))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (neg.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (+.f64 x y) (-.f64 (neg.f64 x) y)))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (+.f64 x y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y)))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (fabs.f64 (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (-.f64 (neg.f64 x) y) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (*.f64 (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (/.f64 (+.f64 x y) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (fabs.f64 (+.f64 x y)))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (/.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (+.f64 x y) (+.f64 x y)))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (fabs.f64 (+.f64 x y)) (-.f64 (neg.f64 x) y))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (/.f64 (*.f64 (+.f64 x y) 2) (*.f64 (fabs.f64 (+.f64 x y)) 2))))
(fabs.f64 (/.f64 (*.f64 (+.f64 y x) (+.f64 y x)) (/.f64 (*.f64 2 (+.f64 y x)) (*.f64 2 (fabs.f64 (+.f64 y x))))))
(fabs.f64 (/.f64 (neg.f64 (*.f64 (+.f64 x y) (+.f64 x y))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))) (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y)))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (fabs.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))
(fabs.f64 (-.f64 0 (/.f64 (*.f64 (+.f64 x y) (+.f64 x y)) (neg.f64 (/.f64 (+.f64 x y) (+.f64 x y))))))
(*.f64 (+.f64 y x) (+.f64 y x))

eval14.0ms (0.4%)

Compiler

Compiled 665 to 189 computations (71.6% saved)

prune16.0ms (0.4%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New47148
Fresh000
Picked011
Done000
Total47249
Error
0.0b
Counts
49 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
24.8b
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
0.0b
(*.f64 (+.f64 x y) (+.f64 x y))
Compiler

Compiled 20 to 12 computations (40% saved)

localize18.0ms (0.5%)

Local error

Found 2 expressions with local error:

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

Compiled 25 to 16 computations (36% saved)

series8.0ms (0.2%)

Counts
2 → 24
Calls

9 calls:

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

rewrite103.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
1990×rational.json-5
1988×rational.json-1
1988×rational.json-2
1988×rational.json-4
1988×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
17832
226032
396932
4384332
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(pow.f64 y 2)
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 y 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 y 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (pow.f64 y 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 y 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y y) 2) (/.f64 1 (pow.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y y) 2) (*.f64 (/.f64 1 (pow.f64 y 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y y) 2) (pow.f64 (/.f64 1 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 y y))) 2) (/.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 y 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))) (/.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)))))

simplify208.0ms (5.8%)

Algorithm
egg-herbie
Rules
1494×rational.json-simplify-47
1130×rational.json-simplify-49
1068×rational.json-simplify-2
860×rational.json-simplify-50
806×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055876
1103876
2291876
31476876
45777876
Stop Event
node limit
Counts
48 → 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 (pow.f64 y 2) 0)
(+.f64 0 (pow.f64 y 2))
(-.f64 (pow.f64 y 2) 0)
(*.f64 (pow.f64 y 2) 1)
(*.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))
(*.f64 1 (pow.f64 y 2))
(*.f64 (pow.f64 (*.f64 y y) 2) (/.f64 1 (pow.f64 y 2)))
(*.f64 (pow.f64 (*.f64 y y) 2) (*.f64 (/.f64 1 (pow.f64 y 2)) 1))
(*.f64 (pow.f64 (*.f64 y y) 2) (pow.f64 (/.f64 1 y) 2))
(*.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2))
(*.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 y y))) 2) (/.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2)))
(/.f64 (pow.f64 y 2) 1)
(/.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))
(-.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 0)
(*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
(*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(*.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))
(*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) 1))
(*.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(*.f64 (*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))) (/.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))))
(/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
(/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(pow.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
Outputs
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(pow.f64 y 2)
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(*.f64 2 (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.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 2 (*.f64 y x)))
(+.f64 (*.f64 2 (*.f64 y x)) (pow.f64 y 2))
(+.f64 (pow.f64 y 2) (*.f64 2 (*.f64 y x)))
(+.f64 (pow.f64 y 2) 0)
(pow.f64 y 2)
(+.f64 0 (pow.f64 y 2))
(pow.f64 y 2)
(-.f64 (pow.f64 y 2) 0)
(pow.f64 y 2)
(*.f64 (pow.f64 y 2) 1)
(pow.f64 y 2)
(*.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))
(pow.f64 y 2)
(*.f64 1 (pow.f64 y 2))
(pow.f64 y 2)
(*.f64 (pow.f64 (*.f64 y y) 2) (/.f64 1 (pow.f64 y 2)))
(pow.f64 y 2)
(*.f64 (pow.f64 (*.f64 y y) 2) (*.f64 (/.f64 1 (pow.f64 y 2)) 1))
(pow.f64 y 2)
(*.f64 (pow.f64 (*.f64 y y) 2) (pow.f64 (/.f64 1 y) 2))
(pow.f64 y 2)
(*.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2))
(pow.f64 y 2)
(*.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 y y))) 2) (/.f64 (/.f64 1 (pow.f64 y 2)) (pow.f64 (*.f64 y y) 2)))
(pow.f64 y 2)
(/.f64 (pow.f64 y 2) 1)
(pow.f64 y 2)
(/.f64 (pow.f64 y 2) (/.f64 (pow.f64 y 2) (pow.f64 y 2)))
(pow.f64 y 2)
(-.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 0)
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) 1))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(*.f64 (*.f64 (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))) (/.f64 (/.f64 1 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))) (*.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (/.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))))
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))
(pow.f64 (+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x))) 1)
(+.f64 (pow.f64 y 2) (*.f64 y (+.f64 x x)))

eval16.0ms (0.4%)

Compiler

Compiled 513 to 274 computations (46.6% saved)

prune12.0ms (0.3%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New28129
Fresh000
Picked011
Done011
Total28331
Error
0.0b
Counts
31 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
24.8b
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
0.0b
(*.f64 (+.f64 x y) (+.f64 x y))
53.6b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 27 to 17 computations (37% saved)

localize9.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

series2.0ms (0.1%)

Counts
1 → 0
Calls

6 calls:

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

rewrite96.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
1520×rational.json-5
1518×exponential.json-3
1518×rational.json-1
1518×rational.json-2
1518×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16113
220813
376613
4295013
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 2 (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y x) (neg.f64 (*.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 (*.f64 y x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 2 (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y x)) (/.f64 (*.f64 y x) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (*.f64 y x) -2))))))

simplify258.0ms (7.2%)

Algorithm
egg-herbie
Rules
1406×rational.json-simplify-43
944×rational.json-simplify-104
928×rational.json-simplify-79
900×rational.json-simplify-73
816×rational.json-simplify-47
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
028183
154177
2120177
3318177
4887171
53307171
64965171
76098171
87552171
Stop Event
node limit
Counts
11 → 23
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) (*.f64 y x))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(+.f64 0 (*.f64 2 (*.f64 y x)))
(-.f64 (*.f64 y x) (neg.f64 (*.f64 y x)))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(-.f64 0 (*.f64 (*.f64 y x) -2))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 2 (*.f64 y x)))) 1)
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(/.f64 (*.f64 2 (*.f64 y x)) (/.f64 (*.f64 y x) (*.f64 y x)))
(pow.f64 (*.f64 2 (*.f64 y x)) 1)
(neg.f64 (*.f64 (*.f64 y x) -2))
Outputs
(+.f64 (*.f64 y x) (*.f64 y x))
(*.f64 y (+.f64 x x))
(*.f64 x (+.f64 y y))
(+.f64 (*.f64 2 (*.f64 y x)) 0)
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(+.f64 0 (*.f64 2 (*.f64 y x)))
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(-.f64 (*.f64 y x) (neg.f64 (*.f64 y x)))
(-.f64 (*.f64 y x) (*.f64 x (neg.f64 y)))
(*.f64 y (-.f64 x (neg.f64 x)))
(-.f64 (*.f64 2 (*.f64 y x)) 0)
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(-.f64 0 (*.f64 (*.f64 y x) -2))
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 2 (*.f64 y x)))) 1)
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(/.f64 (*.f64 2 (*.f64 y x)) 1)
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(/.f64 (*.f64 2 (*.f64 y x)) (/.f64 (*.f64 y x) (*.f64 y x)))
(/.f64 (*.f64 y (*.f64 x 2)) (/.f64 (*.f64 y x) (*.f64 y x)))
(*.f64 (*.f64 (*.f64 y x) (*.f64 y x)) (/.f64 2 (*.f64 y x)))
(*.f64 (*.f64 (*.f64 y x) 2) (/.f64 (*.f64 y x) (*.f64 y x)))
(*.f64 y (*.f64 (*.f64 y (*.f64 x x)) (/.f64 2 (*.f64 y x))))
(*.f64 y (*.f64 (*.f64 x (*.f64 y 2)) (/.f64 x (*.f64 y x))))
(pow.f64 (*.f64 2 (*.f64 y x)) 1)
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))
(neg.f64 (*.f64 (*.f64 y x) -2))
(*.f64 y (*.f64 x 2))
(*.f64 (*.f64 y x) 2)
(*.f64 x (*.f64 y 2))

eval6.0ms (0.2%)

Compiler

Compiled 193 to 86 computations (55.4% saved)

prune12.0ms (0.3%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New22123
Fresh000
Picked011
Done022
Total22426
Error
0.0b
Counts
26 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
24.8b
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
0.0b
(*.f64 (+.f64 x y) (+.f64 x y))
53.6b
(*.f64 y (+.f64 x x))
53.6b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 34 to 21 computations (38.2% saved)

localize8.0ms (0.2%)

Compiler

Compiled 12 to 4 computations (66.7% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done033
Total044
Error
0.0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
24.8b
(+.f64 (pow.f64 y 2) (*.f64 y (*.f64 x 2)))
0.0b
(*.f64 (+.f64 x y) (+.f64 x y))
53.6b
(*.f64 y (+.f64 x x))
53.6b
(*.f64 2 (*.f64 y x))
Compiler

Compiled 34 to 21 computations (38.2% saved)

regimes38.0ms (1%)

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

4 calls:

10.0ms
(+.f64 x y)
10.0ms
y
8.0ms
x
7.0ms
(*.f64 (+.f64 x y) (+.f64 x y))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 (+.f64 x y) (+.f64 x y))
0.0b1(+.f64 x y)
Compiler

Compiled 48 to 26 computations (45.8% saved)

regimes16.0ms (0.4%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

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

2 calls:

8.0ms
x
6.0ms
y
Results
ErrorSegmentsBranch
53.6b1x
53.6b1y
Compiler

Compiled 18 to 11 computations (38.9% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 16 to 9 computations (43.8% saved)

soundness0.0ms (0%)

end31.0ms (0.9%)

Remove

(sort x y)

Compiler

Compiled 32 to 15 computations (53.1% saved)

Profiling

Loading profile data...