Details

Time bar (total: 4.5s)

analyze48.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
56.3%56.2%43.7%0.1%0%0%0%7
65.6%65.6%34.3%0.1%0%0%0%8
76.6%76.5%23.4%0.1%0%0%0%9
82%82%18%0.1%0%0%0%10
87.9%87.8%12.1%0.1%0%0%0%11
90.8%90.7%9.2%0.1%0%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.9s (42%)

Results
1.9s8126×body256valid
9.0ms43×body2048valid
8.0ms50×body1024valid
5.0ms66×body256infinite
4.0ms37×body512valid
Bogosity

preprocess5.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
11126
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 200 (-.f64 x y))
(*.f64 200 (-.f64 y x))
Outputs
(*.f64 200 (-.f64 x y))
(*.f64 200 (-.f64 y x))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify8.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
1813
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 200 (-.f64 x y))
Outputs
(*.f64 200 (-.f64 x y))

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 7 to 5 computations (28.6% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 6 computations (53.8% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite119.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
1800×rational.json-simplify-35
1614×rational.json-1
1614×rational.json-2
1134×exponential.json-3
1134×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
210013
321213
439213
588813
6236113
7430913
8552513
9765113
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(*.f64 200 (-.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 200 (-.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 200 (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 200 (-.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 400 (/.f64 (-.f64 x y) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 x y) 100) (*.f64 (-.f64 x y) 100))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 200 (-.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 200 (-.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 400 (/.f64 (-.f64 x y) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 200 (-.f64 y x)) (*.f64 2 (*.f64 200 (-.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) (*.f64 2 (*.f64 400 (/.f64 (-.f64 x y) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 200 (-.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x y) 400) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x y) 800) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x y) 1600) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x y) 1600)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 200 (-.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 200 (-.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 200 (-.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)))))))

simplify148.0ms (3.3%)

Algorithm
egg-herbie
Rules
1708×rational.json-simplify-2
1466×rational.json-simplify-35
1088×rational.json-simplify-1
958×rational.json-simplify-26
870×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
070696
1158696
2272696
3616696
41551696
53626696
64465696
74833696
85170696
96545696
107148696
Stop Event
node limit
Counts
48 → 30
Calls
Call 1
Inputs
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 200 (-.f64 x y)) 0)
(+.f64 0 (*.f64 200 (-.f64 x y)))
(+.f64 -1 (-.f64 1 (*.f64 200 (-.f64 y x))))
(+.f64 -1 (-.f64 1 (*.f64 400 (/.f64 (-.f64 x y) -2))))
(+.f64 (*.f64 (-.f64 x y) 100) (*.f64 (-.f64 x y) 100))
(-.f64 (*.f64 200 (-.f64 x y)) 0)
(-.f64 0 (*.f64 200 (-.f64 y x)))
(-.f64 0 (*.f64 400 (/.f64 (-.f64 x y) -2)))
(-.f64 (*.f64 200 (-.f64 y x)) (*.f64 2 (*.f64 200 (-.f64 y x))))
(-.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) (*.f64 2 (*.f64 400 (/.f64 (-.f64 x y) -2))))
(/.f64 (*.f64 200 (-.f64 x y)) 1)
(/.f64 (*.f64 (-.f64 x y) 400) 2)
(/.f64 (*.f64 (-.f64 x y) 800) 4)
(/.f64 (*.f64 (-.f64 x y) 1600) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 x y) 1600)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))) 32)
(/.f64 (*.f64 200 (-.f64 y x)) -1)
(/.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))))) 256)
(pow.f64 (*.f64 200 (-.f64 x y)) 1)
(neg.f64 (*.f64 200 (-.f64 y x)))
(neg.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)))
Outputs
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 -200 y)
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 x) (*.f64 -200 y))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 200 (-.f64 x y)) 0)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(+.f64 0 (*.f64 200 (-.f64 x y)))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(+.f64 -1 (-.f64 1 (*.f64 200 (-.f64 y x))))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(+.f64 -1 (-.f64 1 (*.f64 400 (/.f64 (-.f64 x y) -2))))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(+.f64 (*.f64 (-.f64 x y) 100) (*.f64 (-.f64 x y) 100))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(-.f64 (*.f64 200 (-.f64 x y)) 0)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(-.f64 0 (*.f64 200 (-.f64 y x)))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(-.f64 0 (*.f64 400 (/.f64 (-.f64 x y) -2)))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(-.f64 (*.f64 200 (-.f64 y x)) (*.f64 2 (*.f64 200 (-.f64 y x))))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(-.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) (*.f64 2 (*.f64 400 (/.f64 (-.f64 x y) -2))))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 200 (-.f64 x y)) 1)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 (-.f64 x y) 400) 2)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 (-.f64 x y) 800) 4)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 (-.f64 x y) 1600) 8)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 x y) 1600)) 16)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))) 32)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 200 (-.f64 y x)) -1)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)) -1)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))) 64)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) 128)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x y) 1600)))))) 256)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(pow.f64 (*.f64 200 (-.f64 x y)) 1)
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(neg.f64 (*.f64 200 (-.f64 y x)))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))
(neg.f64 (*.f64 400 (/.f64 (-.f64 x y) -2)))
(*.f64 200 (-.f64 x y))
(*.f64 -200 (-.f64 y x))

eval5.0ms (0.1%)

Compiler

Compiled 272 to 178 computations (34.6% saved)

