Details

Time bar (total: 4.8s)

analyze166.0ms (3.4%)

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
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
25.6%25%72.5%0.1%2.3%0%0%9
36.7%34.3%59.3%0.1%6.2%0%0%10
44.2%40.6%51.3%0.1%8%0%0%11
52%46.8%43.2%0.1%9.8%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample1.7s (35.7%)

Results
1.1s8256×body256valid
658.0ms1175×body256infinite
Bogosity

preprocess12.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01776
12876
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 y (*.f64 x (+.f64 z y)))
(+.f64 z (*.f64 y (+.f64 x z)))
(+.f64 x (*.f64 z (+.f64 y x)))
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z y)))
(+.f64 y (*.f64 x (+.f64 y z)))
(+.f64 z (*.f64 y (+.f64 x z)))
(+.f64 x (*.f64 z (+.f64 y x)))
(+.f64 x (*.f64 z (+.f64 x y)))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify9.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11119
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 x (*.f64 y (+.f64 x z)))

eval0.0ms (0%)

Compiler

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

Compiled 10 to 6 computations (40% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series4.0ms (0.1%)

Counts
2 → 60
Calls

18 calls:

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

rewrite210.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
2418×rational.json-simplify-2
1664×rational.json-simplify-35
1362×rational.json-1
1362×rational.json-2
1362×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
15332
211332
323932
446132
5106932
6250332
7421332
8517132
9602532
10664232
11664232
12770832
Stop Event
node limit
Counts
2 → 39
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y (+.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (+.f64 x z) 1/2)) (*.f64 y (*.f64 (+.f64 x z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x z) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x z) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 x z)) 1)))))

simplify1.0s (21.3%)

Algorithm
egg-herbie
Rules
7084×rational.json-simplify-41
3984×rational.json-simplify-35
2186×rational.json-simplify-2
910×rational.json-simplify-1
888×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01021587
12471587
26731587
318001587
435241587
542201587
645851587
748141587
849661587
950961587
1056341587
1158611587
1261011587
1361361587
1461781587
1562271587
1663261587
1763281587
1864441587
1965601587
2066761587
2168501587
2270521587
2371681587
2472841587
2574001587
2675161587
2776321587
2877481587
2977481587
3077491587
3177491587
Stop Event
node limit
Counts
99 → 57
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
x
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 y x))
(-.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)
(*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(*.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))
(*.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))) 1/2)
(/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))))) 256)
(pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 (*.f64 y (+.f64 x z)) 0)
(+.f64 0 (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (*.f64 (+.f64 x z) 1/2)) (*.f64 y (*.f64 (+.f64 x z) 1/2)))
(-.f64 (*.f64 y (+.f64 x z)) 0)
(/.f64 (*.f64 y (+.f64 x z)) 1)
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 2)) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 4)) 4)
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 8)) 8)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))))) 256)
(pow.f64 (*.f64 y (+.f64 x z)) 1)
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 y 1) x)
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 (+.f64 y 1) x)
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
x
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y z) (*.f64 y x))
(*.f64 y (+.f64 z x))
(-.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 1/8)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/4) 4)
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))
(+.f64 x (*.f64 y (+.f64 z x)))
(*.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 x z) 2))) 1/2)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8) 8)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)) 16)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))) 32)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))) 64)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8))))) 128)
(+.f64 x (*.f64 y (+.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 8)))))) 256)
(+.f64 x (*.f64 y (+.f64 z x)))
(pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y (+.f64 x z)) 0)
(*.f64 y (+.f64 z x))
(+.f64 0 (*.f64 y (+.f64 x z)))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y (*.f64 (+.f64 x z) 1/2)) (*.f64 y (*.f64 (+.f64 x z) 1/2)))
(*.f64 y (+.f64 z x))
(-.f64 (*.f64 y (+.f64 x z)) 0)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (+.f64 x z)) 1)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 2)) 2)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 4)) 4)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (*.f64 (+.f64 x z) 8)) 8)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))) 16)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))) 32)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))) 64)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8)))))) 128)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 x z) 8))))))) 256)
(*.f64 y (+.f64 z x))
(pow.f64 (*.f64 y (+.f64 x z)) 1)
(*.f64 y (+.f64 z x))

eval9.0ms (0.2%)

Compiler

Compiled 602 to 279 computations (53.7% saved)

