Details

Time bar (total: 6.8s)

analyze57.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
37.5%37.5%62.4%0.1%0%0%0%6
50.8%50%48.4%0.1%1.6%0%0%7
60.8%59.3%38.2%0.1%2.3%0%0%8
70.8%67.1%27.7%0.1%5.1%0%0%9
77.3%72.6%21.3%0.1%6%0%0%10
83.9%76.9%14.7%0.1%8.3%0%0%11
87.7%79.8%11.2%0.1%8.9%0%0%12
Compiler

Compiled 10 to 6 computations (40% saved)

sample2.4s (35.3%)

Results
2.3s8252×body256valid
29.0ms351×body256infinite
1.0msbody1024valid
0.0msbody512valid
Bogosity

preprocess10.0ms (0.2%)

Algorithm
egg-herbie
Rules
12×rational.json-simplify-1
rational.json-simplify-41
swap-x-y
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
11638
22038
32138
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 (+.f64 (*.f64 y x) y) x)
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 y (+.f64 x (*.f64 x y)))
(+.f64 x (+.f64 y (*.f64 x y)))
(+.f64 (+.f64 (*.f64 y x) y) x)
(+.f64 y (+.f64 x (*.f64 x y)))
(+.f64 x (+.f64 y (*.f64 x y)))
Symmetry

(sort x y)

Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
12×rational.json-simplify-1
rational.json-simplify-41
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
11019
21419
31819
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 y (+.f64 x (*.f64 x y)))
(+.f64 x (+.f64 (*.f64 x y) y))
(+.f64 x (+.f64 y (*.f64 x y)))

eval1.0ms (0%)

Compiler

