Details

Time bar (total: 6.9s)

analyze55.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.6s (38.6%)

Results
2.6s8253×body256valid
28.0ms350×body256infinite
0.0msbody1024valid
0.0msbody512valid
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)

simplify8.0ms (0.1%)

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

rewrite94.0ms (1.4%)

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

simplify211.0ms (3.1%)

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)

prune13.0ms (0.2%)

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))
29.3b
(*.f64 (-.f64 1 y) x)
26.6b
(*.f64 y (-.f64 1 x))
32.9b
y
36.4b
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
@-inf
(*.f64 y (-.f64 1 x))
0.0ms
x
@0
(*.f64 y (-.f64 1 x))

rewrite286.0ms (4.2%)

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

simplify370.0ms (5.4%)

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)

rewrite186.0ms (2.7%)

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

simplify444.0ms (6.5%)

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))
26.5b
(+.f64 y (*.f64 y (neg.f64 x)))
29.3b
(*.f64 (-.f64 1 y) x)
26.6b
(*.f64 y (-.f64 1 x))
55.6b
(*.f64 y (neg.f64 x))
32.9b
y
36.4b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

localize4.0ms (0.1%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize6.0ms (0.1%)

Compiler

Compiled 16 to 5 computations (68.8% 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
Picked011
Done044
Total077
Error
0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
26.5b
(+.f64 y (*.f64 y (neg.f64 x)))
29.3b
(*.f64 (-.f64 1 y) x)
26.6b
(*.f64 y (-.f64 1 x))
55.6b
(*.f64 y (neg.f64 x))
32.9b
y
36.4b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.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))
26.5b
(+.f64 y (*.f64 y (neg.f64 x)))
29.3b
(*.f64 (-.f64 1 y) x)
26.6b
(*.f64 y (-.f64 1 x))
55.6b
(*.f64 y (neg.f64 x))
32.9b
y
36.4b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

regimes106.0ms (1.5%)

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:

95.0ms
x
5.0ms
(-.f64 (+.f64 x y) (*.f64 x y))
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)

regimes19.0ms (0.3%)

Counts
6 → 2
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)))
Calls

2 calls:

9.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
7.7b2x
6.6b2y
Compiler

Compiled 30 to 15 computations (50% saved)

bsearch8.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
7.0ms
5.275491894774284e-48
1.3350207727374611e-47
Results
7.0ms80×body256valid
Compiler

Compiled 99 to 69 computations (30.3% saved)

regimes307.0ms (4.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:

298.0ms
x
8.0ms
y
Results
ErrorSegmentsBranch
7.7b2x
6.6b2y
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch8.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
5.275491894774284e-48
1.3350207727374611e-47
Results
7.0ms80×body256valid
Compiler

Compiled 94 to 69 computations (26.6% saved)

regimes26.0ms (0.4%)

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:

14.0ms
x
11.0ms
y
Results
ErrorSegmentsBranch
11.4b4x
7.4b3y
Compiler

Compiled 19 to 11 computations (42.1% saved)

bsearch20.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
5.275491894774284e-48
1.3350207727374611e-47
12.0ms
-76.04343588043078
-0.002892129880631135
Results
18.0ms208×body256valid
Compiler

Compiled 162 to 118 computations (27.2% saved)

regimes25.0ms (0.4%)

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

2 calls:

16.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
11.5b5x
12.5b3y
Compiler

Compiled 14 to 8 computations (42.9% saved)

bsearch146.0ms (2.1%)

Algorithm
binary-search
Steps
TimeLeftRight
112.0ms
1.2416814568537684e-12
7.833982467184849e+26
10.0ms
-2.5459062625892195e-121
-3.724760605946141e-123
13.0ms
-5.16396526230239e-97
-6.60722140474526e-103
11.0ms
-2.3243543162734096e-26
-3.816290911677065e-28
Results
141.0ms560×body256valid
Compiler

Compiled 330 to 243 computations (26.4% saved)

regimes347.0ms (5.1%)

Accuracy

Total -48.3b remaining (-356.1%)

Threshold costs -48.3b (-356.1%)

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

2 calls:

336.0ms
y
11.0ms
x
Results
ErrorSegmentsBranch
14.0b4x
13.6b2y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch12.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
5.275491894774284e-48
1.3350207727374611e-47
Results
11.0ms80×body256valid
Compiler

Compiled 54 to 39 computations (27.8% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
045199
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 100272933961761/12855504354071922204335696738729300820177623950262342682411008) (*.f64 (-.f64 1 y) x) (+.f64 y (*.f64 y (neg.f64 x))))
(if (<=.f64 y 2468256835981809/411376139330301510538742295639337626245683966408394965837152256) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 4525137532633317/411376139330301510538742295639337626245683966408394965837152256) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 x -2439144006089287/348449143727040986586495598010130648530944) x (if (<=.f64 x -6758232102805581/10086913586276986678343434265636765134100413253239154346994763111486904773503285916522052161250538404046496765518544896) y (if (<=.f64 x -5582121402590261/23258839177459420497578361852416145099316523541994177929007686373780457219628733546438113622840434097944400691400517693873107252115668992) x (if (<=.f64 x 1) y (*.f64 y (neg.f64 x))))))
(if (<=.f64 y 1933467854852417/205688069665150755269371147819668813122841983204197482918576128) x y)
x
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 100272933961761/12855504354071922204335696738729300820177623950262342682411008) (*.f64 (-.f64 1 y) x) (+.f64 y (*.f64 y (neg.f64 x))))
(if (<=.f64 y 2468256835981809/411376139330301510538742295639337626245683966408394965837152256) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 4525137532633317/411376139330301510538742295639337626245683966408394965837152256) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 x -2439144006089287/348449143727040986586495598010130648530944) x (if (<=.f64 x -6758232102805581/10086913586276986678343434265636765134100413253239154346994763111486904773503285916522052161250538404046496765518544896) y (if (<=.f64 x -5582121402590261/23258839177459420497578361852416145099316523541994177929007686373780457219628733546438113622840434097944400691400517693873107252115668992) x (if (<=.f64 x 1) y (*.f64 y (neg.f64 x))))))
(if (<=.f64 y 1933467854852417/205688069665150755269371147819668813122841983204197482918576128) x y)
x
Compiler

Compiled 99 to 63 computations (36.4% saved)

soundness0.0ms (0%)

end1.4s (21%)

Remove

(sort x y)

Compiler

Compiled 105 to 57 computations (45.7% saved)

Profiling

Loading profile data...