Details

Time bar (total: 8.5s)

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

sample702.0ms (8.2%)

Results
659.0ms8256×body256valid
32.0ms353×body256infinite
Bogosity

preprocess75.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

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

(sort x y)

Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify7.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 16 to 7 computations (56.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 5 computations (44.4% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 5 computations (70.6% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite83.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1892×bool.json-1
1892×bool.json-2
1270×bool.json-3
904×rational.json-1
904×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
17219
221419
349819
4114819
5280919
6646319
Stop Event
node limit
Counts
1 → 42
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (-.f64 y (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 y (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x y) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 y (*.f64 x (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 y)) y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 y (*.f64 x y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 x (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 1 y) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (/.f64 (*.f64 x (-.f64 1 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (*.f64 (+.f64 x y) 2) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -1) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 y (*.f64 x (-.f64 1 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 y (*.f64 x (-.f64 1 y))) (+.f64 y (*.f64 x (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 y (*.f64 x (-.f64 1 y))) (+.f64 y (*.f64 x (-.f64 1 y))))))))

simplify465.0ms (5.5%)

Algorithm
egg-herbie
Rules
2590×rational.json-simplify-35
1474×rational.json-simplify-2
1110×rational.json-simplify-45
1032×rational.json-simplify-1
892×rational.json-simplify-26
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01101284
12331284
25021278
311031272
421811272
530661272
636971272
743091272
853881272
960751272
1067531272
1173501272
1273991272
1374011272
1474011272
1579471272
Stop Event
node limit
Counts
66 → 67
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (-.f64 1 y) x)
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
x
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 (*.f64 y (-.f64 1 x)) x)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (-.f64 y (*.f64 x y)))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (+.f64 x y) (neg.f64 (*.f64 x y)))
(+.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 0)
(+.f64 0 (+.f64 y (*.f64 x (-.f64 1 y))))
(+.f64 (*.f64 x (-.f64 1 y)) y)
(+.f64 (-.f64 y (*.f64 x y)) x)
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 x y))
(+.f64 -1 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))))
(+.f64 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))) -1)
(+.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))
(*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)
(*.f64 1 (+.f64 y (*.f64 x (-.f64 1 y))))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 1 y) (*.f64 x 1/2))))
(*.f64 2 (+.f64 (*.f64 y 1/2) (/.f64 (*.f64 x (-.f64 1 y)) 2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 2 (-.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 y (*.f64 x 1/2))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 1/2)
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(*.f64 4 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 1/4)
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) (+.f64 y y)))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 x y) 2) (*.f64 x (+.f64 y y))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))
(*.f64 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)
(/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 2)
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) 16)
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8))) 32)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))) 4)
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -1) 4)
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
Outputs
y
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (-.f64 1 y) x)
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 y (*.f64 (-.f64 1 y) x))
x
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (+.f64 1 (*.f64 -1 x))) x)
(+.f64 x (*.f64 y (-.f64 1 x)))
(+.f64 x (-.f64 y (*.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(+.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 (+.f64 x y) (neg.f64 (*.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 0)
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 0 (+.f64 y (*.f64 x (-.f64 1 y))))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 (*.f64 x (-.f64 1 y)) y)
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 (-.f64 y (*.f64 x y)) x)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (neg.f64 (*.f64 x y)) (+.f64 x y))
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(+.f64 -1 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))))
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 (+.f64 y (+.f64 1 (*.f64 x (-.f64 1 y)))) -1)
(+.f64 y (*.f64 (-.f64 1 y) x))
(+.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 1 (+.f64 y (*.f64 x (-.f64 1 y))))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 1 y) (*.f64 x 1/2))))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (/.f64 (*.f64 x (-.f64 1 y)) 2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 1 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 1/2 (-.f64 1 x)))))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 (-.f64 1 x) 1/2))))
(*.f64 2 (*.f64 1/2 (+.f64 x (*.f64 y (-.f64 1 x)))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 1 x))) 1/2))
(*.f64 2 (-.f64 (*.f64 (+.f64 x y) 1/2) (*.f64 y (*.f64 x 1/2))))
(*.f64 2 (-.f64 (*.f64 (+.f64 y x) 1/2) (*.f64 y (*.f64 x 1/2))))
(*.f64 2 (*.f64 1/2 (+.f64 y (-.f64 x (*.f64 y x)))))
(*.f64 2 (*.f64 1/2 (+.f64 x (-.f64 y (*.f64 y x)))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 1/2)
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(*.f64 4 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 1/4)
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 -1 (-.f64 (*.f64 x y) (+.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) (+.f64 y y)))
(*.f64 1/2 (+.f64 y (+.f64 y (*.f64 (*.f64 (-.f64 1 y) x) 2))))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1 y) (*.f64 x 2)) (+.f64 y y)))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 x y) 2) (*.f64 x (+.f64 y y))))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 y x) 2) (*.f64 x (+.f64 y y))))
(*.f64 1/2 (-.f64 (*.f64 (+.f64 y x) 2) (*.f64 y (+.f64 x x))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1/2) 2)
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4))
(+.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 1)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 2) 2)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (-.f64 (*.f64 x y) (+.f64 x y)) -1)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 4) 4)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8) 8)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))) -2)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -4)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) 16)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) 2)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8)) (*.f64 2 (*.f64 (+.f64 y (*.f64 x (-.f64 1 y))) 8))) 32)
(+.f64 y (*.f64 (-.f64 1 y) x))
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y)))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (+.f64 x y))))) 4)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (+.f64 x y)) 4) -1) 4)
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))
(neg.f64 (-.f64 (*.f64 x y) (+.f64 x y)))
(+.f64 x (-.f64 y (*.f64 y x)))
(+.f64 y (-.f64 x (*.f64 y x)))