Compiled 30 to 11 computations (63.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 5 computations (44.4% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite83.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1788×bool.json-1
1788×bool.json-2
1756×rational.json-1
1756×rational.json-2
1238×bool.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0732
17132
220332
347232
4107432
5264132
6600732
Stop Event
node limit
Counts
2 → 55
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 (*.f64 x y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (+.f64 x (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (+.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (+.f64 x (*.f64 x y)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x 1) (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 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 y y) (*.f64 x (*.f64 2 (+.f64 y 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 y (+.f64 x (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 y (+.f64 x (*.f64 x y))) (+.f64 y (+.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 y (+.f64 x (*.f64 x y))) (+.f64 y (+.f64 x (*.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y 1)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 x y)) (+.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 x y)) (+.f64 x (*.f64 x y)))))))

simplify280.0ms (4.1%)

Algorithm
egg-herbie
Rules
2026×rational.json-simplify-2
1938×rational.json-simplify-35
1282×rational.json-simplify-48
1234×rational.json-simplify-1
1042×rational.json-simplify-53
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01301585
12601585
25901579
313451579
426261579
534351579
637891579
740911579
843751579
948331579
1050591579
1156041579
1259801579
1363981579
1468951579
Stop Event
node limit
Counts
103 → 82
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 (+.f64 1 y) x)
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
x
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(-.f64 (+.f64 y (+.f64 x (*.f64 x y))) 0)
(*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)
(*.f64 1 (+.f64 y (+.f64 x (*.f64 x y))))
(*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (+.f64 x (*.f64 x y)) 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x 1) (*.f64 y 1/2))))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 2 (+.f64 y 1)))))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))
(*.f64 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)
(/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 2)
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8))) 32)
(-.f64 (+.f64 x (*.f64 x y)) 0)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x (*.f64 x y)) 1)
(*.f64 1 (+.f64 x (*.f64 x y)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 1/2))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(*.f64 (+.f64 y 1) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 x y)) 4))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 y 1)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (+.f64 y y))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) 2))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) 2)
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 x y)) 4) 4)
(/.f64 (+.f64 x (*.f64 x y)) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8))) 32)
Outputs
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 x (+.f64 y 1)))
(+.f64 y (*.f64 x (-.f64 y -1)))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 x (*.f64 y (+.f64 1 x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 y (+.f64 1 x)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 y (+.f64 1 x)))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
x
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(-.f64 (+.f64 y (+.f64 x (*.f64 x y))) 0)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 1 (+.f64 y (+.f64 x (*.f64 x y))))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) (*.f64 y 1/2)))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (+.f64 x (*.f64 x y)) 1/2)))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x 1) (*.f64 y 1/2))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 1/2 (+.f64 1 x)))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 (+.f64 1 x) 1/2))))
(*.f64 2 (*.f64 1/2 (+.f64 x (*.f64 y (+.f64 1 x)))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 1 x))) 1/2))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 1/2)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 4 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 1/4)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) (+.f64 y y)))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 y 1) (*.f64 2 x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 2 (+.f64 y y))) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 2 (+.f64 y 1)))))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) (+.f64 y y)))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 y 1) (*.f64 2 x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 2 (+.f64 y y))) (+.f64 y y)))
(*.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1/2) 2)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4))
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(*.f64 (/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (+.f64 y (+.f64 x (*.f64 x y))) 1)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 2) 2)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 4) 4)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8) 8)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) 16)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8)) (*.f64 2 (*.f64 (+.f64 y (+.f64 x (*.f64 x y))) 8))) 32)
(+.f64 y (+.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (+.f64 x y))
(+.f64 (*.f64 y x) (+.f64 y x))
(-.f64 (+.f64 x (*.f64 x y)) 0)
(+.f64 x (*.f64 y x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 x (*.f64 x y)) 1)
(+.f64 x (*.f64 y x))
(*.f64 1 (+.f64 x (*.f64 x y)))
(+.f64 x (*.f64 y x))
(*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 1/2))
(+.f64 x (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/2)))
(+.f64 x (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (*.f64 y 1/2))))
(+.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 1/2)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) 1/2))
(+.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(+.f64 x (*.f64 y x))
(*.f64 (+.f64 y 1) x)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 4 (/.f64 (+.f64 x (*.f64 x y)) 4))
(+.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (*.f64 2 (+.f64 y 1)) (*.f64 x 1/2))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (+.f64 x x)))
(+.f64 x (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (+.f64 y y))))
(+.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) 2))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (*.f64 (+.f64 x (*.f64 x y)) 1/2) 2)
(+.f64 x (*.f64 y x))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (/.f64 (+.f64 x (*.f64 x y)) 4) 4)
(+.f64 x (*.f64 y x))
(/.f64 (+.f64 x (*.f64 x y)) 1)
(+.f64 x (*.f64 y x))
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 2)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(/.f64 (*.f64 (+.f64 x (*.f64 x y)) 8) 8)
(+.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) 16)
(+.f64 x (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 x y)) 8))) 32)
(+.f64 x (*.f64 y x))

eval15.0ms (0.2%)

Compiler

Compiled 840 to 441 computations (47.5% saved)

prune13.0ms (0.2%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New77582
Fresh000
Picked011
Done000
Total77683
Error
0b
Counts
83 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
29.5b
(+.f64 (*.f64 y x) y)
27.5b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 (+.f64 1 x) y)
36.9b
y
34.2b
x
Compiler

Compiled 36 to 23 computations (36.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite95.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1626×bool.json-1
1626×bool.json-2
1586×rational.json-1
1586×rational.json-2
1184×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
18013
224813
348313
494113
5202813
6410613
7651613
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 1 x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 x) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 x) (*.f64 y 1/2)) (*.f64 (+.f64 1 x) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 x) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 x) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 x) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 x) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 1 x) y) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 1 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 1 x) y) (*.f64 (+.f64 1 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 1 x) y) (*.f64 (+.f64 1 x) y))))))

simplify1.2s (17.5%)

