Details

Time bar (total: 3.4s)

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

sample802.0ms (23.6%)

Results
758.0ms8255×body256valid
32.0ms332×body256infinite
0.0msbody1024valid
Bogosity

preprocess20.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
11138
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)

simplify18.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 9 to 5 computations (44.4% 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 (+.f64 x y) (*.f64 x y))
Compiler

Compiled 9 to 5 computations (44.4% saved)

localize6.0ms (0.2%)

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.1%)

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

rewrite87.0ms (2.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
16019
220819
377619
4305119
Stop Event
node limit
Counts
1 → 19
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 y (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 y (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (-.f64 x (*.f64 y (+.f64 x -1))))))) (#(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 -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (/.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))))) (#(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 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))))))

simplify167.0ms (4.9%)

Algorithm
egg-herbie
Rules
1442×rational.json-simplify-47
1212×rational.json-simplify-49
1002×rational.json-simplify-2
872×rational.json-simplify-50
764×rational.json-simplify-1
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
054773
196773
2256757
31392757
45523757
Stop Event
node limit
Counts
43 → 37
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 (-.f64 x (*.f64 y (+.f64 x -1))) 0)
(+.f64 0 (-.f64 x (*.f64 y (+.f64 x -1))))
(+.f64 1 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)))
(+.f64 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)) 1)
(*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(*.f64 1 (-.f64 x (*.f64 y (+.f64 x -1))))
(*.f64 (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (-.f64 x (*.f64 y (+.f64 x -1))))
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))))
(*.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (/.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(*.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))
(/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(pow.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
Outputs
y
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 x (-.f64 1 y)))
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 (-.f64 x (*.f64 y (+.f64 x -1))) 0)
(-.f64 x (*.f64 y (+.f64 x -1)))
(+.f64 0 (-.f64 x (*.f64 y (+.f64 x -1))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(+.f64 1 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)))
(-.f64 x (*.f64 y (+.f64 x -1)))
(+.f64 (-.f64 x (-.f64 (*.f64 y (+.f64 x -1)) -1)) 1)
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 1 (-.f64 x (*.f64 y (+.f64 x -1))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (-.f64 x (*.f64 y (+.f64 x -1))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(neg.f64 (-.f64 (*.f64 y x) (+.f64 y x)))
(neg.f64 (-.f64 (-.f64 (*.f64 y x) y) x))
(-.f64 y (-.f64 (*.f64 y x) x))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (/.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(neg.f64 (-.f64 (*.f64 y x) (+.f64 y x)))
(neg.f64 (-.f64 (-.f64 (*.f64 y x) y) x))
(-.f64 y (-.f64 (*.f64 y x) x))
(-.f64 (+.f64 y x) (*.f64 y x))
(*.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))) (*.f64 (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))) (*.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1))))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(-.f64 x (*.f64 y (+.f64 x -1)))
(/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (/.f64 (-.f64 x (*.f64 y (+.f64 x -1))) (-.f64 x (*.f64 y (+.f64 x -1)))))
(-.f64 x (*.f64 y (+.f64 x -1)))
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(neg.f64 (-.f64 (*.f64 y x) (+.f64 y x)))
(neg.f64 (-.f64 (-.f64 (*.f64 y x) y) x))
(-.f64 y (-.f64 (*.f64 y x) x))
(-.f64 (+.f64 y x) (*.f64 y x))
(pow.f64 (-.f64 x (*.f64 y (+.f64 x -1))) 1)
(-.f64 x (*.f64 y (+.f64 x -1)))
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
(neg.f64 (-.f64 (*.f64 y x) (+.f64 y x)))
(neg.f64 (-.f64 (-.f64 (*.f64 y x) y) x))
(-.f64 y (-.f64 (*.f64 y x) x))
(-.f64 (+.f64 y x) (*.f64 y x))

eval9.0ms (0.3%)

Compiler

Compiled 460 to 271 computations (41.1% saved)

