Details

Time bar (total: 6.1s)

analyze49.0ms (0.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
50%43.7%43.7%0.1%12.5%0%0%7
57.7%46.8%34.3%0.1%18.7%0%0%8
71.2%57.8%23.4%0.1%18.7%0%0%9
77%60.1%18%0.1%21.9%0%0%10
84.5%66%12.1%0.1%21.9%0%0%11
88%67.3%9.2%0.1%23.4%0%0%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample1.4s (23.5%)

Results
1.3s8256×body256valid
12.0ms161×body256infinite
Bogosity

preprocess7.0ms (0.1%)

Algorithm
egg-herbie
Rules
44×rational_best.json-simplify-2
38×rational_best.json-simplify-44
rational_best.json-simplify-74
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01138
11738
22938
34838
46338
56338
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 (*.f64 y 3) y) x)
Outputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 x (*.f64 x 3)) y)
(*.f64 (*.f64 3 (*.f64 x x)) y)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 (*.f64 (*.f64 y 3) y) x)
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 3 y) (*.f64 x y))
(*.f64 3 (*.f64 x (*.f64 y y)))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify470.0ms (7.8%)

Algorithm
egg-herbie
Rules
30×rational_best.json-simplify-2
20×rational_best.json-simplify-44
rational_best.json-simplify-74
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11119
21719
32919
43919
54019
Stop Event
saturated
Counts
1 → 5
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
Outputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 x (*.f64 x 3)) y)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 3 (*.f64 x (*.f64 x y)))

eval1.0ms (0%)

Compiler

Compiled 37 to 22 computations (40.5% saved)

prune2.0ms (0%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New145
Fresh011
Picked000
Done000
Total156
Error
0.0b
Counts
6 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
7.1b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.3b
(*.f64 x (*.f64 y (*.f64 x 3)))
7.1b
(*.f64 3 (*.f64 y (*.f64 x x)))
0.3b
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 36 to 24 computations (33.3% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (*.f64 x y))
0.2b
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 20 to 7 computations (65% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite138.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
910×rational_best.json-simplify-44
904×rational_best.json-simplify-57
892×rational_best.json-simplify-82
608×rational_best.json-simplify-80
500×rational_best.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17032
223832
3100632
4474132
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 3 y) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (*.f64 (*.f64 3 y) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.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 x (*.f64 x y)) (/.f64 (*.f64 x (*.f64 x y)) (*.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (*.f64 x x) (+.f64 y y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 x y))))))))

simplify205.0ms (3.4%)

Algorithm
egg-herbie
Rules
1518×rational_best.json-simplify-132
1300×rational_best.json-simplify-80
1226×rational_best.json-simplify-78
1072×rational_best.json-simplify-44
700×rational_best.json-simplify-135
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0501088
1981088
22101088
35901088
436141088
576231088
Stop Event
node limit
Counts
68 → 28
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(+.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)
(+.f64 0 (*.f64 (*.f64 3 y) (*.f64 x x)))
(-.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)
(-.f64 0 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))
(/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)
(/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (*.f64 (*.f64 3 y) (*.f64 x x))))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(pow.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)
(neg.f64 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))
(+.f64 (*.f64 x (*.f64 x y)) 0)
(+.f64 0 (*.f64 x (*.f64 x y)))
(-.f64 (*.f64 x (*.f64 x y)) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x y))))
(/.f64 (*.f64 x (*.f64 x y)) 1)
(/.f64 (*.f64 x (*.f64 x y)) (/.f64 (*.f64 x (*.f64 x y)) (*.f64 x (*.f64 x y))))
(/.f64 (*.f64 (*.f64 x x) (+.f64 y y)) 2)
(/.f64 (neg.f64 (*.f64 (*.f64 x x) (+.f64 y y))) -2)
(pow.f64 (*.f64 x (*.f64 x y)) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 x y))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(+.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(+.f64 0 (*.f64 (*.f64 3 y) (*.f64 x x)))
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 0)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 0 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (/.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) (*.f64 (*.f64 3 y) (*.f64 x x))))
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(pow.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(neg.f64 (neg.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))
(*.f64 (*.f64 3 y) (*.f64 x x))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x y)) 0)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(+.f64 0 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(-.f64 (*.f64 x (*.f64 x y)) 0)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x y))))
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x y)) 1)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x y)) (/.f64 (*.f64 x (*.f64 x y)) (*.f64 x (*.f64 x y))))
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(/.f64 (*.f64 (*.f64 x x) (+.f64 y y)) 2)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(/.f64 (neg.f64 (*.f64 (*.f64 x x) (+.f64 y y))) -2)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(pow.f64 (*.f64 x (*.f64 x y)) 1)
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))
(neg.f64 (neg.f64 (*.f64 x (*.f64 x y))))
(*.f64 x (*.f64 y x))
(*.f64 y (*.f64 x x))

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 3 (*.f64 y (*.f64 x x)))
6.8b
(*.f64 y (*.f64 x x))
Compiler