Algorithm
egg-herbie
Rules
4934×rational.json-simplify-35
2490×rational.json-simplify-2
1112×rational.json-simplify-53
972×rational.json-simplify-1
778×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039275
192275
2182275
3435275
41866275
53539275
64368275
74740275
84948275
95153275
105335275
115665275
125665275
135738275
145908275
156094275
166323275
176492275
186639275
196783275
206927275
217071275
227215275
237359275
247359275
257462275
267462275
277606275
287750275
297894275
Stop Event
node limit
Counts
23 → 16
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 (+.f64 1 x) y) 0)
(+.f64 0 (*.f64 (+.f64 1 x) y))
(+.f64 (*.f64 (+.f64 1 x) (*.f64 y 1/2)) (*.f64 (+.f64 1 x) (*.f64 y 1/2)))
(-.f64 (*.f64 (+.f64 1 x) y) 0)
(/.f64 (*.f64 (+.f64 1 x) y) 1)
(/.f64 (*.f64 (+.f64 1 x) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 1 x) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 1 x) y) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)))) 64)
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 (+.f64 1 x) y) 0)
(*.f64 y (+.f64 x 1))
(+.f64 0 (*.f64 (+.f64 1 x) y))
(*.f64 y (+.f64 x 1))
(+.f64 (*.f64 (+.f64 1 x) (*.f64 y 1/2)) (*.f64 (+.f64 1 x) (*.f64 y 1/2)))
(*.f64 y (+.f64 x 1))
(-.f64 (*.f64 (+.f64 1 x) y) 0)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 1 x) y) 1)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 1 x) (+.f64 y y)) 2)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (+.f64 1 x) (*.f64 y 4)) 4)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 (*.f64 (+.f64 1 x) y) 8) 8)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)) 16)
(*.f64 y (+.f64 x 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) 32)
(*.f64 y (+.f64 x 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 x) y) 8)))) 64)
(*.f64 y (+.f64 x 1))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite94.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1626×bool.json-1
1626×bool.json-2
1586×rational.json-1
1586×rational.json-2
1184×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
18013
224813
348313
494113
5202813
6410613
7651613
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 1 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 1 y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 1 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 1 y) x) (*.f64 (+.f64 1 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 1 y) x) (*.f64 (+.f64 1 y) x))))))

simplify1.2s (17.7%)

Algorithm
egg-herbie
Rules
4920×rational.json-simplify-35
2506×rational.json-simplify-2
1114×rational.json-simplify-53
970×rational.json-simplify-1
790×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038275
192275
2182275
3436275
41871275
53522275
64343275
74716275
84927275
95132275
105314275
115652275
125652275
135725275
145895275
156081275
166310275
176479275
186626275
196770275
206914275
217058275
227202275
237346275
247346275
257452275
267452275
277596275
287740275
297884275
Stop Event
node limit
Counts
23 → 17
Calls
Call 1
Inputs
x
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 (+.f64 1 y) x) 0)
(+.f64 0 (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 1 y) x) 0)
(/.f64 (*.f64 (+.f64 1 y) x) 1)
(/.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 1 y) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)))) 64)
Outputs
x
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 (+.f64 1 y) x) 0)
(*.f64 x (+.f64 y 1))
(+.f64 0 (*.f64 (+.f64 1 y) x))
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))
(*.f64 x (+.f64 y 1))
(-.f64 (*.f64 (+.f64 1 y) x) 0)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) x) 1)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (*.f64 (+.f64 1 y) x) 8) 8)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)) 16)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) 32)
(*.f64 x (+.f64 y 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 y) x) 8)))) 64)
(*.f64 x (+.f64 y 1))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 21
Calls

6 calls:

TimeVariablePointExpression
0.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
@-inf
(+.f64 (*.f64 y x) y)

