Details

Time bar (total: 17.2s)

analyze196.0ms (1.1%)

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
37.5%37.5%62.4%0.1%0%0%0%6
51.6%50%46.8%0.1%3.1%0%0%7
62.3%59.3%35.9%0.1%4.7%0%0%8
72.3%67.1%25.8%0.1%7%0%0%9
79.1%72.6%19.1%0.1%8.2%0%0%10
85.1%76.9%13.5%0.1%9.6%0%0%11
89%79.8%9.9%0.1%10.2%0%0%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample12.8s (74.5%)

Results
12.8s8255×body256valid
16.0ms205×body256infinite
0.0msbody1024valid
Bogosity

preprocess12.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01138
11538
21838
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 (*.f64 (+.f64 x 1) y) x)
(-.f64 (*.f64 (+.f64 y 1) x) y)
Outputs
(-.f64 (*.f64 (+.f64 x 1) y) x)
(-.f64 (*.f64 (+.f64 y 1) x) y)
(-.f64 (*.f64 x (+.f64 1 y)) y)
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify95.0ms (0.6%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11019
21219
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 (*.f64 (+.f64 x 1) y) x)
Outputs
(-.f64 (*.f64 (+.f64 x 1) y) x)

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% 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 (+.f64 x 1) y) x)
Compiler

Compiled 9 to 6 computations (33.3% saved)

localize8.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite1.6s (9.4%)

Algorithm
batch-egg-rewrite
Rules
1532×rational.json-simplify-35
1176×rational.json-1
1176×rational.json-2
1176×rational.json-3
1172×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
16232
214232
327532
451632
5114432
6315432
7568532
Stop Event
node limit
Counts
2 → 61
Calls
Call 1
Inputs
(*.f64 (+.f64 x 1) y)
(-.f64 (*.f64 (+.f64 x 1) y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x 1) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x 1) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (*.f64 (+.f64 x 1) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x 1) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x 1) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x 1) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x 1) (*.f64 y 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x 1) y) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (*.f64 (+.f64 x 1) y) (-.f64 -1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x 1) y) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 (+.f64 x 1) y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 x) (*.f64 (+.f64 x 1) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 x) (+.f64 (*.f64 (+.f64 x 1) y) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 (+.f64 x 1) y)) (-.f64 -1 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) -1) (+.f64 1 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 x (*.f64 (+.f64 x 1) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (*.f64 (/.f64 y 8) (+.f64 x (+.f64 x 2))) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 x 1) 8) (+.f64 y y)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 x (*.f64 (+.f64 x 1) y)))))))

simplify315.0ms (1.8%)