prune10.0ms (0.3%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New33437
Fresh000
Picked011
Done000
Total33538
Error
0b
Counts
38 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
25.8b
(*.f64 (-.f64 1 y) x)
27.0b
(*.f64 y (-.f64 1 x))
37.3b
y
35.8b
x
Compiler

Compiled 29 to 19 computations (34.5% saved)

localize5.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

6 calls:

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

rewrite107.0ms (3.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15913
218913
369013
4267913
Stop Event
node limit
Counts
1 → 9
Calls
Call 1
Inputs
(*.f64 y (-.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 y (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 y (-.f64 1 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) (/.f64 (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 y (-.f64 1 x))))))))

simplify232.0ms (6.8%)

Algorithm
egg-herbie
Rules
940×rational.json-simplify-111
766×rational.json-simplify-104
750×rational.json-simplify-2
604×rational.json-simplify-79
578×rational.json-simplify-73
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
026315
154293
2129293
3367293
41416293
53678293
65653293
77513293
Stop Event
node limit
Counts
21 → 17
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(+.f64 0 (*.f64 y (-.f64 1 x)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(-.f64 0 (neg.f64 (*.f64 y (-.f64 1 x))))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 y (-.f64 1 x)))) 1)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 y (-.f64 1 x)) (/.f64 (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x))))
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(neg.f64 (neg.f64 (*.f64 y (-.f64 1 x))))
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(-.f64 0 (neg.f64 (*.f64 y (-.f64 1 x))))
(*.f64 y (-.f64 1 x))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 y (-.f64 1 x)))) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) (/.f64 (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x))))
(*.f64 y (-.f64 1 x))
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(neg.f64 (neg.f64 (*.f64 y (-.f64 1 x))))
(*.f64 y (-.f64 1 x))

localize5.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

6 calls:

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

rewrite171.0ms (5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15913
218913
369013
4267813
Stop Event
node limit
Counts
1 → 9
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 (*.f64 (-.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (-.f64 1 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 (-.f64 1 y) x))) 1)))) (#(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) x) (/.f64 (*.f64 (-.f64 1 y) x) (*.f64 (-.f64 1 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 1 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (-.f64 1 y) x)))))))

simplify235.0ms (6.9%)

Algorithm
egg-herbie
Rules
938×rational.json-simplify-111
756×rational.json-simplify-104
752×rational.json-simplify-2
598×rational.json-simplify-79
578×rational.json-simplify-73
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
027315
154293
2129293
3367293
41419293
53677293
65651293
77489293
Stop Event
node limit
Counts
21 → 20
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 (*.f64 (-.f64 1 y) x) 0)
(-.f64 0 (neg.f64 (*.f64 (-.f64 1 y) x)))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (-.f64 1 y) x))) 1)
(/.f64 (*.f64 (-.f64 1 y) x) 1)
(/.f64 (*.f64 (-.f64 1 y) x) (/.f64 (*.f64 (-.f64 1 y) x) (*.f64 (-.f64 1 y) x)))
(pow.f64 (*.f64 (-.f64 1 y) x) 1)
(neg.f64 (neg.f64 (*.f64 (-.f64 1 y) x)))
Outputs
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.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 (*.f64 (-.f64 1 y) x) 0)
(*.f64 x (-.f64 1 y))
(-.f64 0 (neg.f64 (*.f64 (-.f64 1 y) x)))
(*.f64 x (-.f64 1 y))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (-.f64 1 y) x))) 1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) x) 1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) x) (/.f64 (*.f64 (-.f64 1 y) x) (*.f64 (-.f64 1 y) x)))
(*.f64 x (-.f64 1 y))
(pow.f64 (*.f64 (-.f64 1 y) x) 1)
(*.f64 x (-.f64 1 y))
(neg.f64 (neg.f64 (*.f64 (-.f64 1 y) x)))
(*.f64 x (-.f64 1 y))