rewrite97.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1810×bool.json-1
1810×bool.json-2
1776×rational.json-1
1144×bool.json-3
1100×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
16113
217913
339913
483813
5185013
6396813
7688613
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) y)
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 y 1/2) (*.f64 (*.f64 y x) 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 (+.f64 y (*.f64 y x)) 2) 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 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 y (*.f64 (+.f64 x 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x 2)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 y x)) 2))))) (#(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 y 1/2) (+.f64 x (+.f64 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 y (*.f64 y x)) 1/2) 2)))) (#(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 y (*.f64 (+.f64 x 1) 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 (+.f64 y (*.f64 y x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x 1) 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 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 y (*.f64 y x)) (+.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 y (*.f64 y x)) (+.f64 y (*.f64 y x)))))))

simplify286.0ms (4.2%)

Algorithm
egg-herbie
Rules
2012×rational.json-simplify-2
1964×rational.json-simplify-1
1468×rational.json-simplify-35
1298×rational.json-simplify-41
1138×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079652
1164652
2352652
3861652
41700652
53571652
63834652
74042652
84237652
94491652
104928652
116301652
126657652
136996652
147325652
157666652
Stop Event
node limit
Counts
52 → 39
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 (+.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 y 1/2) (*.f64 (*.f64 y x) 1/2)))
(*.f64 2 (*.f64 (*.f64 (+.f64 x 1) 1/2) y))
(*.f64 (*.f64 (+.f64 y (*.f64 y x)) 2) 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 1/2 (*.f64 x 1/2)))
(*.f64 (+.f64 x 1) y)
(*.f64 4 (/.f64 (+.f64 y (*.f64 y x)) 4))
(*.f64 (*.f64 y (*.f64 (+.f64 x 1) 4)) 1/4)
(*.f64 (+.f64 x (+.f64 x 2)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 y x)) 2))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))))
(*.f64 (*.f64 y 1/2) (+.f64 x (+.f64 x 2)))
(*.f64 (*.f64 y 1/2) (+.f64 2 (+.f64 x x)))
(*.f64 (*.f64 (+.f64 y (*.f64 y x)) 1/2) 2)
(*.f64 (*.f64 (+.f64 x 1) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 y (*.f64 (+.f64 x 1) 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 (+.f64 y (*.f64 y x)) 2) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 x 1) 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 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)
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 (+.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 y 1/2) (*.f64 (*.f64 y x) 1/2)))
(+.f64 y (*.f64 x y))
(*.f64 2 (*.f64 (*.f64 (+.f64 x 1) 1/2) y))
(*.f64 y (+.f64 1 x))
(*.f64 (*.f64 (+.f64 y (*.f64 y x)) 2) 1/2)
(+.f64 y (*.f64 x y))
(*.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 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 y (*.f64 (+.f64 x 1) 4)) 1/4)
(*.f64 y (+.f64 1 x))
(*.f64 (+.f64 x (+.f64 x 2)) (*.f64 y 1/2))
(*.f64 y (+.f64 1 x))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 y x)) 2))
(+.f64 y (*.f64 x y))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (+.f64 x x))))
(+.f64 y (*.f64 x y))
(*.f64 (*.f64 y 1/2) (+.f64 x (+.f64 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 y (*.f64 y x)) 1/2) 2)
(+.f64 y (*.f64 x y))
(*.f64 (*.f64 (+.f64 x 1) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 x))
(*.f64 1/4 (*.f64 y (*.f64 (+.f64 x 1) 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 (+.f64 y (*.f64 y x)) 2) 2)
(+.f64 y (*.f64 x y))
(/.f64 (*.f64 y (*.f64 (+.f64 x 1) 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 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 y x)) 8)))) 64)
(+.f64 y (*.f64 x y))

eval13.0ms (0.2%)

Compiler

Compiled 606 to 368 computations (39.3% saved)

prune11.0ms (0.2%)

Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New70272
Fresh022
Picked011
Done033
Total70878
Error
0b
Counts
78 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
29.5b
(+.f64 (*.f64 y x) y)
27.5b
(+.f64 (*.f64 y x) x)
27.5b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 (+.f64 1 x) y)
55.8b
(*.f64 y x)
36.9b
y
34.2b
x
Compiler

Compiled 48 to 30 computations (37.5% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series0.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite94.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1810×bool.json-1
1810×bool.json-2
1776×rational.json-1
1144×bool.json-3
1100×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
16113
217913
339913
483813
5185013
6396813
7688613
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (*.f64 y x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 y 1) 1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 y x)) (+.f64 x (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 y x)) (+.f64 x (*.f64 y x)))))))