Algorithm
egg-herbie
Rules
1174×rational.json-simplify-35
1136×rational.json-simplify-2
1016×rational.json-simplify-1
1010×rational.json-simplify-51
936×rational.json-simplify-42
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01512037
13411817
28021817
325771817
445431817
554311817
673981817
Stop Event
node limit
Counts
109 → 79
Calls
Call 1
Inputs
y
(+.f64 (*.f64 y x) y)
(+.f64 (*.f64 y x) y)
(+.f64 (*.f64 y x) y)
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
y
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(*.f64 (-.f64 y 1) x)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(*.f64 -1 x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 x 1) y) 0)
(+.f64 0 (*.f64 (+.f64 x 1) y))
(+.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (*.f64 (+.f64 x 1) (*.f64 y 1/2)))
(-.f64 (*.f64 (+.f64 x 1) y) 0)
(/.f64 (*.f64 (+.f64 x 1) y) 1)
(/.f64 (*.f64 (+.f64 x 1) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))))) 128)
(pow.f64 (*.f64 (+.f64 x 1) y) 1)
(+.f64 1 (+.f64 (*.f64 (+.f64 x 1) y) (-.f64 -1 x)))
(+.f64 (*.f64 (+.f64 x 1) y) (neg.f64 x))
(+.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 0)
(+.f64 0 (-.f64 (*.f64 (+.f64 x 1) y) x))
(+.f64 -1 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)))
(+.f64 (neg.f64 x) (*.f64 (+.f64 x 1) y))
(+.f64 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)) -1)
(+.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))
(+.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) x))
(+.f64 (-.f64 1 x) (+.f64 (*.f64 (+.f64 x 1) y) -1))
(+.f64 -2 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)))
(+.f64 (+.f64 1 (*.f64 (+.f64 x 1) y)) (-.f64 -1 x))
(+.f64 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)) -2)
(+.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) -1) (+.f64 1 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2)))
(*.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x))
(*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))
(*.f64 -1 (-.f64 x (*.f64 (+.f64 x 1) y)))
(*.f64 -1 (*.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) 2))
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 1/2)
(*.f64 4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4))
(*.f64 4 (-.f64 (*.f64 (/.f64 y 8) (+.f64 x (+.f64 x 2))) (*.f64 x 1/4)))
(*.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 x 1) 8) (+.f64 y y)) (*.f64 x 1/4)))
(*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2))
(*.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -1/2)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 1/8)
(*.f64 1/4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4))
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) 2)
(*.f64 -2 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2))
(*.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) -2)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4) 4)
(/.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 2)
(/.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 4)
(/.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -2)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 8)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4))) -16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))))) 128)
(pow.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(neg.f64 (-.f64 x (*.f64 (+.f64 x 1) y)))
Outputs
y
(+.f64 (*.f64 y x) y)
(+.f64 y (*.f64 y x))
(+.f64 (*.f64 y x) y)
(+.f64 y (*.f64 y x))
(+.f64 (*.f64 y x) y)
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
y
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 y 1) x)
(*.f64 x (+.f64 y -1))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 x (+.f64 y -1))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 x 1))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 x 1) y) 0)
(*.f64 y (+.f64 x 1))
(+.f64 0 (*.f64 (+.f64 x 1) y))
(*.f64 y (+.f64 x 1))
(+.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (*.f64 (+.f64 x 1) (*.f64 y 1/2)))
(*.f64 y (+.f64 x 1))
(-.f64 (*.f64 (+.f64 x 1) y) 0)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 x 1) y) 1)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 x 1) (+.f64 y y)) 2)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 8)) 8)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))) 16)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))) 32)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) 64)
(*.f64 y (+.f64 x 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x 1) (*.f64 y 8)))))) 128)
(*.f64 y (+.f64 x 1))
(pow.f64 (*.f64 (+.f64 x 1) y) 1)
(*.f64 y (+.f64 x 1))
(+.f64 1 (+.f64 (*.f64 (+.f64 x 1) y) (-.f64 -1 x)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 x 1) y) (neg.f64 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 0)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 0 (-.f64 (*.f64 (+.f64 x 1) y) x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 -1 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (neg.f64 x) (*.f64 (+.f64 x 1) y))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (+.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x)) -1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 1/2)) x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (-.f64 1 x) (+.f64 (*.f64 (+.f64 x 1) y) -1))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 -2 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (+.f64 1 (*.f64 (+.f64 x 1) y)) (-.f64 -1 x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (-.f64 (*.f64 (+.f64 x 1) y) (-.f64 x 2)) -2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(+.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) -1) (+.f64 1 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 1 (-.f64 (*.f64 (+.f64 x 1) y) x))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 -1 (-.f64 x (*.f64 (+.f64 x 1) y)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 -1 (*.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) 2))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 1/2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 4 (-.f64 (*.f64 (/.f64 y 8) (+.f64 x (+.f64 x 2))) (*.f64 x 1/4)))
(*.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 x 1) 8) (+.f64 y y)) (*.f64 x 1/4)))
(*.f64 4 (-.f64 (*.f64 (+.f64 y y) (/.f64 (+.f64 x 1) 8)) (*.f64 x 1/4)))
(*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 1/4)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -1/2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 1/8)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 1/4 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/2) 2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 -2 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) 1/2) -2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(*.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1/4) 4)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 2) 2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (-.f64 x (*.f64 (+.f64 x 1) y)) -1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 4) 4)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (-.f64 x (*.f64 (+.f64 x 1) y))) -2)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8) 8)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4) -4)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)) 16)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4)) -8)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))) 32)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) 64)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) -4))) -16)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 8))))) 128)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(pow.f64 (-.f64 (*.f64 (+.f64 x 1) y) x) 1)
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)
(neg.f64 (-.f64 x (*.f64 (+.f64 x 1) y)))
(+.f64 (*.f64 y (+.f64 x 1)) (neg.f64 x))
(-.f64 (*.f64 y (+.f64 x 1)) x)

eval778.0ms (4.5%)

Compiler

Compiled 874 to 617 computations (29.4% saved)

prune12.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New75479
Fresh000
Picked011
Done000
Total75580
Error
0b
Counts
80 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 (*.f64 y x) y) x)
0.0b
(-.f64 (*.f64 (+.f64 x 1) y) x)
9.8b
(-.f64 y x)
27.1b
(*.f64 (-.f64 y 1) x)
37.0b
(neg.f64 x)
Compiler

Compiled 34 to 22 computations (35.3% saved)

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize7.0ms (0%)

Compiler

