Details

Time bar (total: 6.0s)

analyze54.0ms (0.9%)

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)

sample687.0ms (11.5%)

Results
647.0ms8256×body256valid
26.0ms357×body256infinite
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))

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

simplify312.0ms (5.2%)

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

eval15.0ms (0.3%)

Compiler

Compiled 964 to 476 computations (50.6% saved)

prune11.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))
28.1b
(*.f64 (-.f64 1 y) x)
27.2b
(*.f64 y (-.f64 1 x))
34.4b
y
36.1b
x
Compiler

Compiled 29 to 19 computations (34.5% saved)

localize5.0ms (0.1%)

Compiler

Compiled 13 to 8 computations (38.5% saved)

localize151.0ms (2.5%)

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)

series1.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite186.0ms (3.1%)

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

simplify453.0ms (7.6%)

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

eval7.0ms (0.1%)

Compiler

Compiled 285 to 197 computations (30.9% saved)

prune6.0ms (0.1%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New31233
Fresh022
Picked011
Done022
Total31738
Error
0b
Counts
38 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.1b
(+.f64 x (*.f64 y (neg.f64 x)))
28.1b
(*.f64 (-.f64 1 y) x)
27.2b
(*.f64 y (-.f64 1 x))
54.7b
(*.f64 y (neg.f64 x))
34.4b
y
36.1b
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%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 5 computations (68.8% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite751.0ms (12.5%)

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

Useful iterations: 5 (0.0ms)

IterNodesCost
0817
15617
213117
328717
459217
5145113
6296413
7488613
8633013
9751113
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (-.f64 1 y) 1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) (*.f64 x 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 4 (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (*.f64 y -2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/2 (*.f64 y -1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/2 (/.f64 y -2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (-.f64 1 y)) 1)))))

simplify772.0ms (12.9%)

Algorithm
egg-herbie
Rules
2296×rational.json-simplify-2
1680×rational.json-simplify-35
1182×rational.json-simplify-1
824×rational.json-simplify-48
706×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0931061
1207849
2429849
31417849
42959849
54109849
64821849
75232849
85590849
95934849
106323849
116802849
127704849
Stop Event
node limit
Counts
61 → 46
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
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 x (-.f64 1 y)) 0)
(*.f64 x (-.f64 1 y))
(*.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 1 (*.f64 x (-.f64 1 y)))
(*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 1/2)))
(*.f64 2 (*.f64 (*.f64 (-.f64 1 y) 1/2) x))
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 1/4)
(*.f64 (-.f64 1 y) x)
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y -2)))
(*.f64 (*.f64 (-.f64 1 y) (*.f64 x 1/2)) 2)
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 4 (-.f64 1 y))))
(*.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(*.f64 (+.f64 2 (*.f64 y -2)) (*.f64 x 1/2))
(*.f64 (+.f64 1/2 (*.f64 y -1/2)) (+.f64 x x))
(*.f64 (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)) (+.f64 x x))
(*.f64 (+.f64 1/2 (/.f64 y -2)) (+.f64 x x))
(*.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))) 1/2)
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)
(/.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))))) 128)
(pow.f64 (*.f64 x (-.f64 1 y)) 1)
Outputs
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1 (*.f64 x (-.f64 1 y)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 2 (*.f64 (-.f64 1 y) (*.f64 x 1/2)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 2 (*.f64 (*.f64 (-.f64 1 y) 1/2) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 1/4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y -2)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) (*.f64 x 1/2)) 2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/4 (*.f64 x (*.f64 4 (-.f64 1 y))))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 2 (*.f64 y -2)) (*.f64 x 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1/2 (*.f64 y -1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 1/2 (/.f64 y -2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))) 1/2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (*.f64 4 (-.f64 1 y))) 4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))))) 128)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(pow.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))

eval8.0ms (0.1%)

Compiler

Compiled 392 to 266 computations (32.1% saved)