simplify285.0ms (4.2%)

Algorithm
egg-herbie
Rules
2030×rational.json-simplify-2
1950×rational.json-simplify-1
1474×rational.json-simplify-35
1292×rational.json-simplify-41
1144×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079574
1166574
2354574
3854574
41704574
53556574
63819574
74027574
84222574
94484574
104932574
116308574
126667574
137007574
147336574
157678574
Stop Event
node limit
Counts
46 → 38
Calls
Call 1
Inputs
x
(*.f64 y x)
(*.f64 y x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 1 (+.f64 x (*.f64 y x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 1/2))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (*.f64 y x) 1/2)))
(*.f64 2 (*.f64 (*.f64 (+.f64 y 1) 1/2) x))
(*.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(*.f64 (+.f64 y 1) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y x)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 x x)))
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 (*.f64 (+.f64 x (*.f64 y x)) 1/2) 2)
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)
(/.f64 (+.f64 x (*.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)))) 64)
Outputs
x
(*.f64 y x)
(*.f64 x y)
(*.f64 y x)
(*.f64 x y)
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 x (-.f64 y -1))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(+.f64 x (*.f64 x y))
(*.f64 1 (+.f64 x (*.f64 y x)))
(+.f64 x (*.f64 x y))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 1/2))
(+.f64 x (*.f64 x y))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (*.f64 y x) 1/2)))
(+.f64 x (*.f64 x y))
(*.f64 2 (*.f64 (*.f64 (+.f64 y 1) 1/2) x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 1/2)
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 y 1) x)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y x)) 2))
(+.f64 x (*.f64 x y))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 x x)))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 x (*.f64 y x)) 1/2) 2)
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(*.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)
(+.f64 x (*.f64 x y))
(/.f64 (+.f64 x (*.f64 y x)) 1)
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 (+.f64 x (*.f64 y x)) 2) 2)
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(*.f64 x (-.f64 y -1))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 x (*.f64 y x)) 8) 8)
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)) 16)
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) 32)
(+.f64 x (*.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y x)) 8)))) 64)
(+.f64 x (*.f64 x y))

eval6.0ms (0.1%)

Compiler

Compiled 322 to 177 computations (45% saved)

prune7.0ms (0.1%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New38038
Fresh022
Picked011
Done055
Total38846
Error
0b
Counts
46 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
29.5b
(+.f64 (*.f64 y x) y)
27.5b
(+.f64 (*.f64 y x) x)
27.5b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 (+.f64 1 x) y)
55.8b
(*.f64 y x)
36.9b
y
34.2b
x
Compiler

Compiled 48 to 30 computations (37.5% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New000
Fresh022
Picked000
Done066
Total088
Error
0b
Counts
8 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
29.5b
(+.f64 (*.f64 y x) y)
27.5b
(+.f64 (*.f64 y x) x)
27.5b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 (+.f64 1 x) y)
55.8b
(*.f64 y x)
36.9b
y
34.2b
x
Compiler

Compiled 48 to 30 computations (37.5% saved)

regimes19.0ms (0.3%)

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

3 calls:

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

Compiled 49 to 23 computations (53.1% saved)

regimes44.0ms (0.7%)

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

2 calls:

28.0ms
y
15.0ms
x
Results
ErrorSegmentsBranch
8.1b2x
5.4b6y
Compiler

Compiled 33 to 15 computations (54.5% saved)

bsearch58.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
6.661266988986144e-42
1.196363192337912e-40
10.0ms
1.4172738898923237e-80
1.576256177309835e-79
13.0ms
1.978827876662654e-112
1.9786622423425079e-109
15.0ms
4.2917510162141453e-144
6.890430347985743e-139
10.0ms
6.013300742534405e-157
6.60875913568991e-156
Results
51.0ms576×body256valid
Compiler