prune10.0ms (0.2%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New52557
Fresh000
Picked011
Done000
Total52658
Error
0.0b
Counts
58 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
21.4b
(*.f64 (+.f64 y 1) x)
32.0b
(*.f64 y (+.f64 z x))
41.5b
(*.f64 y z)
31.1b
x
Compiler

Compiled 44 to 29 computations (34.1% saved)

localize4.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite182.0ms (3.8%)

Algorithm
batch-egg-rewrite
Rules
1672×rational.json-simplify-1
1502×rational.json-simplify-35
1372×exponential.json-3
1372×rational.json-1
1372×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15613
213013
324113
444113
594013
6238113
7415813
8523313
9676013
10759513
11759513
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (+.f64 y 1) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y 1) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y 1) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y 1) (*.f64 x 1/2)) (*.f64 (+.f64 y 1) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y 1) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 y 1) x) 1)))))

simplify565.0ms (11.7%)

Algorithm
egg-herbie
Rules
2676×rational.json-simplify-2
2458×rational.json-simplify-35
1452×rational.json-simplify-1
1328×rational.json-simplify-53
1234×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049470
1130470
2245470
3520470
41847470
53623470
64221470
74426470
84627470
94794470
104937470
115910470
127028470
137171470
147233470
157277470
167382470
177453470
187532470
197669470
207842470
217976470
Stop Event
node limit
Counts
38 → 21
Calls
Call 1
Inputs
x
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 (+.f64 y 1) x) 0)
(+.f64 0 (*.f64 (+.f64 y 1) x))
(+.f64 (*.f64 (+.f64 y 1) (*.f64 x 1/2)) (*.f64 (+.f64 y 1) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 y 1) x) 0)
(/.f64 (*.f64 (+.f64 y 1) x) 1)
(/.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 2)
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 4)) 4)
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)
(pow.f64 (*.f64 (+.f64 y 1) x) 1)
Outputs
x
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 (+.f64 y 1) x) 0)
(*.f64 x (+.f64 y 1))
(+.f64 0 (*.f64 (+.f64 y 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 (+.f64 y 1) (*.f64 x 1/2)) (*.f64 (+.f64 y 1) (*.f64 x 1/2)))
(*.f64 x (+.f64 y 1))
(-.f64 (*.f64 (+.f64 y 1) x) 0)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 y 1) x) 1)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 2)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)
(*.f64 x (+.f64 y 1))
(pow.f64 (*.f64 (+.f64 y 1) x) 1)
(*.f64 x (+.f64 y 1))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite188.0ms (3.9%)