eval6.0ms (0.2%)

Compiler

Compiled 255 to 155 computations (39.2% saved)

prune7.0ms (0.2%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New35237
Fresh022
Picked011
Done022
Total35742
Error
0b
Counts
42 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
25.8b
(+.f64 x (*.f64 y (neg.f64 x)))
25.8b
(*.f64 (-.f64 1 y) x)
27.0b
(*.f64 y (-.f64 1 x))
52.4b
(*.f64 y (neg.f64 x))
37.3b
y
35.8b
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.2%)

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.1%)

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
@0
(+.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)))

rewrite94.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
1766×rational.json-1
1766×rational.json-2
1766×rational.json-3
1762×rational.json-5
1760×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
17217
224517
387517
4352717
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (neg.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 1 (neg.f64 y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (*.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (neg.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))) (/.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)))))

simplify177.0ms (5.2%)

Algorithm
egg-herbie
Rules
1038×rational.json-simplify-2
822×rational.json-simplify-1
800×rational.json-simplify-55
772×rational.json-simplify-76
704×rational.json-simplify-50
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
048618
193478
2196478
3429478
41302478
53460478
65796478
Stop Event
node limit
Counts
38 → 24
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 y (neg.f64 x))) 0)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) 1))
(*.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
(*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))
(*.f64 1 (+.f64 x (*.f64 y (neg.f64 x))))
(*.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))))
(*.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (*.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) 1))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))) (/.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x)))))))
(/.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
(/.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))
(pow.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
Outputs
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(-.f64 (+.f64 x (*.f64 y (neg.f64 x))) 0)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) 1))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1 (+.f64 x (*.f64 y (neg.f64 x))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))) (*.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) 1))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 (+.f64 x (*.f64 y (neg.f64 x))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x))))))) (/.f64 (/.f64 1 (+.f64 x (*.f64 y (neg.f64 x)))) (*.f64 x (*.f64 (+.f64 1 (neg.f64 y)) (+.f64 x (*.f64 y (neg.f64 x)))))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 x (*.f64 y (neg.f64 x))) (/.f64 (*.f64 x (-.f64 -1 (neg.f64 y))) (*.f64 x (-.f64 -1 (neg.f64 y)))))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(pow.f64 (+.f64 x (*.f64 y (neg.f64 x))) 1)
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))

eval7.0ms (0.2%)

Compiler

Compiled 272 to 104 computations (61.8% saved)