Compiled 20 to 7 computations (65% saved)

series1.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite155.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
940×rational_best.json-simplify-57
716×rational_best.json-simplify-54
554×rational_best.json-5
554×rational_best.json-simplify-43
552×rational_best.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17332
225932
3111532
4557132
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 y (*.f64 x x))
(*.f64 3 (*.f64 y (*.f64 x x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 y (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x x)) (/.f64 (*.f64 y (*.f64 x x)) (*.f64 y (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (+.f64 y y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 x (+.f64 y y)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 y (*.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (*.f64 x (*.f64 y (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))))))

simplify148.0ms (2.4%)

Algorithm
egg-herbie
Rules
1154×rational_best.json-simplify-83
1150×rational_best.json-simplify-82
1090×rational_best.json-simplify-132
956×rational_best.json-simplify-80
934×rational_best.json-simplify-44
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511088
11021088
22101088
35601088
429341088
559481088
Stop Event
node limit
Counts
68 → 29
Calls
Call 1
Inputs
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(+.f64 (*.f64 y (*.f64 x x)) 0)
(+.f64 0 (*.f64 y (*.f64 x x)))
(-.f64 (*.f64 y (*.f64 x x)) 0)
(-.f64 0 (neg.f64 (*.f64 y (*.f64 x x))))
(/.f64 (*.f64 y (*.f64 x x)) 1)
(/.f64 (*.f64 y (*.f64 x x)) (/.f64 (*.f64 y (*.f64 x x)) (*.f64 y (*.f64 x x))))
(/.f64 (*.f64 x (*.f64 x (+.f64 y y))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 x (+.f64 y y)))) -2)
(pow.f64 (*.f64 y (*.f64 x x)) 1)
(neg.f64 (neg.f64 (*.f64 y (*.f64 x x))))
(+.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)
(+.f64 0 (*.f64 x (*.f64 y (*.f64 x 3))))
(-.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)
(/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (*.f64 x (*.f64 y (*.f64 x 3)))))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)
(pow.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))
Outputs
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 x 2) 3))
(+.f64 (*.f64 y (*.f64 x x)) 0)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(+.f64 0 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(-.f64 (*.f64 y (*.f64 x x)) 0)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(-.f64 0 (neg.f64 (*.f64 y (*.f64 x x))))
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x x)) 1)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x x)) (/.f64 (*.f64 y (*.f64 x x)) (*.f64 y (*.f64 x x))))
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(/.f64 (*.f64 x (*.f64 x (+.f64 y y))) 2)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(/.f64 (neg.f64 (*.f64 x (*.f64 x (+.f64 y y)))) -2)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(pow.f64 (*.f64 y (*.f64 x x)) 1)
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(neg.f64 (neg.f64 (*.f64 y (*.f64 x x))))
(*.f64 y (*.f64 x x))
(*.f64 x (*.f64 y x))
(+.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(+.f64 0 (*.f64 x (*.f64 y (*.f64 x 3))))
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(-.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 0)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (/.f64 (*.f64 x (*.f64 y (*.f64 x 3))) (*.f64 x (*.f64 y (*.f64 x 3)))))
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(/.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(pow.f64 (*.f64 x (*.f64 y (*.f64 x 3))) 1)
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))
(neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 3)))))
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(*.f64 3 (*.f64 x (*.f64 y x)))

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 y (*.f64 x 3))
0.2b
(*.f64 x (*.f64 y (*.f64 x 3)))
Compiler

Compiled 20 to 12 computations (40% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite224.0ms (3.7%)

Algorithm
batch-egg-rewrite
Rules
1126×rational_best.json-simplify-44
988×rational_best.json-simplify-57
604×rational_best.json-simplify-80
522×rational_best.json-simplify-43
504×rational_best.json-simplify-47
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17232
224832
3105832
4509532
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 x (*.f64 y (*.f64 x 3)))
(*.f64 y (*.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x (*.f64 x 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 y (*.f64 x (*.f64 x 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 y 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y 3)) (/.f64 (*.f64 y (*.f64 x 6)) (*.f64 y (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 y (*.f64 x 6))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 y 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 y 3))))))))