Algorithm
batch-egg-rewrite
Rules
1734×rational.json-simplify-1
1654×rational.json-simplify-35
1514×exponential.json-3
1514×rational.json-1
1514×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
14013
29413
320913
439713
590713
6246713
7468313
8558213
9693113
10799813
11799813
Stop Event
node limit
Counts
1 → 44
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (*.f64 (+.f64 y 1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 2 (+.f64 y y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 x (/.f64 (+.f64 y 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 x 8) (+.f64 2 (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 (+.f64 y 1) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (/.f64 (+.f64 y 1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 1/8 (+.f64 2 (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (+.f64 y y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (+.f64 2 (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 y 1) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) 4) (*.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (+.f64 y 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (*.f64 (+.f64 y 1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y 1) 4) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y x)) 1)))))

simplify138.0ms (2.8%)

Algorithm
egg-herbie
Rules
1880×rational.json-simplify-35
1270×rational.json-simplify-51
1184×rational.json-simplify-41
1036×rational.json-simplify-2
770×rational.json-simplify-42
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0105767
1250767
2485767
3885767
41621767
54535767
65752767
76384767
86964767
97408767
Stop Event
node limit
Counts
59 → 49
Calls
Call 1
Inputs
x
(*.f64 y x)
(*.f64 y x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 1 (+.f64 x (*.f64 y x)))
(*.f64 2 (*.f64 x (*.f64 (+.f64 y 1) 1/2)))
(*.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 (+.f64 x x) (*.f64 (+.f64 2 (+.f64 y y)) 1/4))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(*.f64 (+.f64 y 1) x)
(*.f64 4 (*.f64 x (/.f64 (+.f64 y 1) 4)))
(*.f64 4 (*.f64 (/.f64 x 8) (+.f64 2 (+.f64 y y))))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 (*.f64 x 4) (*.f64 (+.f64 y 1) 1/4))
(*.f64 (*.f64 x 4) (/.f64 (+.f64 y 1) 4))
(*.f64 (*.f64 x 4) (*.f64 1/8 (+.f64 2 (+.f64 y y))))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1)))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (+.f64 y 1)))
(*.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 1/8)
(*.f64 (+.f64 2 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1)))
(*.f64 1/2 (*.f64 x (+.f64 2 (+.f64 y y))))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 1/2)) 2)
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1)))
(*.f64 (*.f64 (+.f64 y 1) 4) (*.f64 x 1/4))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 (*.f64 x (/.f64 (+.f64 y 1) 4)) 4)
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 y 1) 4))
(*.f64 1/8 (*.f64 (+.f64 y 1) (*.f64 x 8)))
(*.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))
(*.f64 (/.f64 (+.f64 y 1) 4) (*.f64 x 4))
(*.f64 (+.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))
(/.f64 (+.f64 x (*.f64 y x)) 1)
(/.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)
(pow.f64 (+.f64 x (*.f64 y x)) 1)
Outputs
x
(*.f64 y x)
(*.f64 x y)
(*.f64 y x)
(*.f64 x y)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(*.f64 x (+.f64 y 1))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))
(*.f64 1 (+.f64 x (*.f64 y x)))
(*.f64 x (+.f64 y 1))
(*.f64 2 (*.f64 x (*.f64 (+.f64 y 1) 1/2)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 1/2)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 2 (+.f64 y y)) 1/4))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(*.f64 (+.f64 y 1) x)
(*.f64 x (+.f64 y 1))
(*.f64 4 (*.f64 x (/.f64 (+.f64 y 1) 4)))
(*.f64 x (+.f64 y 1))
(*.f64 4 (*.f64 (/.f64 x 8) (+.f64 2 (+.f64 y y))))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 1/4)
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 4) (*.f64 (+.f64 y 1) 1/4))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 4) (/.f64 (+.f64 y 1) 4))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 4) (*.f64 1/8 (+.f64 2 (+.f64 y y))))
(*.f64 x (+.f64 y 1))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1)))
(*.f64 x (+.f64 y 1))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (+.f64 y 1)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 1/8)
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 2 (+.f64 y y)) (*.f64 x 1/2))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1)))
(*.f64 x (+.f64 y 1))
(*.f64 1/2 (*.f64 x (+.f64 2 (+.f64 y y))))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (*.f64 (+.f64 y 1) 1/2)) 2)
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 y y)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) 4) (*.f64 x 1/4))
(*.f64 x (+.f64 y 1))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 y 1) 4)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (/.f64 (+.f64 y 1) 4)) 4)
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 y 1) 4))
(*.f64 x (+.f64 y 1))
(*.f64 1/8 (*.f64 (+.f64 y 1) (*.f64 x 8)))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))
(*.f64 x (+.f64 y 1))
(*.f64 (/.f64 (+.f64 y 1) 4) (*.f64 x 4))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1/2 (*.f64 y 1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y 1/2)))
(/.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 x (+.f64 2 (+.f64 y y))) 2)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 x (*.f64 (+.f64 y 1) 4)) 4)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 y 1) (*.f64 x 8)) 8)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))) 16)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))) 32)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))) 64)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8)))))) 128)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1) (*.f64 x 8))))))) 256)
(*.f64 x (+.f64 y 1))
(pow.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))

eval15.0ms (0.3%)

Compiler

Compiled 783 to 527 computations (32.7% saved)

prune13.0ms (0.3%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New85186
Fresh011
Picked011
Done044
Total85792
Error
0.0b
Counts
92 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
21.4b
(*.f64 (+.f64 y 1) x)
32.0b
(*.f64 y (+.f64 z x))
41.5b
(*.f64 y z)
53.1b
(*.f64 y x)
31.1b
x
Compiler

Compiled 50 to 33 computations (34% saved)

localize4.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New000
Fresh011
Picked011
Done055
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
21.4b
(*.f64 (+.f64 y 1) x)
32.0b
(*.f64 y (+.f64 z x))
41.5b
(*.f64 y z)
53.1b
(*.f64 y x)
31.1b
x
Compiler

Compiled 50 to 33 computations (34% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done066
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
21.4b
(*.f64 (+.f64 y 1) x)
32.0b
(*.f64 y (+.f64 z x))
41.5b
(*.f64 y z)
53.1b
(*.f64 y x)
31.1b
x
Compiler

Compiled 50 to 33 computations (34% saved)

regimes21.0ms (0.4%)

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

4 calls:

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

Compiled 54 to 27 computations (50% saved)

regimes48.0ms (1%)

Counts
6 → 3
Calls
Call 1
Inputs
x
(*.f64 y x)
(*.f64 y z)
(*.f64 y (+.f64 z x))
(*.f64 (+.f64 y 1) x)
(+.f64 (*.f64 y x) x)
Outputs
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y x) x)
(*.f64 y (+.f64 z x))
Calls

