Details

Time bar (total: 5.6s)

analyze56.0ms (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
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)

sample717.0ms (12.7%)

Results
682.0ms8253×body256valid
23.0ms305×body256infinite
1.0msbody1024valid
Bogosity

preprocess4.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-1
rational.json-simplify-48
swap-x-y
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

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

(sort x y)

Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify10.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
11119
21419
31519
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(+.f64 y (-.f64 x (*.f64 x y)))

eval0.0ms (0%)

Compiler

Compiled 16 to 7 computations (56.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 5 computations (44.4% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 5 computations (70.6% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite95.0ms (1.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
14819
211719
327719
461119
5158419
6381819
7616419
Stop Event
node limit
Counts
1 → 54
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (-.f64 y (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 y (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x y) (*.f64 x (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (-.f64 y (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 x (-.f64 y (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (+.f64 x (-.f64 y (*.f64 x y))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x y)) y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 y (*.f64 x y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (neg.f64 y)) (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))) (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))) (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (-.f64 y (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (+.f64 (*.f64 x 1/2) (*.f64 y 1/2)) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (*.f64 (+.f64 x y) 1/4) (*.f64 x (*.f64 y 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (+.f64 (+.f64 x x) (+.f64 y y)) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (/.f64 (+.f64 x (-.f64 y (*.f64 x y))) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 (+.f64 x y) 4) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))))))

simplify220.0ms (3.9%)

Algorithm
egg-herbie
Rules
2128×rational.json-simplify-1
1652×rational.json-simplify-35
1118×rational.json-simplify-2
914×rational.json-simplify-41
672×rational.json-simplify-42
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
01451572
13261572
27351548
318271536
440541536
552601530
666731530
774621530
878721530
978901530
Stop Event
node limit
Counts
78 → 85
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 (+.f64 1 (*.f64 -1 y)) x)
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
x
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (-.f64 y (*.f64 x y)))
(+.f64 y (-.f64 x (*.f64 x y)))
(+.f64 (+.f64 x y) (*.f64 x (neg.f64 y)))
(+.f64 (+.f64 x (-.f64 y (*.f64 x y))) 0)
(+.f64 0 (+.f64 x (-.f64 y (*.f64 x y))))
(+.f64 1 (+.f64 (+.f64 x (-.f64 y (*.f64 x y))) -1))
(+.f64 (-.f64 x (*.f64 x y)) y)
(+.f64 (-.f64 y (*.f64 x y)) x)
(+.f64 (*.f64 x (neg.f64 y)) (+.f64 x y))
(+.f64 -1 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))))
(+.f64 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))) -1)
(+.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))
(+.f64 -2 (-.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))
(+.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))) (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))
(+.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))) (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(*.f64 1 (+.f64 x (-.f64 y (*.f64 x y))))
(*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)) (*.f64 x (*.f64 y 1/2))))
(*.f64 2 (-.f64 (+.f64 (*.f64 x 1/2) (*.f64 y 1/2)) (*.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 1/2)
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(*.f64 4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4))
(*.f64 4 (-.f64 (*.f64 (+.f64 x y) 1/4) (*.f64 x (*.f64 y 1/4))))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 1/4)
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 1/8)
(*.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -1/2)
(*.f64 1/2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) (+.f64 y y)))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 x (+.f64 y y))))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 x x) (+.f64 y y)) (*.f64 x (+.f64 y y))))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) 2)
(*.f64 -2 (/.f64 (+.f64 x (-.f64 y (*.f64 x y))) -2))
(*.f64 1/4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4))
(*.f64 1/4 (-.f64 (*.f64 (+.f64 x y) 4) (*.f64 x (*.f64 y 4))))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4) 4)
(/.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 2)
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 4)
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) 4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)))) 64)
(/.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4))) 8)
(pow.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
Outputs
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 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
x
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 x (-.f64 y (*.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 y (-.f64 x (*.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (+.f64 x y) (*.f64 x (neg.f64 y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (+.f64 x (-.f64 y (*.f64 x y))) 0)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 0 (+.f64 x (-.f64 y (*.f64 x y))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 1 (+.f64 (+.f64 x (-.f64 y (*.f64 x y))) -1))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (-.f64 x (*.f64 x y)) y)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (-.f64 y (*.f64 x y)) x)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (*.f64 x (neg.f64 y)) (+.f64 x y))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 -1 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (+.f64 x (-.f64 y (+.f64 (*.f64 x y) -1))) -1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 -2 (-.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(+.f64 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))) (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))
(+.f64 (*.f64 y 1/2) (+.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2)))))
(+.f64 (*.f64 y 1/2) (+.f64 (*.f64 y 1/2) (+.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) (*.f64 x (/.f64 (-.f64 1 y) 2)))))
(+.f64 (*.f64 y 1/2) (+.f64 (*.f64 y 1/2) (*.f64 (/.f64 (-.f64 1 y) 2) (+.f64 x x))))
(+.f64 (*.f64 (/.f64 (-.f64 1 y) 2) (+.f64 x x)) (*.f64 y 1))
(+.f64 (*.f64 (/.f64 (-.f64 1 y) 2) (+.f64 x x)) y)
(+.f64 (*.f64 2 (*.f64 x (/.f64 (-.f64 1 y) 2))) y)
(+.f64 y (*.f64 2 (*.f64 x (/.f64 (-.f64 1 y) 2))))
(+.f64 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))) (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(+.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 1 (+.f64 x (-.f64 y (*.f64 x y))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (/.f64 (-.f64 1 y) 2))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.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 2 (-.f64 (+.f64 (*.f64 y 1/2) (*.f64 x 1/2)) (*.f64 x (*.f64 y 1/2))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 2 (-.f64 (+.f64 (*.f64 x 1/2) (*.f64 y 1/2)) (*.f64 x (*.f64 y 1/2))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 1/2)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 4 (-.f64 (*.f64 (+.f64 x y) 1/4) (*.f64 x (*.f64 y 1/4))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 1/4)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 1/8)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -1/2)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) (+.f64 y y)))
(*.f64 1/2 (+.f64 (*.f64 2 (*.f64 (-.f64 1 y) x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 (-.f64 1 y) (*.f64 2 x)))))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 (-.f64 1 y) (*.f64 x 2)))))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 (*.f64 (-.f64 1 y) x) 2))))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 x (+.f64 y y))))
(*.f64 1/2 (+.f64 (+.f64 x x) (-.f64 (+.f64 y y) (*.f64 x (+.f64 y y)))))
(*.f64 1/2 (+.f64 y (+.f64 (+.f64 x x) (-.f64 y (*.f64 x (+.f64 y y))))))
(*.f64 1/2 (+.f64 y (-.f64 (+.f64 x (+.f64 y x)) (*.f64 x (+.f64 y y)))))
(*.f64 1/2 (+.f64 y (-.f64 (+.f64 x (+.f64 y x)) (*.f64 y (+.f64 x x)))))
(*.f64 1/2 (-.f64 (+.f64 (+.f64 x x) (+.f64 y y)) (*.f64 x (+.f64 y y))))
(*.f64 1/2 (+.f64 (+.f64 x x) (-.f64 (+.f64 y y) (*.f64 x (+.f64 y y)))))
(*.f64 1/2 (+.f64 y (+.f64 (+.f64 x x) (-.f64 y (*.f64 x (+.f64 y y))))))
(*.f64 1/2 (+.f64 y (-.f64 (+.f64 x (+.f64 y x)) (*.f64 x (+.f64 y y)))))
(*.f64 1/2 (+.f64 y (-.f64 (+.f64 x (+.f64 y x)) (*.f64 y (+.f64 x x)))))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/2) 2)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 -2 (/.f64 (+.f64 x (-.f64 y (*.f64 x y))) -2))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 (+.f64 x y) 4) (*.f64 x (*.f64 y 4))))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1/4) 4)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 2) 2)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 4) 4)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8) 8)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)) 16)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) -8)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8))) 32)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4)) 4)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (-.f64 y (*.f64 x y))) 8)))) 64)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(/.f64 (*.f64 2 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4))) 8)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(pow.f64 (+.f64 x (-.f64 y (*.f64 x y))) 1)
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(-.f64 (+.f64 y x) (*.f64 y x))