simplify251.0ms (4.1%)

Algorithm
egg-herbie
Rules
1472×rational_best.json-simplify-80
1332×rational_best.json-simplify-78
1090×rational_best.json-simplify-44
914×rational_best.json-simplify-82
674×rational_best.json-simplify-132
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511088
11051088
22061088
35311088
427371088
549591088
679321088
Stop Event
node limit
Counts
68 → 28
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(+.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))
(-.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))
(/.f64 (*.f64 y (*.f64 x (*.f64 x 6))) 2)
(/.f64 (neg.f64 (*.f64 y (*.f64 x (*.f64 x 6)))) -2)
(pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(+.f64 (*.f64 x (*.f64 y 3)) 0)
(+.f64 0 (*.f64 x (*.f64 y 3)))
(-.f64 (*.f64 x (*.f64 y 3)) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 y 3))))
(/.f64 (*.f64 x (*.f64 y 3)) 1)
(/.f64 (*.f64 x (*.f64 y 3)) (/.f64 (*.f64 y (*.f64 x 6)) (*.f64 y (*.f64 x 6))))
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(/.f64 (neg.f64 (*.f64 y (*.f64 x 6))) -2)
(pow.f64 (*.f64 x (*.f64 y 3)) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 y 3))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(+.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(-.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(/.f64 (*.f64 y (*.f64 x (*.f64 x 6))) 2)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(/.f64 (neg.f64 (*.f64 y (*.f64 x (*.f64 x 6)))) -2)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(+.f64 (*.f64 x (*.f64 y 3)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 0 (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 (*.f64 x (*.f64 y 3)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 y 3))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y 3)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y 3)) (/.f64 (*.f64 y (*.f64 x 6)) (*.f64 y (*.f64 x 6))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (neg.f64 (*.f64 y (*.f64 x 6))) -2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(pow.f64 (*.f64 x (*.f64 y 3)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(neg.f64 (neg.f64 (*.f64 x (*.f64 y 3))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 x 3) x)
6.8b
(*.f64 (*.f64 (*.f64 x 3) x) y)
Compiler

Compiled 20 to 12 computations (40% saved)

series1.0ms (0%)

Counts
2 → 36
Calls

9 calls:

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

rewrite96.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
906×rational_best.json-simplify-57
862×rational_best.json-simplify-44
854×rational_best.json-simplify-82
588×rational_best.json-simplify-80
494×rational_best.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
16832
222632
397732
4458932
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 x 3) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (*.f64 x (*.f64 x (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x 3)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 x 3))))))))

simplify363.0ms (6%)

Algorithm
egg-herbie
Rules
1830×rational_best.json-simplify-80
1542×rational_best.json-simplify-78
742×rational_best.json-simplify-82
722×rational_best.json-simplify-74
714×rational_best.json-simplify-44
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
050932
197932
2188932
3464932
42014932
53705932
66063932
77584932
87987932
Stop Event
node limit
Counts
56 → 28
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)
(+.f64 0 (*.f64 x (*.f64 x (*.f64 3 y))))
(-.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))
(/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)
(/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (*.f64 x (*.f64 x (*.f64 3 y)))))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(pow.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))
(+.f64 (*.f64 x (*.f64 x 3)) 0)
(+.f64 0 (*.f64 x (*.f64 x 3)))
(-.f64 (*.f64 x (*.f64 x 3)) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x 3))))
(/.f64 (*.f64 x (*.f64 x 3)) 1)
(/.f64 (*.f64 x (*.f64 x 3)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))
(/.f64 (*.f64 x (*.f64 x 6)) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)
(pow.f64 (*.f64 x (*.f64 x 3)) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 x 3))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(+.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(+.f64 0 (*.f64 x (*.f64 x (*.f64 3 y))))
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(-.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 0)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (/.f64 (*.f64 x (*.f64 x (*.f64 3 y))) (*.f64 x (*.f64 x (*.f64 3 y)))))
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(pow.f64 (*.f64 x (*.f64 x (*.f64 3 y))) 1)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(neg.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 3 y)))))
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x 3)) 0)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(+.f64 0 (*.f64 x (*.f64 x 3)))
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(-.f64 (*.f64 x (*.f64 x 3)) 0)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 x 3))))
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x 3)) 1)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x 3)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x 6)) 2)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(/.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(pow.f64 (*.f64 x (*.f64 x 3)) 1)
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))
(neg.f64 (neg.f64 (*.f64 x (*.f64 x 3))))
(*.f64 x (*.f64 3 x))
(*.f64 3 (*.f64 x x))