prune100.0ms (2.2%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New27330
Fresh000
Picked011
Done000
Total27431
Error
0.0b
Counts
31 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 200 x) (*.f64 -200 y))
0.0b
(*.f64 200 (-.f64 x y))
32.6b
(*.f64 200 x)
30.0b
(*.f64 -200 y)
Compiler

Compiled 26 to 20 computations (23.1% saved)

localize3.0ms (0.1%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize3.0ms (0.1%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize7.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 13 computations (31.6% saved)

series1.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite838.0ms (18.6%)

Algorithm
batch-egg-rewrite
Rules
2400×rational.json-simplify-35
2248×rational.json-simplify-2
1142×rational.json-simplify-1
1094×exponential.json-3
1094×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
15919
211719
323519
444219
598519
6251119
7428419
8499119
9601019
10666919
11666919
12757019
13757019
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(+.f64 (*.f64 200 x) (*.f64 -200 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 200 x) (*.f64 -200 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y -400) (*.f64 x 400)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y -100) (*.f64 x 100)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)))))

simplify592.0ms (13.1%)

Algorithm
egg-herbie
Rules
3238×rational.json-simplify-51
2812×rational.json-simplify-2
1840×rational.json-simplify-35
1404×rational.json-simplify-1
1370×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067693
1137693
2320693
31043693
41964693
53158693
63705693
73784693
83836693
93874693
103912693
113950693
123988693
134026693
144064693
154102693
164140693
174178693
184216693
195163693
207566693
217631693
227665693
237699693
247731693
Stop Event
node limit
Counts
39 → 27
Calls
Call 1
Inputs
(*.f64 -200 y)
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 -200 y)
(*.f64 -200 y)
(-.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 0)
(*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
(*.f64 1 (+.f64 (*.f64 200 x) (*.f64 -200 y)))
(*.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))
(*.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 1/2)
(*.f64 4 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))))
(*.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 1/4)
(*.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 1/8)
(*.f64 1/2 (+.f64 (*.f64 y -400) (*.f64 x 400)))
(*.f64 (+.f64 (*.f64 y -100) (*.f64 x 100)) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))) 4)
(*.f64 1/8 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))
(/.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
(/.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 2)
(/.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))))) 512)
(pow.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
Outputs
(*.f64 -200 y)
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 200 x)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 -200 y)
(*.f64 -200 y)
(-.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 0)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 1 (+.f64 (*.f64 200 x) (*.f64 -200 y)))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))
(*.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 1/2)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 4 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))))
(*.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))
(*.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 1/4)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 1/8)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 1/2 (+.f64 (*.f64 y -400) (*.f64 x 400)))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 (+.f64 (*.f64 y -100) (*.f64 x 100)) 2)
(*.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 y -100) (*.f64 x 100))) 4)
(*.f64 2 (+.f64 (*.f64 y -100) (*.f64 x 100)))
(*.f64 1/8 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (+.f64 (*.f64 y -400) (*.f64 x 400)) 2)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 4) 4)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8) 8)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)) 16)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))) 32)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))) 64)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))) 128)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) 256)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 8))))))) 512)
(+.f64 (*.f64 -200 y) (*.f64 200 x))
(pow.f64 (+.f64 (*.f64 200 x) (*.f64 -200 y)) 1)
(+.f64 (*.f64 -200 y) (*.f64 200 x))

eval6.0ms (0.1%)

Compiler

Compiled 319 to 265 computations (16.9% saved)

prune4.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New27027
Fresh000
Picked011
Done033
Total27431
Error
0.0b
Counts
31 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 200 x) (*.f64 -200 y))
0.0b
(*.f64 200 (-.f64 x y))
32.6b
(*.f64 200 x)
30.0b
(*.f64 -200 y)
Compiler

Compiled 26 to 20 computations (23.1% saved)

regimes16.0ms (0.4%)

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

4 calls:

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

Compiled 38 to 26 computations (31.6% saved)

regimes241.0ms (5.3%)

Accuracy

Total -50.7b remaining (-452.4%)

Threshold costs -50.7b (-452.4%)

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

2 calls:

227.0ms
x
14.0ms
y
Results
ErrorSegmentsBranch
11.2b3x
14.9b5y
Compiler

Compiled 14 to 10 computations (28.6% saved)

bsearch23.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
8.302664170657233e+28
9.350118617971295e+32
12.0ms
-4.765666052597585e+80
-1.9196480718560728e+76
Results
19.0ms247×body256valid
1.0msbody1024valid
0.0msbody512valid
Compiler

Compiled 204 to 169 computations (17.2% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01959
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 200 (-.f64 x y))
(if (<=.f64 x -25999999999999999295237843782753878667700452851058116960481052251384046419968) (*.f64 200 x) (if (<=.f64 x 149999999999999995945819308032) (*.f64 -200 y) (*.f64 200 x)))
(*.f64 -200 y)
Outputs
(*.f64 200 (-.f64 x y))
(if (<=.f64 x -25999999999999999295237843782753878667700452851058116960481052251384046419968) (*.f64 200 x) (if (<=.f64 x 149999999999999995945819308032) (*.f64 -200 y) (*.f64 200 x)))
(*.f64 -200 y)
Compiler

Compiled 31 to 23 computations (25.8% saved)

soundness0.0ms (0%)

end439.0ms (9.7%)

Compiler

Compiled 27 to 19 computations (29.6% saved)

Profiling

Loading profile data...