eval14.0ms (0.2%)

Compiler

Compiled 964 to 476 computations (50.6% saved)

prune101.0ms (1.8%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New81485
Fresh000
Picked011
Done000
Total81586
Error
0b
Counts
86 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
31.3b
(*.f64 (-.f64 1 y) x)
22.9b
(*.f64 y (-.f64 1 x))
31.8b
y
40.3b
x
Compiler

Compiled 29 to 19 computations (34.5% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite192.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
1616×rational.json-simplify-35
1384×exponential.json-3
1384×rational.json-1
1384×rational.json-2
1384×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15513
212813
323813
442813
591213
6233713
7422313
8529813
9655813
10765813
11784013
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(*.f64 y (-.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 y (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 y (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))))))

simplify389.0ms (6.9%)

Algorithm
egg-herbie
Rules
2110×rational.json-simplify-35
1960×rational.json-simplify-2
1876×rational.json-simplify-53
1046×rational.json-simplify-1
984×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
064484
1170462
2332462
3766462
42588462
54347462
64973462
75177462
85333462
95508462
106348462
117533462
127658462
137709462
147733462
157751462
167890462
Stop Event
node limit
Counts
34 → 32
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(+.f64 0 (*.f64 y (-.f64 1 x)))
(+.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(-.f64 0 (*.f64 y (+.f64 x -1)))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)
(/.f64 (*.f64 y (+.f64 x -1)) -1)
(/.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(neg.f64 (*.f64 y (+.f64 x -1)))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))
(*.f64 y (-.f64 1 x))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(-.f64 0 (*.f64 y (+.f64 x -1)))
(*.f64 y (-.f64 1 x))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (+.f64 x -1)) -1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)
(*.f64 y (-.f64 1 x))
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(neg.f64 (*.f64 y (+.f64 x -1)))
(*.f64 y (-.f64 1 x))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(*.f64 y (-.f64 1 x))