eval22.0ms (0.4%)

Compiler

Compiled 1073 to 603 computations (43.8% saved)

prune16.0ms (0.3%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1094113
Fresh000
Picked011
Done213
Total1116117
Error
0.0b
Counts
117 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
7.1b
(*.f64 (*.f64 (*.f64 x 3) x) y)
7.1b
(*.f64 (*.f64 x x) (*.f64 3 y))
0.3b
(*.f64 (*.f64 x 3) (*.f64 y x))
7.1b
(*.f64 (*.f64 3 (*.f64 x x)) y)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.3b
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 54 to 36 computations (33.3% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (*.f64 3 y))
0.2b
(*.f64 x (*.f64 x (*.f64 3 y)))
Compiler

Compiled 20 to 12 computations (40% saved)

series1.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite96.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
986×rational_best.json-simplify-57
958×rational_best.json-simplify-44
616×rational_best.json-simplify-80
512×rational_best.json-simplify-43
484×rational_best.json-simplify-47
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17032
223932
3102332
4488132
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 x (*.f64 3 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (*.f64 x x)) 6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (*.f64 y (*.f64 x x)) 6)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 3 y)) (/.f64 (*.f64 x (*.f64 y 6)) (*.f64 x (*.f64 y 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 y 6))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 3 y))))))))

simplify134.0ms (2.2%)

Algorithm
egg-herbie
Rules
1580×rational_best.json-simplify-80
1440×rational_best.json-simplify-78
1220×rational_best.json-simplify-44
958×rational_best.json-simplify-82
740×rational_best.json-simplify-132
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0501088
11001088
22031088
35471088
428861088
552561088
Stop Event
node limit
Counts
68 → 27
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(+.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))
(-.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))
(/.f64 (*.f64 (*.f64 y (*.f64 x x)) 6) 2)
(/.f64 (neg.f64 (*.f64 (*.f64 y (*.f64 x x)) 6)) -2)
(pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(+.f64 (*.f64 x (*.f64 3 y)) 0)
(+.f64 0 (*.f64 x (*.f64 3 y)))
(-.f64 (*.f64 x (*.f64 3 y)) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 3 y))))
(/.f64 (*.f64 x (*.f64 3 y)) 1)
(/.f64 (*.f64 x (*.f64 3 y)) (/.f64 (*.f64 x (*.f64 y 6)) (*.f64 x (*.f64 y 6))))
(/.f64 (*.f64 x (*.f64 y 6)) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 y 6))) -2)
(pow.f64 (*.f64 x (*.f64 3 y)) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 3 y))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(+.f64 0 (*.f64 3 (*.f64 y (*.f64 x x))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 0)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (/.f64 (*.f64 3 (*.f64 y (*.f64 x x))) (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 (*.f64 y (*.f64 x x)) 6) 2)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (neg.f64 (*.f64 (*.f64 y (*.f64 x x)) 6)) -2)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(pow.f64 (*.f64 3 (*.f64 y (*.f64 x x))) 1)
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(neg.f64 (neg.f64 (*.f64 3 (*.f64 y (*.f64 x x)))))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 3 y)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 0 (*.f64 x (*.f64 3 y)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 (*.f64 x (*.f64 3 y)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 3 y))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 3 y)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 3 y)) (/.f64 (*.f64 x (*.f64 y 6)) (*.f64 x (*.f64 y 6))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y 6)) 2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (neg.f64 (*.f64 x (*.f64 y 6))) -2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(pow.f64 (*.f64 x (*.f64 3 y)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(neg.f64 (neg.f64 (*.f64 x (*.f64 3 y))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 3 (*.f64 x x))
6.8b
(*.f64 (*.f64 3 (*.f64 x x)) y)
Compiler

Compiled 20 to 9 computations (55% saved)

series1.0ms (0%)

Counts
2 → 36
Calls

9 calls:

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

rewrite185.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
1010×rational_best.json-simplify-57
968×rational_best.json-simplify-44
744×rational_best.json-simplify-78
508×rational_best.json-5
506×rational_best.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17132
224832
3106232
4543632
Stop Event
node limit
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 (*.f64 3 (*.f64 x x)) y)
(*.f64 3 (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x (*.f64 x y))) (/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) (*.f64 x (*.f64 x (*.f64 y 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x x)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 3 (*.f64 x x))))))))