prune13.0ms (0.4%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New23124
Fresh022
Picked101
Done134
Total25631
Error
0b
Counts
31 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
25.8b
(-.f64 x (*.f64 y x))
27.0b
(*.f64 y (-.f64 1 x))
52.4b
(*.f64 y (neg.f64 x))
37.3b
y
35.8b
x
Compiler

Compiled 35 to 22 computations (37.1% saved)

localize9.0ms (0.3%)

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
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
y
@0
(-.f64 x (*.f64 y x))

rewrite94.0ms (2.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
15113
218213
367413
4263213
Stop Event
node limit
Counts
1 → 26
Calls
Call 1
Inputs
(-.f64 x (*.f64 y x))
Outputs
((#(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 x (-.f64 (*.f64 x y) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (-.f64 (*.f64 x y) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 (/.f64 x x) y))))) (#(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 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 1 (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 -1 (-.f64 (*.f64 x y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (-.f64 -1 (-.f64 x (-.f64 (*.f64 x y) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))) (/.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))))) (#(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 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) x) -1)))) (#(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 (*.f64 x y) x))))))

simplify210.0ms (6.2%)

Algorithm
egg-herbie
Rules
1512×rational.json-simplify-50
1226×rational.json-simplify-54
1222×rational.json-simplify-43
1106×rational.json-simplify-58
1004×rational.json-simplify-111
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
060698
1114676
2341676
32083676
45323676
Stop Event
node limit
Counts
50 → 36
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 (-.f64 x (*.f64 x y)) 0)
(+.f64 0 (-.f64 x (*.f64 x y)))
(+.f64 1 (-.f64 x (-.f64 (*.f64 x y) -1)))
(+.f64 (-.f64 x (-.f64 (*.f64 x y) -1)) 1)
(*.f64 x (-.f64 1 y))
(*.f64 x (-.f64 (/.f64 x x) y))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 x (*.f64 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(*.f64 1 (-.f64 x (*.f64 x y)))
(*.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y)))
(*.f64 (-.f64 (*.f64 x y) x) -1)
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 1 (-.f64 x (*.f64 x y))))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y))))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 -1 (-.f64 (*.f64 x y) x)))
(*.f64 (-.f64 1 y) x)
(*.f64 (neg.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (-.f64 -1 (-.f64 x (-.f64 (*.f64 x y) -1))))
(*.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))
(*.f64 -1 (-.f64 (*.f64 x y) x))
(*.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))
(*.f64 (*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))) (/.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))
(/.f64 (-.f64 x (*.f64 x y)) 1)
(/.f64 (-.f64 x (*.f64 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(/.f64 (-.f64 (*.f64 x y) x) -1)
(pow.f64 (-.f64 x (*.f64 x y)) 1)
(neg.f64 (-.f64 (*.f64 x y) x))
Outputs
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 y (*.f64 x -1)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (-.f64 x (*.f64 x y)) 0)
(-.f64 x (*.f64 y x))
(+.f64 0 (-.f64 x (*.f64 x y)))
(-.f64 x (*.f64 y x))
(+.f64 1 (-.f64 x (-.f64 (*.f64 x y) -1)))
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 x (-.f64 (*.f64 x y) -1)) 1)
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 (/.f64 x x) y))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 x (*.f64 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(-.f64 x (*.f64 y x))
(*.f64 1 (-.f64 x (*.f64 x y)))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y)))
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 (*.f64 x y) x) -1)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 1 (-.f64 x (*.f64 x y))))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (-.f64 x (*.f64 x y))))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (/.f64 -1 (-.f64 (*.f64 x y) x)))
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(*.f64 x (-.f64 1 y))
(*.f64 (neg.f64 (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (-.f64 -1 (-.f64 x (-.f64 (*.f64 x y) -1))))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))
(-.f64 x (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 x y) x))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))) (/.f64 (/.f64 (/.f64 1 (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))) (*.f64 (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))) (*.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))))
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 x (*.f64 x y)) 1)
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 x (*.f64 x y)) (/.f64 (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y))))
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 (*.f64 x y) x) -1)
(-.f64 x (*.f64 y x))
(pow.f64 (-.f64 x (*.f64 x y)) 1)
(-.f64 x (*.f64 y x))
(neg.f64 (-.f64 (*.f64 x y) x))
(-.f64 x (*.f64 y x))

eval6.0ms (0.2%)

Compiler

Compiled 496 to 106 computations (78.6% saved)

prune8.0ms (0.2%)

Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New36036
Fresh022
Picked011
Done033
Total36642
Error
0b
Counts
42 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
25.8b
(-.f64 x (*.f64 y x))
27.0b
(*.f64 y (-.f64 1 x))
52.4b
(*.f64 y (neg.f64 x))
37.3b
y
35.8b
x
Compiler

Compiled 35 to 22 computations (37.1% saved)

regimes23.0ms (0.7%)

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:

9.0ms
(-.f64 (+.f64 x y) (*.f64 x y))
6.0ms
x
6.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)

regimes122.0ms (3.6%)

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

2 calls:

103.0ms
y
17.0ms
x
Results
ErrorSegmentsBranch
6.7b2x
7.2b2y
Compiler

Compiled 35 to 17 computations (51.4% saved)

bsearch5.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
-3.0394737806090728e-151
-2.582410418021009e-151
Results
4.0ms48×body256valid
Compiler