eval13.0ms (0.2%)

Compiler

Compiled 701 to 420 computations (40.1% saved)

prune9.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New63467
Fresh000
Picked011
Done000
Total63568
Error
0b
Counts
68 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.1b
(*.f64 (-.f64 1 y) x)
28.3b
(*.f64 y (-.f64 1 x))
36.0b
y
35.6b
x
Compiler

Compiled 29 to 19 computations (34.5% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite105.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1212×bool.json-1
1212×bool.json-2
1192×rational.json-simplify-35
1166×rational.json-1
1166×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17713
223713
347413
492113
5198013
6431013
7750713
Stop Event
node limit
Counts
1 → 11
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 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -2 (*.f64 (+.f64 x -1) y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))))

simplify1.2s (13.5%)

Algorithm
egg-herbie
Rules
5704×rational.json-simplify-35
2278×rational.json-simplify-2
1094×rational.json-simplify-53
722×rational.json-simplify-1
672×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042341
1101319
2212319
3452319
41722319
53283319
64229319
74631319
84828319
95030319
105043319
115403319
125407319
135477319
145554319
155760319
165987319
176187319
186377319
196567319
206757319
216947319
226947319
237004319
247007319
257011319
267011319
277202319
287393319
297584319
307775319
317966319
Stop Event
node limit
Counts
23 → 21
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 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) y)) 2)
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.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 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) y)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
(*.f64 y (-.f64 1 x))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite103.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1212×bool.json-1
1212×bool.json-2
1192×rational.json-simplify-35
1166×rational.json-1
1166×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17713
223713
347413
492113
5198013
6431313
7751013
Stop Event
node limit
Counts
1 → 11
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) (*.f64 x 1/2)) (*.f64 (-.f64 1 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (-.f64 1 y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1 y) x) (*.f64 (-.f64 1 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1 y) x) (*.f64 (-.f64 1 y) x))))))

simplify973.0ms (11.4%)