3 calls:

21.0ms
z
13.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
9.5b3x
9.0b3y
16.5b5z
Compiler

Compiled 37 to 20 computations (45.9% saved)

bsearch28.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1748323367.3029492
30790998301978.95
15.0ms
-5700740228.971551
-0.0008864618653697693
Results
25.0ms288×body256valid
0.0msbody256infinite
Compiler

Compiled 340 to 227 computations (33.2% saved)

regimes46.0ms (1%)

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

3 calls:

19.0ms
z
14.0ms
x
12.0ms
y
Results
ErrorSegmentsBranch
9.5b3x
9.0b3y
16.5b5z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch29.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1748323367.3029492
30790998301978.95
16.0ms
-5700740228.971551
-0.0008864618653697693
Results
25.0ms288×body256valid
0.0msbody256infinite
Compiler

Compiled 340 to 245 computations (27.9% saved)

regimes57.0ms (1.2%)

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

3 calls:

33.0ms
z
13.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
16.2b3x
9.3b3y
20.6b9z
Compiler

Compiled 27 to 16 computations (40.7% saved)

bsearch75.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
1.1878024362839838e-78
5.51317038025609e-77
64.0ms
-3.771588156613994e-9
-4.823202187975109e-23
Results
72.0ms272×body256valid
Compiler

Compiled 254 to 181 computations (28.7% saved)

regimes40.0ms (0.8%)

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

3 calls:

21.0ms
z
10.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
19.4b3x
18.7b3y
25.1b7z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch27.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
1.1878024362839838e-78
5.51317038025609e-77
16.0ms
-3.771588156613994e-9
-4.823202187975109e-23
Results
24.0ms272×body256valid
Compiler

Compiled 220 to 164 computations (25.5% saved)

regimes19.0ms (0.4%)

Accuracy

Total -39.6b remaining (-177.2%)

Threshold costs -39.6b (-177.2%)

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

3 calls:

8.0ms
y
8.0ms
z
3.0ms
x
Results
ErrorSegmentsBranch
31.1b1x
22.4b3y
30.0b3z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch74.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
9.130613872331146e-10
22486.624667898548
59.0ms
-5700740228.971551
-0.0008864618653697693
Results
71.0ms320×body256valid
0.0msbody256infinite
Compiler

Compiled 256 to 191 computations (25.4% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044245
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -4728779608739021/4503599627370496) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1800000000) (+.f64 (*.f64 y x) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -8106479329266893/2251799813685248) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1800000000) (*.f64 (+.f64 y 1) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -1595073594941899/1329227995784915872903807060280344576) (*.f64 y (+.f64 z x)) (if (<=.f64 y 6909626031726577/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -4912146075884389/316912650057057350374175801344) (*.f64 y z) (if (<=.f64 y 7170366636697391/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (*.f64 y z)))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 1) x (*.f64 y x)))
x
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -4728779608739021/4503599627370496) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1800000000) (+.f64 (*.f64 y x) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -8106479329266893/2251799813685248) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1800000000) (*.f64 (+.f64 y 1) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -1595073594941899/1329227995784915872903807060280344576) (*.f64 y (+.f64 z x)) (if (<=.f64 y 6909626031726577/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -4912146075884389/316912650057057350374175801344) (*.f64 y z) (if (<=.f64 y 7170366636697391/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (*.f64 y z)))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 1) x (*.f64 y x)))
x
Compiler

Compiled 124 to 67 computations (46% saved)

soundness0.0ms (0%)

end44.0ms (0.9%)

Compiler

Compiled 106 to 42 computations (60.4% saved)

Profiling

Loading profile data...