localize5.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)

rewrite198.0ms (3.5%)

Algorithm
batch-egg-rewrite
Rules
1618×rational.json-simplify-35
1384×exponential.json-3
1384×rational.json-1
1384×rational.json-2
1384×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15513
212813
323813
442813
591213
6233813
7422913
8530613
9656613
10766613
11784813
Stop Event
node limit
Counts
1 → 22
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 -1 (-.f64 1 (*.f64 x (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2))))))) (#(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 0 (*.f64 x (+.f64 y -1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))))) (#(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 1 y) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 1 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (+.f64 y -1)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))))))

simplify466.0ms (8.3%)

Algorithm
egg-herbie
Rules
2988×rational.json-simplify-35
1920×rational.json-simplify-2
1694×rational.json-simplify-53
988×rational.json-simplify-1
912×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
064484
1166462
2329462
3718462
42353462
54060462
64685462
74924462
85113462
95320462
106042462
117111462
127197462
137265462
147286462
157468462
167639462
177806462
187971462
Stop Event
node limit
Counts
34 → 33
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 (-.f64 1 y) x) 0)
(+.f64 0 (*.f64 (-.f64 1 y) x))
(+.f64 -1 (-.f64 1 (*.f64 x (+.f64 y -1))))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2))))
(+.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 0 (*.f64 x (+.f64 y -1)))
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(/.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 1 y) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))) 32)
(/.f64 (*.f64 x (+.f64 y -1)) -1)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))))) 256)
(pow.f64 (*.f64 (-.f64 1 y) x) 1)
(neg.f64 (*.f64 x (+.f64 y -1)))
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
Outputs
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 (-.f64 1 y) x) 0)
(*.f64 x (-.f64 1 y))
(+.f64 0 (*.f64 (-.f64 1 y) x))
(*.f64 x (-.f64 1 y))
(+.f64 -1 (-.f64 1 (*.f64 x (+.f64 y -1))))
(*.f64 x (-.f64 1 y))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2))))
(*.f64 x (-.f64 1 y))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 x 1/2)) (*.f64 (-.f64 1 y) (*.f64 x 1/2)))
(*.f64 x (-.f64 1 y))
(-.f64 (*.f64 (-.f64 1 y) x) 0)
(*.f64 x (-.f64 1 y))
(-.f64 0 (*.f64 x (+.f64 y -1)))
(*.f64 x (-.f64 1 y))
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) x) 1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (+.f64 x x)) 2)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 8)) 8)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))) 16)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))) 32)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 x (+.f64 y -1)) -1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)) -1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))) 64)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8)))))) 128)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 8))))))) 256)
(*.f64 x (-.f64 1 y))
(pow.f64 (*.f64 (-.f64 1 y) x) 1)
(*.f64 x (-.f64 1 y))
(neg.f64 (*.f64 x (+.f64 y -1)))
(*.f64 x (-.f64 1 y))
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(*.f64 x (-.f64 1 y))