Algorithm
egg-herbie
Rules
7886×rational.json-simplify-41
3926×rational.json-simplify-35
2864×rational.json-simplify-2
1822×rational.json-simplify-53
734×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042341
196319
2196319
3424319
41319319
52590319
63586319
73760319
83886319
94009319
104129319
114249319
124802319
135065319
145123319
155123319
165243319
175363319
185483319
195603319
205867319
216188319
226361319
236506319
246630319
256750319
266750319
277048319
287048319
Stop Event
node limit
Counts
23 → 22
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) (*.f64 x 1/2)) (*.f64 (-.f64 1 y) (*.f64 x 1/2)))
(-.f64 (*.f64 (-.f64 1 y) x) 0)
(/.f64 (*.f64 (-.f64 1 y) x) 1)
(/.f64 (*.f64 (-.f64 1 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 y)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))))) 64)
Outputs
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 x y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 (-.f64 1 y) x) 0)
(*.f64 x (-.f64 1 y))
(+.f64 0 (*.f64 (-.f64 1 y) x))
(*.f64 x (-.f64 1 y))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 x 1/2)) (*.f64 (-.f64 1 y) (*.f64 x 1/2)))
(*.f64 x (-.f64 1 y))
(-.f64 (*.f64 (-.f64 1 y) x) 0)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) x) 1)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (+.f64 x x)) 2)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 y)) 8)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))) 16)
(*.f64 x (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) 32)
(*.f64 x (-.f64 1 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 y))))) 64)
(*.f64 x (-.f64 1 y))

eval68.0ms (0.8%)

Compiler

Compiled 347 to 229 computations (34% saved)

prune7.0ms (0.1%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New41243
Fresh022
Picked011
Done022
Total41748
Error
0b
Counts
48 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.3b
(+.f64 y (*.f64 y (neg.f64 x)))
28.1b
(*.f64 (-.f64 1 y) x)
28.3b
(*.f64 y (-.f64 1 x))
55.1b
(*.f64 y (neg.f64 x))
36.0b
y
35.6b
x
Compiler

Compiled 43 to 28 computations (34.9% saved)

localize4.0ms (0%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 5 computations (68.8% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite414.0ms (4.9%)

Algorithm
batch-egg-rewrite
Rules
1568×bool.json-1
1568×bool.json-2
1514×rational.json-1
1514×rational.json-2
1514×rational.json-3
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0817
18317
223917
353813
4120513
5274113
6585013
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 y (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))))

simplify360.0ms (4.2%)

Algorithm
egg-herbie
Rules
2084×rational.json-simplify-2
1702×rational.json-simplify-35
1572×rational.json-simplify-1
1128×rational.json-simplify-48
1032×rational.json-simplify-53
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0831101
1170973
2373973
31177773
42225773
52992773
63669773
73885773
84058773
94219773
104485773
114843773
125532773
136436773
146760773
157315773
167480773
177587773
Stop Event
node limit
Counts
57 → 45
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))
(*.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))
(*.f64 (-.f64 1 x) y)
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))
(*.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
Outputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (-.f64 1 x) y)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))

eval8.0ms (0.1%)

Compiler

Compiled 379 to 264 computations (30.3% saved)

prune10.0ms (0.1%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New44145
Fresh022
Picked101
Done044
Total45752
Error
0b
Counts
52 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.3b
(-.f64 y (*.f64 y x))
28.1b
(*.f64 (-.f64 1 y) x)
28.3b
(*.f64 y (-.f64 1 x))
55.1b
(*.f64 y (neg.f64 x))
36.0b
y
35.6b
x
Compiler

Compiled 42 to 27 computations (35.7% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite71.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1308×bool.json-1
1308×bool.json-2
1266×rational.json-1
1266×rational.json-2
1266×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
16013
217813
339713
484013
5187613
6432013
Stop Event
node limit
Counts
1 → 51
Calls
Call 1
Inputs
(-.f64 y (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 y (neg.f64 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 y (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (-.f64 y (*.f64 y x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 y x)) y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 (+.f64 y 1) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (+.f64 y 1) (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y 1/2) (-.f64 (*.f64 y 1/2) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) (*.f64 y (/.f64 (-.f64 1 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 y x)) (+.f64 y -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 y (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y 1) (+.f64 (neg.f64 (*.f64 y x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 y (*.f64 y x)) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (-.f64 1/2 (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 y x) y) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 y (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 y 4) (/.f64 (*.f64 y x) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 y) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x -1) (neg.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 y x) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y y) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (-.f64 2 (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 y (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 y 4) (*.f64 y (*.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 y (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y x) y) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 2 (+.f64 x -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y x) y) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) y) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 y x) y))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 y (*.f64 y x)) (-.f64 y (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 y (*.f64 y x)) (-.f64 y (*.f64 y x)))))))