simplify439.0ms (7.3%)

Algorithm
egg-herbie
Rules
1600×rational_best.json-simplify-80
1342×rational_best.json-simplify-47
1264×rational_best.json-simplify-2
954×rational_best.json-simplify-82
932×rational_best.json-simplify-74
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
051932
199932
2185932
3407932
41412932
53288932
64623932
76541932
87467932
97870932
Stop Event
node limit
Counts
56 → 27
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(+.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)
(+.f64 0 (*.f64 3 (*.f64 x (*.f64 x y))))
(-.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))
(/.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)
(/.f64 (*.f64 3 (*.f64 x (*.f64 x y))) (/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) (*.f64 x (*.f64 x (*.f64 y 6)))))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)
(pow.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)
(neg.f64 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))
(+.f64 (*.f64 3 (*.f64 x x)) 0)
(+.f64 0 (*.f64 3 (*.f64 x x)))
(-.f64 (*.f64 3 (*.f64 x x)) 0)
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 x x))))
(/.f64 (*.f64 3 (*.f64 x x)) 1)
(/.f64 (*.f64 3 (*.f64 x x)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))
(/.f64 (*.f64 x (*.f64 x 6)) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)
(pow.f64 (*.f64 3 (*.f64 x x)) 1)
(neg.f64 (neg.f64 (*.f64 3 (*.f64 x x))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(+.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(+.f64 0 (*.f64 3 (*.f64 x (*.f64 x y))))
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(-.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 0)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 3 (*.f64 x (*.f64 x y))) (/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) (*.f64 x (*.f64 x (*.f64 y 6)))))
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (neg.f64 (*.f64 x (*.f64 x (*.f64 y 6)))) -2)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(pow.f64 (*.f64 3 (*.f64 x (*.f64 x y))) 1)
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(neg.f64 (neg.f64 (*.f64 3 (*.f64 x (*.f64 x y)))))
(*.f64 3 (*.f64 x (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 x x)) 0)
(*.f64 3 (*.f64 x x))
(+.f64 0 (*.f64 3 (*.f64 x x)))
(*.f64 3 (*.f64 x x))
(-.f64 (*.f64 3 (*.f64 x x)) 0)
(*.f64 3 (*.f64 x x))
(-.f64 0 (neg.f64 (*.f64 3 (*.f64 x x))))
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 3 (*.f64 x x)) 1)
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 3 (*.f64 x x)) (/.f64 (*.f64 x (*.f64 x 6)) (*.f64 x (*.f64 x 6))))
(*.f64 3 (*.f64 x x))
(/.f64 (*.f64 x (*.f64 x 6)) 2)
(*.f64 3 (*.f64 x x))
(/.f64 (neg.f64 (*.f64 x (*.f64 x 6))) -2)
(*.f64 3 (*.f64 x x))
(pow.f64 (*.f64 3 (*.f64 x x)) 1)
(*.f64 3 (*.f64 x x))
(neg.f64 (neg.f64 (*.f64 3 (*.f64 x x))))
(*.f64 3 (*.f64 x x))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (*.f64 x 3) (*.f64 y x))
Compiler

Compiled 18 to 9 computations (50% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite92.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
952×rational_best.json-simplify-44
942×rational_best.json-simplify-57
898×rational_best.json-simplify-82
596×rational_best.json-simplify-80
518×rational_best.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
17019
223819
3102919
4489319
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (*.f64 x 3) (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 3 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (*.f64 x (*.f64 3 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))))))

simplify267.0ms (4.4%)