eval12.0ms (0.2%)

Compiler

Compiled 561 to 387 computations (31% saved)

prune10.0ms (0.2%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New63265
Fresh022
Picked011
Done022
Total63770
Error
0b
Counts
70 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
22.9b
(+.f64 y (*.f64 y (neg.f64 x)))
31.3b
(*.f64 (-.f64 1 y) x)
22.9b
(*.f64 y (-.f64 1 x))
53.6b
(*.f64 y (neg.f64 x))
31.8b
y
40.3b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

localize4.0ms (0.1%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 5 computations (68.8% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite112.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
1622×rational.json-1
1622×rational.json-2
1622×rational.json-3
1616×rational.json-4
1380×rational.json-simplify-35
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0817
15617
213317
330113
463813
5151013
6309013
7491713
8717313
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 y (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (-.f64 1 x) 1/2) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (*.f64 (+.f64 x -1) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 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 1 x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x -1) -2) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 y (*.f64 (+.f64 x -1) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 y -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 (+.f64 x -1) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x -1)) (/.f64 y -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 y (*.f64 4 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (-.f64 1 x)) 1)))))

simplify229.0ms (4.1%)

Algorithm
egg-herbie
Rules
2334×rational.json-simplify-2
1884×rational.json-simplify-35
956×rational.json-simplify-1
882×rational.json-simplify-53
878×rational.json-simplify-45
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0861071
1203963
2423963
31322749
42859749
54052749
65014749
75404749
85627749
95845749
106219749
116857749
Stop Event
node limit
Counts
57 → 46
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 2 (*.f64 (*.f64 (-.f64 1 x) 1/2) y))
(*.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 1/2)
(*.f64 -2 (*.f64 (+.f64 x -1) (*.f64 y 1/2)))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 x -1/2)))
(*.f64 (-.f64 1 x) y)
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 1/4)
(*.f64 (*.f64 (+.f64 x -1) -2) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 y (*.f64 (+.f64 x -1) -2)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 y 1/2) (*.f64 (+.f64 x -1) -2))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 (*.f64 2 (+.f64 x -1)) (/.f64 y -2))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 y (*.f64 4 (-.f64 1 x))))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 2)
(/.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 4)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))))) 128)
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
Outputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 2 (*.f64 (*.f64 (-.f64 1 x) 1/2) y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 1/2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 -2 (*.f64 (+.f64 x -1) (*.f64 y 1/2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 x -1/2)))
(*.f64 (-.f64 1 x) y)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 1/4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 (+.f64 x -1) -2) (*.f64 y 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 1/2 (*.f64 y (*.f64 (+.f64 x -1) -2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 x (*.f64 y -2))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 -2 x))))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 -2 (*.f64 y x)))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))
(*.f64 1/2 (*.f64 y (+.f64 (*.f64 x -2) 2)))
(*.f64 1/2 (*.f64 y (+.f64 2 (*.f64 x -2))))
(*.f64 (*.f64 y 1/2) (*.f64 (+.f64 x -1) -2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 2 (+.f64 x -1)) (/.f64 y -2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 1/4 (*.f64 y (*.f64 4 (-.f64 1 x))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (+.f64 x -1) -2)) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 4 (-.f64 1 x))) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))))) 128)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))

eval12.0ms (0.2%)

Compiler

Compiled 408 to 291 computations (28.7% saved)