simplify869.0ms (10.2%)

Algorithm
egg-herbie
Rules
2562×rational.json-simplify-2
2086×rational.json-simplify-35
1062×rational.json-simplify-1
1034×rational.json-simplify-51
776×rational.json-simplify-52
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01201019
12571013
25471007
313791007
425301007
539481007
653211007
763081007
869381007
971811007
1073791007
1175651007
Stop Event
node limit
Counts
75 → 64
Calls
Call 1
Inputs
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
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 y (neg.f64 (*.f64 y x)))
(+.f64 (-.f64 y (*.f64 y x)) 0)
(+.f64 0 (-.f64 y (*.f64 y x)))
(+.f64 1 (+.f64 (-.f64 y (*.f64 y x)) -1))
(+.f64 (neg.f64 (*.f64 y x)) y)
(+.f64 -1 (-.f64 (+.f64 y 1) (*.f64 y x)))
(+.f64 (-.f64 (+.f64 y 1) (*.f64 y x)) -1)
(+.f64 (*.f64 y 1/2) (-.f64 (*.f64 y 1/2) (*.f64 y x)))
(+.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) (*.f64 y (/.f64 (-.f64 1 x) 2)))
(+.f64 (-.f64 1 (*.f64 y x)) (+.f64 y -1))
(+.f64 -2 (+.f64 (-.f64 y (*.f64 y x)) 2))
(+.f64 (+.f64 y 1) (+.f64 (neg.f64 (*.f64 y x)) -1))
(+.f64 (+.f64 (-.f64 y (*.f64 y x)) 2) -2)
(*.f64 y (-.f64 1 x))
(*.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 1 (-.f64 y (*.f64 y x)))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 1/2)
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 (+.f64 y y) (-.f64 1/2 (*.f64 x 1/2)))
(*.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 4 (/.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 4 (-.f64 (/.f64 y 4) (/.f64 (*.f64 y x) 4)))
(*.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 1/4)
(*.f64 (neg.f64 y) (+.f64 x -1))
(*.f64 (+.f64 x -1) (neg.f64 y))
(*.f64 (-.f64 1 x) y)
(*.f64 -1 (-.f64 (*.f64 y x) y))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (+.f64 y y) (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (-.f64 2 (+.f64 x x)))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 1/4 (-.f64 (*.f64 y 4) (*.f64 y (*.f64 x 4))))
(*.f64 (/.f64 (-.f64 y (*.f64 y x)) 4) 4)
(/.f64 (-.f64 y (*.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 2)
(/.f64 (-.f64 (*.f64 y x) y) -1)
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 4)
(/.f64 (*.f64 y (*.f64 2 (+.f64 x -1))) -2)
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 8) 8)
(/.f64 (*.f64 (-.f64 (*.f64 y x) y) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) y) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4))) 8)
(neg.f64 (-.f64 (*.f64 y x) y))
Outputs
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 y (*.f64 y x)) 0)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 0 (-.f64 y (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 1 (+.f64 (-.f64 y (*.f64 y x)) -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (neg.f64 (*.f64 y x)) y)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 -1 (-.f64 (+.f64 y 1) (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 (+.f64 y 1) (*.f64 y x)) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (*.f64 y 1/2) (-.f64 (*.f64 y 1/2) (*.f64 y x)))
(+.f64 (*.f64 y 1/2) (*.f64 y (-.f64 1/2 x)))
(*.f64 y (+.f64 1/2 (-.f64 1/2 x)))
(+.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 1 (*.f64 y x)) (+.f64 y -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 -2 (+.f64 (-.f64 y (*.f64 y x)) 2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (+.f64 y 1) (+.f64 (neg.f64 (*.f64 y x)) -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (+.f64 (-.f64 y (*.f64 y x)) 2) -2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1 (-.f64 y (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 1/2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (-.f64 1/2 (*.f64 x 1/2)))
(*.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (/.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (-.f64 (/.f64 y 4) (/.f64 (*.f64 y x) 4)))
(*.f64 4 (-.f64 (/.f64 y 4) (*.f64 x (/.f64 y 4))))
(*.f64 4 (-.f64 (/.f64 y 4) (*.f64 y (/.f64 x 4))))
(*.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 1/4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (neg.f64 y) (+.f64 x -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 x -1) (neg.f64 y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (-.f64 1 x) y)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 y x) y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 y y) (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (-.f64 2 (+.f64 x x)))
(*.f64 1/2 (*.f64 y (-.f64 2 (+.f64 x x))))
(*.f64 y (*.f64 1/2 (-.f64 2 (+.f64 x x))))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (*.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 y 4) (*.f64 y (*.f64 x 4))))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (-.f64 y (*.f64 y x)) 4) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (*.f64 2 (+.f64 x -1))) -2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 8) 8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 y x) y) 4) -4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)) 16)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) y) 4)) -8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) 32)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)))) 64)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4))) 8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(neg.f64 (-.f64 (*.f64 y x) y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))