Compiled 478 to 357 computations (25.3% saved)

regimes37.0ms (0.6%)

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

2 calls:

25.0ms
y
11.0ms
x
Results
ErrorSegmentsBranch
12.9b2x
6.0b7y
Compiler

Compiled 18 to 10 computations (44.4% saved)

bsearch69.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
6.661266988986144e-42
1.196363192337912e-40
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
12.0ms
1.978827876662654e-112
1.9786622423425079e-109
14.0ms
4.2917510162141453e-144
6.890430347985743e-139
9.0ms
6.013300742534405e-157
6.60875913568991e-156
14.0ms
-67794.13186210717
-0.17890390871090597
Results
60.0ms720×body256valid
Compiler

Compiled 476 to 351 computations (26.3% saved)

regimes34.0ms (0.5%)

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

2 calls:

23.0ms
y
10.0ms
x
Results
ErrorSegmentsBranch
13.5b3x
11.9b7y
Compiler

Compiled 13 to 7 computations (46.2% saved)

bsearch72.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
7.201420000090054e-36
1.2851403143341646e-30
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
12.0ms
1.978827876662654e-112
1.9786622423425079e-109
13.0ms
4.2917510162141453e-144
6.890430347985743e-139
10.0ms
6.013300742534405e-157
6.60875913568991e-156
14.0ms
-67794.13186210717
-0.17890390871090597
Results
64.0ms752×body256valid
Compiler

Compiled 408 to 300 computations (26.5% saved)

regimes26.0ms (0.4%)

Accuracy

Total -48.7b remaining (-362.9%)

Threshold costs -48.7b (-362.9%)

Counts
2 → 6
Calls
Call 1
Inputs
x
y
Outputs
x
y
x
y
x
y
Calls

2 calls:

17.0ms
y
9.0ms
x
Results
ErrorSegmentsBranch
15.2b2x
13.4b6y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch60.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
7.201420000090054e-36
1.2851403143341646e-30
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
13.0ms
1.978827876662654e-112
1.9786622423425079e-109
15.0ms
4.2917510162141453e-144
6.890430347985743e-139
10.0ms
6.013300742534405e-157
6.60875913568991e-156
Results
54.0ms608×body256valid
Compiler

Compiled 318 to 237 computations (25.5% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
064328
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) (*.f64 (+.f64 1 x) y) (if (<=.f64 y 2550072580000839/98079714615416886934934209737619787751599303819750539264) x (*.f64 (+.f64 1 x) y))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7732508084371119/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8276949764193527/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) (*.f64 (+.f64 1 x) y) (if (<=.f64 y 1225996432692711/98079714615416886934934209737619787751599303819750539264) x (*.f64 (+.f64 1 x) y)))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 5407556058124341/730750818665451459101842416358141509827966271488) x y))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 7192288940437905/84615164005151820665845159428194693098035799419427996068435045795123941278247852265624218936283556460491675139202989862944768) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 4442964977485945/11692013098647223345629478661730264157247460343808) x y)))))
x
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) (*.f64 (+.f64 1 x) y) (if (<=.f64 y 2550072580000839/98079714615416886934934209737619787751599303819750539264) x (*.f64 (+.f64 1 x) y))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7732508084371119/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8276949764193527/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) (*.f64 (+.f64 1 x) y) (if (<=.f64 y 1225996432692711/98079714615416886934934209737619787751599303819750539264) x (*.f64 (+.f64 1 x) y)))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 5407556058124341/730750818665451459101842416358141509827966271488) x y))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 7192288940437905/84615164005151820665845159428194693098035799419427996068435045795123941278247852265624218936283556460491675139202989862944768) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 4442964977485945/11692013098647223345629478661730264157247460343808) x y)))))
x
Compiler

Compiled 162 to 101 computations (37.7% saved)

soundness0.0ms (0%)

end66.0ms (1%)

Remove

(sort x y)

Compiler

Compiled 170 to 100 computations (41.2% saved)

Profiling

Loading profile data...