prune7.0ms (0.1%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New46046
Fresh022
Picked011
Done044
Total46753
Error
0b
Counts
53 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
22.9b
(+.f64 y (*.f64 y (neg.f64 x)))
31.3b
(*.f64 (-.f64 1 y) x)
22.9b
(*.f64 y (-.f64 1 x))
53.6b
(*.f64 y (neg.f64 x))
31.8b
y
40.3b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New000
Fresh022
Picked000
Done055
Total077
Error
0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
22.9b
(+.f64 y (*.f64 y (neg.f64 x)))
31.3b
(*.f64 (-.f64 1 y) x)
22.9b
(*.f64 y (-.f64 1 x))
53.6b
(*.f64 y (neg.f64 x))
31.8b
y
40.3b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

regimes784.0ms (13.9%)

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

3 calls:

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

Compiled 46 to 23 computations (50% saved)

regimes798.0ms (14.1%)

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

2 calls:

778.0ms
y
18.0ms
x
Results
ErrorSegmentsBranch
6.0b4x
6.6b2y
Compiler

Compiled 30 to 15 computations (50% saved)

bsearch39.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
-1.397237596770876e-50
-6.038316415869177e-56
10.0ms
-2.6817846152805096e-26
-3.633290254523876e-27
13.0ms
-868.8664824357297
-0.018964870935695613
Results
33.0ms368×body256valid
Compiler

Compiled 396 to 285 computations (28% saved)

regimes138.0ms (2.5%)

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

2 calls:

126.0ms
x
12.0ms
y
Results
ErrorSegmentsBranch
7.0b2x
6.6b2y
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch11.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
9.178007730046307e-210
3.1720758527404e-208
Results
9.0ms112×body256valid
Compiler

Compiled 126 to 93 computations (26.2% saved)

regimes373.0ms (6.6%)

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

2 calls:

359.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
13.7b2x
6.9b3y
Compiler

Compiled 19 to 11 computations (42.1% saved)

bsearch27.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
9.178007730046307e-210
3.1720758527404e-208
17.0ms
-123797.90453395684
-2.8924215479860004e-10
Results
22.0ms272×body256valid
Compiler

Compiled 208 to 152 computations (26.9% saved)

regimes130.0ms (2.3%)

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

2 calls:

114.0ms
x
15.0ms
y
Results
ErrorSegmentsBranch
14.6b3x
13.9b3y
Compiler

Compiled 14 to 8 computations (42.9% saved)

bsearch25.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
9.178007730046307e-210
3.1720758527404e-208
15.0ms
-123797.90453395684
-2.8924215479860004e-10
Results
22.0ms271×body256valid
0.0msbody1024valid
Compiler

Compiled 180 to 131 computations (27.2% saved)

regimes261.0ms (4.6%)

Accuracy

Total -46.5b remaining (-298%)

Threshold costs -46.5b (-298%)

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

2 calls:

250.0ms
y
10.0ms
x
Results
ErrorSegmentsBranch
16.5b2x
15.6b2y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch10.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
9.178007730046307e-210
3.1720758527404e-208
Results
9.0ms112×body256valid
Compiler

Compiled 70 to 51 computations (27.1% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037223
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 x -17/2) (*.f64 (-.f64 1 y) x) (if (<=.f64 x -4529838868451533/696898287454081973172991196020261297061888) (+.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 x -6234487666778585/3369993333393829974333376885877453834204643052817571560137951281152) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x y))
(if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x y)
x
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 x -17/2) (*.f64 (-.f64 1 y) x) (if (<=.f64 x -4529838868451533/696898287454081973172991196020261297061888) (+.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 x -6234487666778585/3369993333393829974333376885877453834204643052817571560137951281152) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x y))
(if (<=.f64 y 1792909982104673/5783580587434429433751774908835077864143572811472030770551607154406796964579734527807229790198231033796398828540485624991996511981318944660739180725221265625970270395356602614932750484465056824778255072212653118189025099776) x y)
x
Compiler

Compiled 107 to 69 computations (35.5% saved)

soundness0.0ms (0%)

end159.0ms (2.8%)

Remove

(sort x y)

Compiler

Compiled 113 to 63 computations (44.2% saved)

Profiling

Loading profile data...