eval10.0ms (0.1%)

Compiler

Compiled 559 to 300 computations (46.3% saved)

prune11.0ms (0.1%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New64064
Fresh022
Picked011
Done044
Total64771
Error
0b
Counts
71 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (+.f64 x y) (*.f64 x y))
28.3b
(-.f64 y (*.f64 y x))
28.1b
(*.f64 (-.f64 1 y) x)
28.3b
(*.f64 y (-.f64 1 x))
55.1b
(*.f64 y (neg.f64 x))
36.0b
y
35.6b
x
Compiler

Compiled 42 to 27 computations (35.7% saved)

regimes17.0ms (0.2%)

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 y (*.f64 y x))
(+.f64 y (*.f64 y (neg.f64 x)))
(-.f64 (+.f64 x y) (*.f64 x y))
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
Calls

3 calls:

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

Compiled 51 to 25 computations (51% saved)

regimes43.0ms (0.5%)

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

2 calls:

26.0ms
y
16.0ms
x
Results
ErrorSegmentsBranch
7.9b2x
5.4b6y
Compiler

Compiled 35 to 17 computations (51.4% saved)

bsearch739.0ms (8.7%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
6.661266988986144e-42
1.196363192337912e-40
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
698.0ms
1.978827876662654e-112
1.9786622423425079e-109
13.0ms
4.2917510162141453e-144
6.890430347985743e-139
9.0ms
6.013300742534405e-157
6.60875913568991e-156
Results
732.0ms576×body256valid
Compiler

Compiled 422 to 308 computations (27% saved)

regimes757.0ms (8.9%)

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

2 calls:

744.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
7.9b2x
5.4b6y
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch114.0ms (1.3%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
6.661266988986144e-42
1.196363192337912e-40
67.0ms
1.4172738898923237e-80
1.576256177309835e-79
12.0ms
1.978827876662654e-112
1.9786622423425079e-109
14.0ms
4.2917510162141453e-144
6.890430347985743e-139
10.0ms
6.013300742534405e-157
6.60875913568991e-156
Results
107.0ms576×body256valid
Compiler

Compiled 422 to 315 computations (25.4% saved)

regimes419.0ms (4.9%)

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

2 calls:

393.0ms
x
26.0ms
y
Results
ErrorSegmentsBranch
13.3b2x
6.0b7y
Compiler

Compiled 19 to 11 computations (42.1% saved)

bsearch69.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
6.661266988986144e-42
1.196363192337912e-40
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
14.0ms
1.978827876662654e-112
1.9786622423425079e-109
13.0ms
4.2917510162141453e-144
6.890430347985743e-139
11.0ms
6.013300742534405e-157
6.60875913568991e-156
12.0ms
-1803.4205619920863
-0.17890390871090597
Results
59.0ms704×body256valid
Compiler

Compiled 418 to 310 computations (25.8% saved)

regimes34.0ms (0.4%)

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

2 calls:

23.0ms
y
10.0ms
x
Results
ErrorSegmentsBranch
13.9b3x
12.3b7y
Compiler

Compiled 14 to 8 computations (42.9% saved)

bsearch544.0ms (6.4%)

Algorithm
binary-search
Steps
TimeLeftRight
418.0ms
6.661266988986144e-42
1.196363192337912e-40
8.0ms
1.4172738898923237e-80
1.576256177309835e-79
13.0ms
1.978827876662654e-112
1.9786622423425079e-109
13.0ms
4.2917510162141453e-144
6.890430347985743e-139
81.0ms
6.013300742534405e-157
6.60875913568991e-156
12.0ms
-1803.4205619920863
-0.17890390871090597
Results
464.0ms704×body256valid
Compiler

Compiled 390 to 289 computations (25.9% saved)

regimes24.0ms (0.3%)

Accuracy

Total -48.7b remaining (-361%)

Threshold costs -48.7b (-361%)

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

2 calls:

16.0ms
y
8.0ms
x
Results
ErrorSegmentsBranch
15.8b2x
13.5b6y
Compiler

Compiled 10 to 6 computations (40% saved)

bsearch54.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
6.661266988986144e-42
1.196363192337912e-40
9.0ms
1.4172738898923237e-80
1.576256177309835e-79
12.0ms
1.978827876662654e-112
1.9786622423425079e-109
13.0ms
4.2917510162141453e-144
6.890430347985743e-139
9.0ms
6.013300742534405e-157
6.60875913568991e-156
Results
48.0ms576×body256valid
Compiler

Compiled 302 to 225 computations (25.5% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
075399
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 4707826301540011/196159429230833773869868419475239575503198607639501078528) x (-.f64 y (*.f64 y x)))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8038440580489423/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 725789888154085/98079714615416886934934209737619787751599303819750539264) x (*.f64 y (-.f64 1 x)))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8276949764193527/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 7355978596156267/196159429230833773869868419475239575503198607639501078528) x (*.f64 y (-.f64 1 x))))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 41377379603379/1532495540865888858358347027150309183618739122183602176) x y))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 2453839756149403/169230328010303641331690318856389386196071598838855992136870091590247882556495704531248437872567112920983350278405979725889536) x (if (<=.f64 y 5072969210312161/266998379490113760299377713271194014325338065294581596243380200977777465722580068752870260867072) y (if (<=.f64 y 4707826301540011/196159429230833773869868419475239575503198607639501078528) x y)))))
x
Outputs
(-.f64 (+.f64 x y) (*.f64 x y))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 4707826301540011/196159429230833773869868419475239575503198607639501078528) x (-.f64 y (*.f64 y x)))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8038440580489423/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (*.f64 (-.f64 1 y) x) (if (<=.f64 y 7742953005213299/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 725789888154085/98079714615416886934934209737619787751599303819750539264) x (*.f64 y (-.f64 1 x)))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8276949764193527/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 7355978596156267/196159429230833773869868419475239575503198607639501078528) x (*.f64 y (-.f64 1 x))))))))
(if (<=.f64 y -1) (*.f64 y (neg.f64 x)) (if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 8249978490502303/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) x (if (<=.f64 y 8009951384703413/533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734144) y (if (<=.f64 y 41377379603379/1532495540865888858358347027150309183618739122183602176) x y))))))
(if (<=.f64 y 6279873474903045/966134380754314586173837972732996836074731832426608749664308812862879785572390106134048441645480644490615904007875544294341269665260746913935727168366770187174245203705856) x (if (<=.f64 y 7556769264271775/1757388200993436087035366604564836663620975436836686184804982645551499054949799949343375268009332366074187855716219099657503228927927460816018951242525454630912) y (if (<=.f64 y 2453839756149403/169230328010303641331690318856389386196071598838855992136870091590247882556495704531248437872567112920983350278405979725889536) x (if (<=.f64 y 5072969210312161/266998379490113760299377713271194014325338065294581596243380200977777465722580068752870260867072) y (if (<=.f64 y 4707826301540011/196159429230833773869868419475239575503198607639501078528) x y)))))
x
Compiler

Compiled 196 to 122 computations (37.8% saved)

soundness0.0ms (0%)

end77.0ms (0.9%)

Remove

(sort x y)

Compiler

Compiled 202 to 118 computations (41.6% saved)

Profiling

Loading profile data...