Details

Time bar (total: 6.7s)

analyze44.0ms (0.7%)

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
53.3%50%43.7%0.1%6.2%0%0%7
63.3%59.3%34.3%0.1%6.2%0%0%8
74.1%67.1%23.4%0.1%9.4%0%0%9
80.2%72.6%18%0.1%9.4%0%0%10
86.4%76.9%12.1%0.1%10.9%0%0%11
89.7%79.8%9.2%0.1%10.9%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.9s (28%)

Results
1.8s8256×body256valid
11.0ms147×body256infinite
Bogosity

preprocess4.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 9 to 7 computations (22.2% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 7 to 5 computations (28.6% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite188.0ms (2.8%)

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 x (-.f64 1 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 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 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 y)) 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 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 y) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 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 x (*.f64 (-.f64 1 y) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (-.f64 1 y)) 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)))))))

simplify382.0ms (5.7%)

Algorithm
egg-herbie
Rules
2118×rational.json-simplify-35
2020×rational.json-simplify-2
1878×rational.json-simplify-53
1060×rational.json-simplify-1
992×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
066640
1170618
2333618
3765618
42601618
54362618
65002618
75206618
85362618
95537618
106410618
117599618
127724618
137775618
147799618
157817618
167956618
Stop Event
node limit
Counts
46 → 29
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 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.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 (*.f64 x (-.f64 1 y)) 0)
(+.f64 0 (*.f64 x (-.f64 1 y)))
(+.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 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(-.f64 0 (*.f64 x (+.f64 y -1)))
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 2)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 4)) 4)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 8)) 8)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 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 x (*.f64 (-.f64 1 y) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))))))) 256)
(pow.f64 (*.f64 x (-.f64 1 y)) 1)
(neg.f64 (*.f64 x (+.f64 y -1)))
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
Outputs
(*.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 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (-.f64 1 y) x)
(+.f64 0 (*.f64 x (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(+.f64 -1 (-.f64 1 (*.f64 x (+.f64 y -1))))
(*.f64 (-.f64 1 y) x)
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2))))
(*.f64 (-.f64 1 y) x)
(+.f64 (*.f64 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))
(*.f64 (-.f64 1 y) x)
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (-.f64 1 y) x)
(-.f64 0 (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 1 y) x)
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 2)) 2)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 4)) 4)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 y) 8)) 8)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))) 16)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8)))) 32)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (+.f64 y -1)) -1)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)) -1)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))))) 64)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8)))))) 128)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 y) 8))))))) 256)
(*.f64 (-.f64 1 y) x)
(pow.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (-.f64 1 y) x)
(neg.f64 (*.f64 x (+.f64 y -1)))
(*.f64 (-.f64 1 y) x)
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 y -1) 1/2)))
(*.f64 (-.f64 1 y) x)

eval7.0ms (0.1%)

Compiler

Compiled 263 to 190 computations (27.8% saved)

prune5.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New26329
Fresh000
Picked011
Done000
Total26430
Error
0b
Counts
30 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 x (*.f64 y (neg.f64 x)))
41.3b
(*.f64 y (neg.f64 x))
0.0b
(*.f64 x (-.f64 1 y))
21.7b
x
Compiler

Compiled 24 to 16 computations (33.3% 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)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite863.0ms (12.9%)

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

simplify256.0ms (3.8%)

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

eval9.0ms (0.1%)

Compiler

Compiled 392 to 266 computations (32.1% saved)

prune6.0ms (0.1%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New45146
Fresh011
Picked101
Done022
Total46450
Error
0b
Counts
50 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 x (*.f64 y x))
41.3b
(*.f64 y (neg.f64 x))
0.0b
(*.f64 x (-.f64 1 y))
21.7b
x
Compiler

Compiled 23 to 15 computations (34.8% saved)

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

rewrite105.0ms (1.6%)

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

simplify651.0ms (9.7%)

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)

prune14.0ms (0.2%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New1050105
Fresh011
Picked011
Done022
Total1054109
Error
0b
Counts
109 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 x (*.f64 y x))
41.3b
(*.f64 y (neg.f64 x))
0.0b
(*.f64 x (-.f64 1 y))
21.7b
x
Compiler

Compiled 23 to 15 computations (34.8% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Error
0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 x (*.f64 y x))
41.3b
(*.f64 y (neg.f64 x))
0.0b
(*.f64 x (-.f64 1 y))
21.7b
x
Compiler

Compiled 23 to 15 computations (34.8% saved)

regimes154.0ms (2.3%)

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

4 calls:

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

Compiled 41 to 23 computations (43.9% saved)

regimes269.0ms (4%)

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

4 calls:

259.0ms
x
3.0ms
(*.f64 x (-.f64 1 y))
3.0ms
y
2.0ms
(-.f64 1 y)
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 x (-.f64 1 y))
0.0b1(-.f64 1 y)
Compiler

Compiled 30 to 20 computations (33.3% saved)

regimes23.0ms (0.3%)

Accuracy

Total -59.5b remaining (-3338.7%)

Threshold costs -59.5b (-3338.7%)

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

2 calls:

14.0ms
x
8.0ms
y
Results
ErrorSegmentsBranch
18.9b5x
1.8b3y
Compiler

Compiled 13 to 8 computations (38.5% saved)

bsearch26.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
0.008290048614804623
5741202.52590315
11.0ms
-1866.1526866353258
-0.2793900087659835
Results
23.0ms272×body256valid
Compiler

Compiled 199 to 145 computations (27.1% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02068
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1) x (*.f64 y (neg.f64 x))))
x
Outputs
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1) x (*.f64 y (neg.f64 x))))
x
Compiler

Compiled 36 to 21 computations (41.7% saved)

soundness1.1s (16.2%)

Algorithm
egg-herbie
Rules
2296×rational.json-simplify-2
2118×rational.json-simplify-35
2020×rational.json-simplify-2
1878×rational.json-simplify-53
1680×rational.json-simplify-35
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
066640
1170618
2333618
3765618
42601618
54362618
65002618
75206618
85362618
95537618
106410618
117599618
127724618
137775618
147799618
157817618
167956618
0931061
1207849
2429849
31417849
42959849
54109849
64821849
75232849
85590849
95934849
106323849
116802849
127704849
Stop Event
node limit
node limit
Compiler

Compiled 102 to 61 computations (40.2% saved)

end671.0ms (10%)

Compiler

Compiled 30 to 15 computations (50% saved)

Profiling

Loading profile data...