Compiled 13 to 8 computations (38.5% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize6.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series3.0ms (0%)

Counts
2 → 45
Calls

12 calls:

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

rewrite97.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0732
14832
212132
330132
464332
5165532
6383132
7622332
Stop Event
node limit
Counts
2 → 85
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) y)
(-.f64 (+.f64 (*.f64 y x) y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 x 1) 1/2) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (+.f64 x 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (/.f64 (+.f64 x 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 (*.f64 x 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 1/2 (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x 1)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 y (*.f64 2 (+.f64 x 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 y x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 x 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 2 (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x 1) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x 1) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x 1) 2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (*.f64 y x)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 y (-.f64 (*.f64 y x) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (-.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (*.f64 y x)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 y (-.f64 (*.f64 y x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (+.f64 y (-.f64 (*.f64 y x) x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 y x) x) y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 y x) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 x) (+.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 (+.f64 y (*.f64 y x)) (-.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))) (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (-.f64 (*.f64 y x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 x (+.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) (/.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 x (+.f64 y (*.f64 y x)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 x (+.f64 y (*.f64 y x))))))))

simplify235.0ms (1.4%)

Algorithm
egg-herbie
Rules
1768×rational.json-simplify-35
1050×rational.json-simplify-41
896×rational.json-simplify-2
892×rational.json-simplify-42
870×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01892186
14162186
29002180
322272168
449272168
559022168
673852168
Stop Event
node limit
Counts
130 → 114
Calls
Call 1
Inputs
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
y
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 -1 x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
y
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(*.f64 (-.f64 y 1) x)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 (*.f64 (-.f64 y 1) x) y)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(-.f64 (+.f64 y (*.f64 y x)) 0)
(*.f64 y (+.f64 x 1))
(*.f64 (+.f64 y (*.f64 y x)) 1)
(*.f64 1 (+.f64 y (*.f64 y x)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 1/2))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))))
(*.f64 2 (*.f64 (*.f64 (+.f64 x 1) 1/2) y))
(*.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 1/2)
(*.f64 (+.f64 y y) (*.f64 (+.f64 x 1) 1/2))
(*.f64 (+.f64 y y) (/.f64 (+.f64 x 1) 2))
(*.f64 (+.f64 y y) (+.f64 (*.f64 x 1/2) 1/2))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 x 1/2)))
(*.f64 (+.f64 x 1) y)
(*.f64 4 (/.f64 (+.f64 y (*.f64 y x)) 4))
(*.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 x 1)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 x 1))))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))))
(*.f64 (*.f64 (+.f64 y (*.f64 y x)) 1/2) 2)
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 x 1)))
(*.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) 2))
(*.f64 (*.f64 y 1/2) (+.f64 2 (+.f64 x x)))
(*.f64 (*.f64 (+.f64 x 1) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 (+.f64 x 1) (*.f64 y 4)))
(*.f64 (/.f64 (+.f64 x 1) 2) (+.f64 y y))
(*.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) 4)
(/.f64 (+.f64 y (*.f64 y x)) 1)
(/.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 2)
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)
(pow.f64 (+.f64 y (*.f64 y x)) 1)
(+.f64 y (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y x) (-.f64 y x))
(+.f64 (+.f64 y (*.f64 y x)) (neg.f64 x))
(+.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 0)
(+.f64 0 (+.f64 y (-.f64 (*.f64 y x) x)))
(+.f64 1 (+.f64 (+.f64 y (-.f64 (*.f64 y x) x)) -1))
(+.f64 (-.f64 (*.f64 y x) x) y)
(+.f64 (-.f64 y x) (*.f64 y x))
(+.f64 -1 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))))
(+.f64 (neg.f64 x) (+.f64 y (*.f64 y x)))
(+.f64 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))) -1)
(+.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))
(+.f64 -2 (-.f64 (+.f64 y (*.f64 y x)) (-.f64 x 2)))
(+.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))) (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))
(*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(*.f64 1 (+.f64 y (-.f64 (*.f64 y x) x)))
(*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))
(*.f64 2 (-.f64 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)) (*.f64 x 1/2)))
(*.f64 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))) (*.f64 x 1/2)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 1/2)
(*.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)
(*.f64 -1 (-.f64 x (+.f64 y (*.f64 y x))))
(*.f64 4 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))
(*.f64 4 (-.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) (/.f64 x 4)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) (+.f64 y y)))
(*.f64 1/2 (-.f64 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)) (+.f64 x x)))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))) (+.f64 x x)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))
(*.f64 1/4 (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) (*.f64 x 4)))
(*.f64 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)
(/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 2)
(/.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8) 8)
(/.f64 (*.f64 2 (-.f64 x (+.f64 y (*.f64 y x)))) -2)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)) 16)
(/.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) 4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)))) 64)
(/.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4))) 8)
(pow.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(neg.f64 (-.f64 x (+.f64 y (*.f64 y x))))
Outputs
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
y
(*.f64 y x)
(*.f64 x y)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(*.f64 y x)
(*.f64 x y)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 x y))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 (+.f64 1 x) y) (*.f64 -1 x))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
(+.f64 (*.f64 -1 x) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 (*.f64 y (+.f64 1 x)) (neg.f64 x))
y
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 y 1) x)
(*.f64 x (+.f64 y -1))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (-.f64 y 1) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 x (+.f64 y -1))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(-.f64 (+.f64 y (*.f64 y x)) 0)
(+.f64 y (*.f64 x y))
(*.f64 y (+.f64 x 1))
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 y (*.f64 y x)) 1)
(+.f64 y (*.f64 x y))
(*.f64 1 (+.f64 y (*.f64 y x)))
(+.f64 y (*.f64 x y))
(*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 1/2))
(+.f64 y (*.f64 x y))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)))
(+.f64 y (*.f64 x y))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))))
(+.f64 y (*.f64 x y))
(*.f64 2 (*.f64 (*.f64 (+.f64 x 1) 1/2) y))
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 1/2)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 y y) (*.f64 (+.f64 x 1) 1/2))
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 y y) (/.f64 (+.f64 x 1) 2))
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 y y) (+.f64 (*.f64 x 1/2) 1/2))
(+.f64 y (*.f64 x y))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 x 1/2)))
(+.f64 y (*.f64 x y))
(*.f64 (+.f64 x 1) y)
(*.f64 y (+.f64 1 x))
(*.f64 4 (/.f64 (+.f64 y (*.f64 y x)) 4))
(+.f64 y (*.f64 x y))
(*.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 1/4)
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 2 (+.f64 x 1)) (*.f64 y 1/2))
(*.f64 y (+.f64 1 x))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 x 1))))
(*.f64 y (+.f64 1 x))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)))
(+.f64 y (*.f64 x y))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))))
(+.f64 y (*.f64 x y))
(*.f64 (*.f64 (+.f64 y (*.f64 y x)) 1/2) 2)
(+.f64 y (*.f64 x y))
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 x 1)))
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) 2))
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 y 1/2) (+.f64 2 (+.f64 x x)))
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 (+.f64 x 1) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 x))
(*.f64 1/4 (*.f64 (+.f64 x 1) (*.f64 y 4)))
(*.f64 y (+.f64 1 x))
(*.f64 (/.f64 (+.f64 x 1) 2) (+.f64 y y))
(*.f64 y (+.f64 1 x))
(*.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) 4)
(+.f64 y (*.f64 x y))
(/.f64 (+.f64 y (*.f64 y x)) 1)
(+.f64 y (*.f64 x y))
(/.f64 (*.f64 y (*.f64 2 (+.f64 x 1))) 2)
(*.f64 y (+.f64 1 x))
(/.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) 4)
(*.f64 y (+.f64 1 x))
(/.f64 (*.f64 (+.f64 y (*.f64 y x)) 8) 8)
(+.f64 y (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)) 16)
(+.f64 y (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) 32)
(+.f64 y (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)
(+.f64 y (*.f64 x y))
(pow.f64 (+.f64 y (*.f64 y x)) 1)
(+.f64 y (*.f64 x y))
(+.f64 y (-.f64 (*.f64 y x) x))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 y x) (-.f64 y x))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (+.f64 y (*.f64 y x)) (neg.f64 x))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 0)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 0 (+.f64 y (-.f64 (*.f64 y x) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 1 (+.f64 (+.f64 y (-.f64 (*.f64 y x) x)) -1))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (-.f64 (*.f64 y x) x) y)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (-.f64 y x) (*.f64 y x))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 -1 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (neg.f64 x) (+.f64 y (*.f64 y x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (+.f64 y (-.f64 1 (*.f64 x (-.f64 1 y)))) -1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 -2 (-.f64 (+.f64 y (*.f64 y x)) (-.f64 x 2)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(+.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))) (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 1 (+.f64 y (-.f64 (*.f64 y x) x)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (-.f64 (*.f64 y 1/2) 1/2))))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 2 (-.f64 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 y 1/2)) (*.f64 x 1/2)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 y 1/2))) (*.f64 x 1/2)))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 1/2)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 -1 (-.f64 x (+.f64 y (*.f64 y x))))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 4 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 4 (-.f64 (/.f64 (+.f64 y (*.f64 y x)) 4) (/.f64 x 4)))
(*.f64 4 (-.f64 (/.f64 (+.f64 y (*.f64 x y)) 4) (/.f64 x 4)))
(*.f64 4 (-.f64 (*.f64 (+.f64 y (*.f64 x y)) 1/4) (/.f64 x 4)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 1/4)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 1/2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) (+.f64 y y)))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 x (*.f64 2 (+.f64 y -1))))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 2 (+.f64 y -1)))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 y -1) (*.f64 x 2))))
(*.f64 1/2 (-.f64 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 y y)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 y y) (-.f64 (*.f64 y (+.f64 x x)) (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 y (*.f64 x y)) 2) (+.f64 x x)))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 y y) (-.f64 (*.f64 y (+.f64 x x)) (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 y (*.f64 x y)) 2) (+.f64 x x)))
(*.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1/2) 2)
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 1/4 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4))
(+.f64 y (*.f64 x (+.f64 y -1)))
(*.f64 1/4 (-.f64 (*.f64 (+.f64 x 1) (*.f64 y 4)) (*.f64 x 4)))
(*.f64 1/4 (-.f64 (*.f64 y (*.f64 4 (+.f64 1 x))) (*.f64 x 4)))
(*.f64 1/4 (-.f64 (*.f64 y (*.f64 (+.f64 1 x) 4)) (*.f64 x 4)))
(*.f64 1/4 (*.f64 4 (-.f64 (*.f64 y (+.f64 1 x)) x)))
(*.f64 (/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 2) 2)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (-.f64 x (+.f64 y (*.f64 y x))) -1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 4) 4)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8) 8)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (-.f64 x (+.f64 y (*.f64 y x)))) -2)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)) 16)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4) -4)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) -8)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8))) 32)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4)) 4)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 8)))) 64)
(+.f64 y (*.f64 x (+.f64 y -1)))
(/.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 x (+.f64 y (*.f64 y x))) 4))) 8)
(+.f64 y (*.f64 x (+.f64 y -1)))
(pow.f64 (+.f64 y (-.f64 (*.f64 y x) x)) 1)
(+.f64 y (*.f64 x (+.f64 y -1)))
(neg.f64 (-.f64 x (+.f64 y (*.f64 y x))))
(+.f64 y (*.f64 x (+.f64 y -1)))