Algorithm
egg-herbie
Rules
1636×rational_best.json-simplify-80
1612×rational_best.json-simplify-47
1580×rational_best.json-simplify-82
1496×rational_best.json-simplify-78
656×rational_best.json-simplify-44
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033646
166646
2133646
3343646
41710646
54333646
66448646
Stop Event
node limit
Counts
34 → 15
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(+.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)
(+.f64 0 (*.f64 x (*.f64 3 (*.f64 x y))))
(-.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)
(-.f64 0 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))
(/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)
(/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (*.f64 x (*.f64 3 (*.f64 x y)))))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(pow.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)
(neg.f64 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 y (*.f64 3 (pow.f64 x 2)))
(+.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(+.f64 0 (*.f64 x (*.f64 3 (*.f64 x y))))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(-.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 0)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(-.f64 0 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (/.f64 (*.f64 x (*.f64 3 (*.f64 x y))) (*.f64 x (*.f64 3 (*.f64 x y)))))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y (*.f64 x 6))) 2)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x 6)))) -2)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(pow.f64 (*.f64 x (*.f64 3 (*.f64 x y))) 1)
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(neg.f64 (neg.f64 (*.f64 x (*.f64 3 (*.f64 x y)))))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.8b
(*.f64 (*.f64 x x) (*.f64 3 y))
Compiler

Compiled 18 to 9 computations (50% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite309.0ms (5.1%)

Algorithm
batch-egg-rewrite
Rules
1062×rational_best.json-simplify-57
982×rational_best.json-simplify-44
948×rational_best.json-simplify-54
552×rational_best.json-5
550×rational_best.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
17119
224819
3109019
4650119
Stop Event
node limit
Counts
1 → 9
Calls
Call 1
Inputs
(*.f64 (*.f64 x x) (*.f64 3 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 x x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (*.f64 (*.f64 x x) (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))))))

simplify169.0ms (2.8%)

Algorithm
egg-herbie
Rules
1874×rational_best.json-simplify-80
1780×rational_best.json-simplify-78
1608×rational_best.json-simplify-47
1052×rational_best.json-simplify-132
856×rational_best.json-simplify-76
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030627
156627
2122627
3348627
42340627
56150627
Stop Event
node limit
Counts
33 → 15
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)
(+.f64 0 (*.f64 (*.f64 x x) (*.f64 3 y)))
(-.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)
(-.f64 0 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))
(/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)
(/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (*.f64 (*.f64 x x) (*.f64 3 y))))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(pow.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)
(neg.f64 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 (pow.f64 x 2) (*.f64 3 y))
(+.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(+.f64 0 (*.f64 (*.f64 x x) (*.f64 3 y)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 0)
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(-.f64 0 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (/.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) (*.f64 (*.f64 x x) (*.f64 3 y))))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 x (*.f64 y 6))) 2)
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(pow.f64 (*.f64 (*.f64 x x) (*.f64 3 y)) 1)
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))
(neg.f64 (neg.f64 (*.f64 (*.f64 x x) (*.f64 3 y))))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (*.f64 3 (*.f64 x x)))

eval14.0ms (0.2%)

Compiler

Compiled 795 to 438 computations (44.9% saved)

prune14.0ms (0.2%)

Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New84084
Fresh000
Picked011
Done055
Total84690
Error
0.0b
Counts
90 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
7.1b
(*.f64 (*.f64 (*.f64 x 3) x) y)
7.1b
(*.f64 (*.f64 x x) (*.f64 3 y))
0.3b
(*.f64 (*.f64 x 3) (*.f64 y x))
7.1b
(*.f64 (*.f64 3 (*.f64 x x)) y)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.3b
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 54 to 36 computations (33.3% saved)

regimes103.0ms (1.7%)

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

4 calls:

86.0ms
(*.f64 (*.f64 (*.f64 x 3) x) y)
6.0ms
x
5.0ms
y
4.0ms
(*.f64 (*.f64 x 3) x)
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(*.f64 (*.f64 (*.f64 x 3) x) y)
0.3b1(*.f64 (*.f64 x 3) x)
Compiler

Compiled 80 to 47 computations (41.3% saved)

regimes7.0ms (0.1%)

Accuracy

Total -6.9b remaining (-2470.7%)

Threshold costs -6.9b (-2470.7%)

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

2 calls:

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

Compiled 22 to 14 computations (36.4% saved)

simplify74.0ms (1.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01138
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 3 (*.f64 x (*.f64 x y)))
Outputs
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

soundness504.0ms (8.3%)

Algorithm
egg-herbie
Rules
1830×rational_best.json-simplify-80
1542×rational_best.json-simplify-78
742×rational_best.json-simplify-82
722×rational_best.json-simplify-74
714×rational_best.json-simplify-44
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
050932
197932
2188932
3464932
42014932
53705932
66063932
77584932
87987932
Stop Event
node limit
Compiler

Compiled 18 to 12 computations (33.3% saved)

end16.0ms (0.3%)

Compiler

Compiled 16 to 10 computations (37.5% saved)

Profiling

Loading profile data...