prune9.0ms (0.1%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New45146
Fresh022
Picked101
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))
28.1b
(-.f64 x (*.f64 y x))
28.1b
(*.f64 (-.f64 1 y) x)
27.2b
(*.f64 y (-.f64 1 x))
54.7b
(*.f64 y (neg.f64 x))
34.4b
y
36.1b
x
Compiler

Compiled 42 to 27 computations (35.7% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite106.0ms (1.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
13913
29313
320713
439913
592413
6258513
7511513
8689613
Stop Event
node limit
Counts
1 → 83
Calls
Call 1
Inputs
(-.f64 x (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 y (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 -1 (*.f64 x (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (neg.f64 x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 x (-.f64 1 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (-.f64 1 (*.f64 x y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) (*.f64 x (/.f64 (+.f64 y -1) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 2 (*.f64 x (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x 1) (-.f64 -1 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 2 (*.f64 x (+.f64 y -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (*.f64 2 (-.f64 1 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 2 (*.f64 (-.f64 1 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (/.f64 (+.f64 y -1) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (neg.f64 (*.f64 (+.f64 y -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (/.f64 (+.f64 y -1) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y -1)) -4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 (-.f64 1 y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (-.f64 1/4 (*.f64 y 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (+.f64 y -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y -1) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 x (+.f64 y -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 8) (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 1/8 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y -1)) (/.f64 x -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y -1)) (*.f64 -1 (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 2 (-.f64 1 y))) (*.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y -1) 1/2) (neg.f64 (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 y -1)) -4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (*.f64 2 (*.f64 2 (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (-.f64 4 (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (-.f64 x (*.f64 x y)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (-.f64 (*.f64 x 8) (*.f64 y (*.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (*.f64 2 (*.f64 x (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (-.f64 1 y)) 1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) 1/4) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (*.f64 (+.f64 y -1) 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (+.f64 x x)) (*.f64 (+.f64 y -1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x -2) (*.f64 2 (+.f64 y -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y -1) -2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 2 (+.f64 y y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (-.f64 1 y) 1/2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (+.f64 y -1) 1/2)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 2)))) (#(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 (+.f64 y -1)) -4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (*.f64 y 4) 4)) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4))) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4)))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (+.f64 y -1)))))))

simplify407.0ms (6.8%)

Algorithm
egg-herbie
Rules
2456×rational.json-simplify-2
1788×rational.json-simplify-1
1278×rational.json-simplify-35
1002×rational.json-simplify-41
922×rational.json-simplify-53
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01821555
13871549
27891549
315961549
431341549
548391549
653491549
755891549
858881549
964461549
1079061549
Stop Event
node limit
Counts
107 → 105
Calls
Call 1
Inputs
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
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 x (*.f64 y (neg.f64 x)))
(+.f64 (-.f64 x (*.f64 x y)) 0)
(+.f64 0 (-.f64 x (*.f64 x y)))
(+.f64 1 (-.f64 -1 (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 y (neg.f64 x)) x)
(+.f64 -1 (+.f64 x (-.f64 1 (*.f64 x y))))
(+.f64 (+.f64 x (-.f64 1 (*.f64 x y))) -1)
(+.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) (*.f64 x (/.f64 (+.f64 y -1) -2)))
(+.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 y)))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))
(+.f64 -2 (-.f64 2 (*.f64 x (+.f64 y -1))))
(+.f64 (+.f64 x 1) (-.f64 -1 (*.f64 x y)))
(+.f64 (-.f64 2 (*.f64 x (+.f64 y -1))) -2)
(*.f64 x (-.f64 1 y))
(*.f64 x (*.f64 (*.f64 2 (-.f64 1 y)) 1/2))
(*.f64 x (*.f64 2 (*.f64 (-.f64 1 y) 1/2)))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 1 (-.f64 x (*.f64 x y)))
(*.f64 2 (*.f64 x (/.f64 (+.f64 y -1) -2)))
(*.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 x x) (neg.f64 (*.f64 (+.f64 y -1) 1/2)))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y -1) -2))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))
(*.f64 (*.f64 x (+.f64 y -1)) -1)
(*.f64 4 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 (*.f64 (*.f64 x (+.f64 y -1)) -4) 1/4)
(*.f64 (*.f64 x 4) (*.f64 (-.f64 1 y) 1/4))
(*.f64 (*.f64 x 4) (-.f64 1/4 (*.f64 y 1/4)))
(*.f64 (neg.f64 x) (+.f64 y -1))
(*.f64 (-.f64 1 y) x)
(*.f64 (+.f64 y -1) (neg.f64 x))
(*.f64 -1 (*.f64 x (+.f64 y -1)))
(*.f64 8 (*.f64 (/.f64 x 8) (-.f64 1 y)))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (-.f64 1 y)))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 1/8)
(*.f64 (*.f64 x 8) (*.f64 1/8 (-.f64 1 y)))
(*.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -1/2)
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 y))))
(*.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) 2)
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (-.f64 1 y)))
(*.f64 -2 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)))
(*.f64 (*.f64 2 (+.f64 y -1)) (/.f64 x -2))
(*.f64 (*.f64 2 (+.f64 y -1)) (*.f64 -1 (*.f64 x 1/2)))
(*.f64 (*.f64 2 (*.f64 2 (-.f64 1 y))) (*.f64 x 1/4))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 (*.f64 (+.f64 y -1) 1/2) (neg.f64 (+.f64 x x)))
(*.f64 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)) -2)
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y -1)) -4))
(*.f64 (*.f64 x 1/4) (*.f64 2 (*.f64 2 (-.f64 1 y))))
(*.f64 (*.f64 x 1/4) (-.f64 4 (*.f64 y 4)))
(*.f64 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))) 4)
(*.f64 1/8 (*.f64 (-.f64 x (*.f64 x y)) 8))
(*.f64 1/8 (-.f64 (*.f64 x 8) (*.f64 y (*.f64 x 8))))
(*.f64 -1/2 (*.f64 2 (*.f64 x (+.f64 y -1))))
(*.f64 (*.f64 (*.f64 2 (-.f64 1 y)) 1/2) x)
(*.f64 (*.f64 (-.f64 1 y) 1/4) (*.f64 x 4))
(*.f64 (neg.f64 (*.f64 (+.f64 y -1) 1/2)) (+.f64 x x))
(*.f64 (neg.f64 (+.f64 x x)) (*.f64 (+.f64 y -1) 1/2))
(*.f64 (/.f64 x -2) (*.f64 2 (+.f64 y -1)))
(*.f64 (/.f64 (+.f64 y -1) -2) (+.f64 x x))
(*.f64 (-.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))
(*.f64 (-.f64 2 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 (*.f64 2 (*.f64 (-.f64 1 y) 1/2)) x)
(*.f64 (*.f64 2 (*.f64 (+.f64 y -1) 1/2)) (neg.f64 x))
(/.f64 (-.f64 x (*.f64 x y)) 1)
(/.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 2)
(/.f64 (*.f64 x (+.f64 y -1)) -1)
(/.f64 (*.f64 (*.f64 x (+.f64 y -1)) -4) 4)
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 x (-.f64 (*.f64 y 4) 4)) -4)
(/.f64 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4))) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4)))) -16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))))) 128)
(pow.f64 (-.f64 x (*.f64 x y)) 1)
(neg.f64 (*.f64 x (+.f64 y -1)))
Outputs
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 x (*.f64 x y)) 0)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 0 (-.f64 x (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 1 (-.f64 -1 (*.f64 x (+.f64 y -1))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 -1 (+.f64 x (-.f64 1 (*.f64 x y))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (+.f64 x (-.f64 1 (*.f64 x y))) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) (*.f64 x (/.f64 (+.f64 y -1) -2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 y)))
(*.f64 x (+.f64 (-.f64 1/2 y) 1/2))
(*.f64 x (+.f64 1/2 (-.f64 1/2 y)))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 -2 (-.f64 2 (*.f64 x (+.f64 y -1))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (+.f64 x 1) (-.f64 -1 (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 2 (*.f64 x (+.f64 y -1))) -2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 x (*.f64 (*.f64 2 (-.f64 1 y)) 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 x (*.f64 2 (*.f64 (-.f64 1 y) 1/2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1 (-.f64 x (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 2 (*.f64 x (/.f64 (+.f64 y -1) -2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 1/2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (neg.f64 (*.f64 (+.f64 y -1) 1/2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y -1) -2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))
(*.f64 (*.f64 x (+.f64 y -1)) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 4 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 x (*.f64 (-.f64 1/4 (*.f64 y 1/4)) 4))
(*.f64 x (*.f64 4 (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 (*.f64 (*.f64 x (+.f64 y -1)) -4) 1/4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 4) (*.f64 (-.f64 1 y) 1/4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 4) (-.f64 1/4 (*.f64 y 1/4)))
(*.f64 x (*.f64 (-.f64 1/4 (*.f64 y 1/4)) 4))
(*.f64 4 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 x (*.f64 4 (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 (neg.f64 x) (+.f64 y -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 y -1) (neg.f64 x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 8 (*.f64 (/.f64 x 8) (-.f64 1 y)))
(*.f64 8 (*.f64 (-.f64 1 y) (/.f64 x 8)))
(*.f64 (-.f64 1 y) (*.f64 8 (/.f64 x 8)))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 1/8)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 8) (*.f64 1/8 (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -1/2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 y))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (/.f64 (+.f64 y -1) -2)) 2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))
(*.f64 x (*.f64 1/2 (-.f64 2 (+.f64 y y))))
(*.f64 1/2 (*.f64 (-.f64 2 (+.f64 y y)) x))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -2 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)))
(*.f64 x (*.f64 (+.f64 (*.f64 y 1/2) -1/2) -2))
(*.f64 x (*.f64 -2 (+.f64 (*.f64 y 1/2) -1/2)))
(*.f64 (+.f64 (*.f64 y 1/2) -1/2) (*.f64 x -2))
(*.f64 (*.f64 2 (+.f64 y -1)) (/.f64 x -2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (+.f64 y -1)) (*.f64 -1 (*.f64 x 1/2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (*.f64 2 (-.f64 1 y))) (*.f64 x 1/4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (+.f64 y -1) 1/2) (neg.f64 (+.f64 x x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (+.f64 (*.f64 y 1/2) -1/2)) -2)
(*.f64 x (*.f64 (+.f64 (*.f64 y 1/2) -1/2) -2))
(*.f64 x (*.f64 -2 (+.f64 (*.f64 y 1/2) -1/2)))
(*.f64 (+.f64 (*.f64 y 1/2) -1/2) (*.f64 x -2))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y -1)) -4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/4) (*.f64 2 (*.f64 2 (-.f64 1 y))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/4) (-.f64 4 (*.f64 y 4)))
(*.f64 x (*.f64 1/4 (-.f64 4 (*.f64 y 4))))
(*.f64 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))) 4)
(*.f64 x (*.f64 (-.f64 1/4 (*.f64 y 1/4)) 4))
(*.f64 4 (*.f64 x (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 x (*.f64 4 (-.f64 1/4 (*.f64 y 1/4))))
(*.f64 1/8 (*.f64 (-.f64 x (*.f64 x y)) 8))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1/8 (-.f64 (*.f64 x 8) (*.f64 y (*.f64 x 8))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1/2 (*.f64 2 (*.f64 x (+.f64 y -1))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (*.f64 2 (-.f64 1 y)) 1/2) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) 1/4) (*.f64 x 4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (neg.f64 (*.f64 (+.f64 y -1) 1/2)) (+.f64 x x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (neg.f64 (+.f64 x x)) (*.f64 (+.f64 y -1) 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 x -2) (*.f64 2 (+.f64 y -1)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (+.f64 y -1) -2) (+.f64 x x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))
(*.f64 (-.f64 2 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 x (*.f64 1/2 (-.f64 2 (+.f64 y y))))
(*.f64 1/2 (*.f64 (-.f64 2 (+.f64 y y)) x))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))
(*.f64 (*.f64 2 (*.f64 (-.f64 1 y) 1/2)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (*.f64 (+.f64 y -1) 1/2)) (neg.f64 x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (*.f64 2 (-.f64 1 y))) 2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (+.f64 y -1)) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (+.f64 y -1)) -4) 4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 x (+.f64 y -1))) -2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (-.f64 (*.f64 y 4) 4)) -4)
(*.f64 (-.f64 (*.f64 y 4) 4) (/.f64 x -4))
(*.f64 x (/.f64 (-.f64 (*.f64 y 4) 4) -4))
(*.f64 x (*.f64 (-.f64 (*.f64 y 4) 4) -1/4))
(/.f64 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4))) -8)
(*.f64 (-.f64 (*.f64 y 4) 4) (/.f64 x -4))
(*.f64 x (/.f64 (-.f64 (*.f64 y 4) 4) -4))
(*.f64 x (*.f64 (-.f64 (*.f64 y 4) 4) -1/4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (-.f64 (*.f64 y 4) 4)))) -16)
(*.f64 (-.f64 (*.f64 y 4) 4) (/.f64 x -4))
(*.f64 x (/.f64 (-.f64 (*.f64 y 4) 4) -4))
(*.f64 x (*.f64 (-.f64 (*.f64 y 4) 4) -1/4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))))) 128)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(pow.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(neg.f64 (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))

eval21.0ms (0.3%)

Compiler

Compiled 936 to 631 computations (32.6% saved)

prune16.0ms (0.3%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New1050105
Fresh022
Picked011
Done044
Total1057112
Error
0b
Counts
112 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.1b
(-.f64 x (*.f64 y x))
28.1b
(*.f64 (-.f64 1 y) x)
27.2b
(*.f64 y (-.f64 1 x))
54.7b
(*.f64 y (neg.f64 x))
34.4b
y
36.1b
x
Compiler

Compiled 42 to 27 computations (35.7% saved)

regimes19.0ms (0.3%)

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

3 calls:

7.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 51 to 25 computations (51% saved)

regimes30.0ms (0.5%)

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

2 calls:

20.0ms
y
9.0ms
x
Results
ErrorSegmentsBranch
6.5b2x
4.8b4y
Compiler

Compiled 35 to 17 computations (51.4% saved)

bsearch484.0ms (8.1%)

Algorithm
binary-search
Steps
TimeLeftRight
348.0ms
8.377081690650817e-25
9.418668486569298e-24
8.0ms
3.51107463206479e-48
3.5235281047582946e-47
127.0ms
3.1541056067419577e-134
1.2523146492875752e-129
Results
480.0ms320×body256valid
Compiler

Compiled 230 to 163 computations (29.1% saved)

regimes29.0ms (0.5%)

Counts
5 → 4
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)
y
x
(*.f64 y (-.f64 1 x))
Calls

2 calls:

16.0ms
y
12.0ms
x
Results
ErrorSegmentsBranch
6.5b2x
4.8b4y
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch30.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
9.0ms
8.377081690650817e-25
9.418668486569298e-24
10.0ms
3.51107463206479e-48
3.5235281047582946e-47
12.0ms
3.1541056067419577e-134
1.2523146492875752e-129
Results
27.0ms320×body256valid
Compiler

Compiled 230 to 171 computations (25.7% saved)

regimes100.0ms (1.7%)

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

2 calls:

92.0ms
y
7.0ms
x
Results
ErrorSegmentsBranch
12.9b2x
5.3b5y
Compiler

Compiled 19 to 11 computations (42.1% saved)

bsearch649.0ms (10.8%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
8.377081690650817e-25
9.418668486569298e-24
9.0ms
3.51107463206479e-48
3.5235281047582946e-47
11.0ms
3.1541056067419577e-134
1.2523146492875752e-129
618.0ms
-1.4748061148098157
-0.2763119447057675
Results
644.0ms416×body256valid
Compiler

Compiled 264 to 195 computations (26.1% saved)

regimes26.0ms (0.4%)

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

2 calls:

15.0ms
y
10.0ms
x
Results
ErrorSegmentsBranch
12.9b3x
10.6b5y
Compiler

Compiled 14 to 8 computations (42.9% saved)

bsearch158.0ms (2.6%)

Algorithm
binary-search
Steps
TimeLeftRight
128.0ms
8.377081690650817e-25
9.418668486569298e-24
8.0ms
3.51107463206479e-48
3.5235281047582946e-47
12.0ms
3.1541056067419577e-134
1.2523146492875752e-129
9.0ms
-1.4748061148098157
-0.2763119447057675
Results
154.0ms416×body256valid
Compiler

Compiled 240 to 177 computations (26.3% saved)

regimes18.0ms (0.3%)

Accuracy

Total -49.7b remaining (-403.1%)

Threshold costs -49.7b (-403.1%)

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

2 calls:

12.0ms
y
6.0ms
x
Results
ErrorSegmentsBranch
14.3b2x
12.3b4y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch260.0ms (4.3%)

Algorithm
binary-search
Steps
TimeLeftRight
240.0ms
8.377081690650817e-25
9.418668486569298e-24
8.0ms
3.51107463206479e-48
3.5235281047582946e-47
11.0ms
3.1541056067419577e-134
1.2523146492875752e-129
Results
257.0ms320×body256valid
Compiler

Compiled 174 to 129 computations (25.9% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
061275
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) (-.f64 x (*.f64 y x)) (if (<=.f64 y 8392073242338151/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 2381976568446569/680564733841876926926749214863536422912) x (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 8885724609534513/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 4627840190124763/1361129467683753853853498429727072845824) x (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) x (if (<=.f64 y 2961908203178171/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 8711228593176025/1361129467683753853853498429727072845824) x (*.f64 y (-.f64 1 x))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) x (if (<=.f64 y 1892330240919387/411376139330301510538742295639337626245683966408394965837152256) y (if (<=.f64 y 2381976568446569/680564733841876926926749214863536422912) x y))))
(if (<=.f64 y 2809573695284393/3121748550315992231381597229793166305748598142664971150859156959625371738819765620120306103063491971159826931121406622895447975679288285306290176) x (if (<=.f64 y 822752278660603/102844034832575377634685573909834406561420991602098741459288064) y (if (<=.f64 y 3811162509514511/1361129467683753853853498429727072845824) x y)))
x
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) (-.f64 x (*.f64 y x)) (if (<=.f64 y 8392073242338151/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 2381976568446569/680564733841876926926749214863536422912) x (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 8885724609534513/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 4627840190124763/1361129467683753853853498429727072845824) x (*.f64 y (-.f64 1 x)))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) x (if (<=.f64 y 2961908203178171/822752278660603021077484591278675252491367932816789931674304512) y (if (<=.f64 y 8711228593176025/1361129467683753853853498429727072845824) x (*.f64 y (-.f64 1 x))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 7804371375789981/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352) x (if (<=.f64 y 1892330240919387/411376139330301510538742295639337626245683966408394965837152256) y (if (<=.f64 y 2381976568446569/680564733841876926926749214863536422912) x y))))
(if (<=.f64 y 2809573695284393/3121748550315992231381597229793166305748598142664971150859156959625371738819765620120306103063491971159826931121406622895447975679288285306290176) x (if (<=.f64 y 822752278660603/102844034832575377634685573909834406561420991602098741459288064) y (if (<=.f64 y 3811162509514511/1361129467683753853853498429727072845824) x y)))
x
Compiler

Compiled 138 to 86 computations (37.7% saved)

soundness0.0ms (0%)

end61.0ms (1%)

Remove

(sort x y)

Compiler

Compiled 144 to 82 computations (43.1% saved)

Profiling

Loading profile data...