eval213.0ms (1.2%)

Compiler

Compiled 1219 to 609 computations (50% saved)

prune16.0ms (0.1%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New1140114
Fresh000
Picked011
Done044
Total1145119
Error
0b
Counts
119 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 (*.f64 y x) y) x)
0.0b
(-.f64 (*.f64 (+.f64 x 1) y) x)
9.8b
(-.f64 y x)
27.1b
(*.f64 (-.f64 y 1) x)
37.0b
(neg.f64 x)
Compiler

Compiled 34 to 22 computations (35.3% saved)

regimes16.0ms (0.1%)

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

3 calls:

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

Compiled 41 to 24 computations (41.5% saved)

regimes21.0ms (0.1%)

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

2 calls:

11.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
0.2b3x
8.8b3y
Compiler

Compiled 18 to 11 computations (38.9% saved)

bsearch212.0ms (1.2%)

Algorithm
binary-search
Steps
TimeLeftRight
197.0ms
4.2658137477786724e-19
3.574587055660492e-17
15.0ms
-4757832302805.555
-868.8664824357297
Results
209.0ms272×body256valid
0.0msbody256infinite
Compiler

Compiled 252 to 180 computations (28.6% saved)

regimes7.0ms (0%)

Accuracy

Total -27.2b remaining (-278.3%)

Threshold costs -27.2b (-278.3%)

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

2 calls:

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

Compiled 13 to 8 computations (38.5% saved)

simplify493.0ms (2.9%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02282
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 (+.f64 x 1) y) x)
(if (<=.f64 x -880) (*.f64 (-.f64 y 1) x) (if (<=.f64 x 1419768672255617/40564819207303340847894502572032) (-.f64 y x) (*.f64 (-.f64 y 1) x)))
(-.f64 y x)
(neg.f64 x)
Outputs
(-.f64 (*.f64 (+.f64 x 1) y) x)
(if (<=.f64 x -880) (*.f64 (-.f64 y 1) x) (if (<=.f64 x 1419768672255617/40564819207303340847894502572032) (-.f64 y x) (*.f64 (-.f64 y 1) x)))
(-.f64 y x)
(neg.f64 x)
Compiler

Compiled 41 to 27 computations (34.1% saved)

soundness0.0ms (0%)

end28.0ms (0.2%)

Compiler

Compiled 35 to 20 computations (42.9% saved)

Profiling

Loading profile data...