Compiled 62 to 42 computations (32.3% saved)

regimes32.0ms (0.9%)

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

2 calls:

18.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
6.7b2x
7.2b2y
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch5.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
-3.0394737806090728e-151
-2.582410418021009e-151
Results
4.0ms48×body256valid
Compiler

Compiled 62 to 45 computations (27.4% saved)

regimes98.0ms (2.9%)

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

2 calls:

78.0ms
y
19.0ms
x
Results
ErrorSegmentsBranch
12.8b4x
7.5b3y
Compiler

Compiled 19 to 11 computations (42.1% saved)

bsearch150.0ms (4.4%)

Algorithm
binary-search
Steps
TimeLeftRight
132.0ms
1.6145538490234942e-91
3.738526438598466e-91
18.0ms
-13486.127488129965
-2.5520554301980667e-28
Results
146.0ms256×body256valid
Compiler

Compiled 195 to 142 computations (27.2% saved)

regimes32.0ms (0.9%)

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

2 calls:

18.0ms
x
13.0ms
y
Results
ErrorSegmentsBranch
13.5b5x
15.4b3y
Compiler

Compiled 14 to 8 computations (42.9% saved)

bsearch107.0ms (3.1%)

Algorithm
binary-search
Steps
TimeLeftRight
74.0ms
2.602303596883438e-7
4194.631257720273
5.0ms
-3.0394737806090728e-151
-2.582410418021009e-151
10.0ms
-1.2685844434340743e+124
-1.8633211196322926e+123
18.0ms
-3.479899000399758e+137
-3.105223979851957e+134
Results
96.0ms432×body256valid
5.0ms32×body256infinite
Compiler

Compiled 302 to 219 computations (27.5% saved)

regimes20.0ms (0.6%)

Accuracy

Total -44.5b remaining (-255.1%)

Threshold costs -44.5b (-255.1%)

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

2 calls:

10.0ms
y
10.0ms
x
Results
ErrorSegmentsBranch
17.5b2x
17.6b2y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch5.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
-3.0394737806090728e-151
-2.582410418021009e-151
Results
4.0ms48×body256valid
Compiler

Compiled 38 to 27 computations (28.9% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040205
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) (-.f64 x (*.f64 y x)) (*.f64 y (-.f64 1 x)))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1697188975832653/4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109248) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 x -10799999999999999394091920235083206301057803731563389060882430071123320901501629718754298818514531654758583231459409010093423724987416576) x (if (<=.f64 x -9599999999999999551161451144096322043608589577977544405395745006727929321813365753126616453417628917803772373404262661619712) (*.f64 y (neg.f64 x)) (if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) x (if (<=.f64 x 1) y (*.f64 y (neg.f64 x))))))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) x y)
x
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) (-.f64 x (*.f64 y x)) (*.f64 y (-.f64 1 x)))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) (*.f64 (-.f64 1 y) x) (*.f64 y (-.f64 1 x)))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 1697188975832653/4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109248) x (*.f64 y (-.f64 1 x))))
(if (<=.f64 x -10799999999999999394091920235083206301057803731563389060882430071123320901501629718754298818514531654758583231459409010093423724987416576) x (if (<=.f64 x -9599999999999999551161451144096322043608589577977544405395745006727929321813365753126616453417628917803772373404262661619712) (*.f64 y (neg.f64 x)) (if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) x (if (<=.f64 x 1) y (*.f64 y (neg.f64 x))))))
(if (<=.f64 x -138206631768367/460688772561223309599799143187044542348256984914116263229517370635452168260760357920669766257038423772151901248872539660616526444082616288154471954520592778765795328) x y)
x
Compiler

Compiled 101 to 62 computations (38.6% saved)

soundness0.0ms (0%)

end207.0ms (6.1%)

Remove

(sort x y)

Compiler

Compiled 107 to 58 computations (45.8% saved)

Profiling

Loading profile data...