Details

Time bar (total: 10.9s)

analyze1.0s (9.3%)

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
28.1%28.1%71.8%0.1%0%0%0%9
37.6%34.3%56.9%0.1%8.6%0%0%10
44.8%40.6%49.9%0.1%9.4%0%0%11
53.4%48%41.9%0.1%9.9%0%0%12
Compiler

Compiled 11 to 8 computations (27.3% saved)

sample4.6s (42.3%)

Results
3.5s8254×body256valid
925.0ms1192×body256infinite
0.0msbody1024valid
0.0msbody512valid
Bogosity

preprocess12.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01776
12576
22976
033
133
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
0
2
Call 2
Inputs
(*.f64 (+.f64 x y) (+.f64 z 1))
(*.f64 (+.f64 y x) (+.f64 z 1))
(*.f64 (+.f64 z y) (+.f64 x 1))
(*.f64 (+.f64 x z) (+.f64 y 1))
Outputs
(*.f64 (+.f64 x y) (+.f64 z 1))
(*.f64 (+.f64 z 1) (+.f64 x y))
(*.f64 (+.f64 y x) (+.f64 z 1))
(*.f64 (+.f64 z 1) (+.f64 x y))
(*.f64 (+.f64 z y) (+.f64 x 1))
(*.f64 (+.f64 y z) (+.f64 x 1))
(*.f64 (+.f64 y z) (-.f64 x -1))
(*.f64 (+.f64 x z) (+.f64 y 1))
Symmetry

(sort x y)

Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
11219
21419
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (+.f64 z 1))
Outputs
(*.f64 (+.f64 x y) (+.f64 z 1))

eval0.0ms (0%)

Compiler

Compiled 10 to 7 computations (30% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 10 to 7 computations (30% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 20 to 10 computations (50% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite212.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
2710×rational.json-simplify-35
1348×rational.json-simplify-1
1182×rational.json-1
1182×rational.json-2
1182×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
16919
215119
328619
454219
5119519
6258219
7404319
8531019
9650419
10701519
11701519
12701519
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (+.f64 z 1))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x y) (+.f64 z 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (+.f64 z (+.f64 z 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x y) (*.f64 (+.f64 z 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)))))

simplify224.0ms (2.1%)

Algorithm
egg-herbie
Rules
2370×rational.json-simplify-41
2356×rational.json-simplify-2
1746×rational.json-simplify-35
1496×rational.json-simplify-53
860×exponential.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058963
1150963
2285963
3596963
42053963
53623963
64412963
74630963
84784963
94932963
106815963
117681963
Stop Event
node limit
Counts
51 → 29
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 z))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 1 z) x)
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 1 z) x)
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 1 z) x)
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 y (+.f64 1 z))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 y (+.f64 1 z))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(+.f64 y x)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(*.f64 (+.f64 y x) z)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(*.f64 (+.f64 y x) z)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)
(+.f64 0 (*.f64 (+.f64 x y) (+.f64 z 1)))
(+.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)))
(-.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)
(/.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)
(/.f64 (*.f64 (+.f64 x y) (+.f64 z (+.f64 z 2))) 2)
(/.f64 (*.f64 (+.f64 x y) (*.f64 (+.f64 z 1) 4)) 4)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))))) 512)
(pow.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)
Outputs
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 1 z))
(*.f64 x (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 1 z))
(*.f64 x (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 1 z))
(*.f64 x (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 y x)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(*.f64 (+.f64 y x) z)
(*.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(*.f64 (+.f64 y x) z)
(*.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 0 (*.f64 (+.f64 x y) (+.f64 z 1)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(+.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(-.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 0)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 (+.f64 x y) (+.f64 z (+.f64 z 2))) 2)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 (+.f64 x y) (*.f64 (+.f64 z 1) 4)) 4)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)) 8)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))) 16)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))) 32)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))) 64)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))) 128)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) 256)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 (+.f64 x y) 8)))))))) 512)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))
(pow.f64 (*.f64 (+.f64 x y) (+.f64 z 1)) 1)
(*.f64 (+.f64 y x) (+.f64 1 z))
(*.f64 (+.f64 y x) (-.f64 z -1))

eval7.0ms (0.1%)

Compiler

Compiled 316 to 194 computations (38.6% saved)

prune8.0ms (0.1%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New23629
Fresh000
Picked011
Done000
Total23730
Error
0b
Counts
30 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
0.0b
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
27.1b
(+.f64 y x)
37.2b
(*.f64 (+.f64 y x) z)
0.0b
(*.f64 (+.f64 x y) (+.f64 z 1))
28.7b
(*.f64 (+.f64 1 z) x)
34.3b
(*.f64 y (-.f64 z -1))
Compiler

Compiled 122 to 81 computations (33.6% saved)

localize181.0ms (1.7%)

Local error

Found 3 expressions with local error:

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

Compiled 31 to 19 computations (38.7% saved)

series5.0ms (0%)

Counts
3 → 42
Calls

21 calls:

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

rewrite372.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
2556×rational.json-simplify-2
1350×rational.json-simplify-1
1316×rational.json-simplify-35
1296×rational.json-simplify-53
1228×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01045
18045
217945
333145
463445
5147045
6301245
7452645
8583145
9653345
10653345
11753645
Stop Event
node limit
Counts
3 → 75
Calls
Call 1
Inputs
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
(*.f64 (+.f64 1 z) x)
(*.f64 y (+.f64 1 z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (+.f64 1 z) (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 z) (+.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x y) (+.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (/.f64 (+.f64 1 z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (+.f64 z 2)) (*.f64 (+.f64 x y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 2) (*.f64 (+.f64 1 z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) 4) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) 8) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 4) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) 1/2) (+.f64 (+.f64 y y) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x y) 1/2) (+.f64 z (+.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 (+.f64 1 z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (/.f64 (+.f64 1 z) 4)) (*.f64 4 (*.f64 (+.f64 x y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 (+.f64 x y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 2 (/.f64 (+.f64 1 z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 1 z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (+.f64 y y) (+.f64 x x))) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2))) (*.f64 (+.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 4 (*.f64 (+.f64 x y) 1/2))) (/.f64 (+.f64 1 z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2))) (+.f64 z (+.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4)) (*.f64 (+.f64 1 z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 z) (*.f64 x 1/2)) (*.f64 (+.f64 1 z) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 1 z) x) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 z) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 z) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 z) (*.f64 y 1/2)) (*.f64 (+.f64 1 z) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 z) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 z) (*.f64 y 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 1 z) y) 1)))))

simplify432.0ms (4%)

Algorithm
egg-herbie
Rules
2632×rational.json-simplify-2
2016×rational.json-simplify-35
1264×rational.json-simplify-53
964×rational.json-simplify-48
900×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01701869
14291869
29631869
322881869
444261869
552971869
656641869
759871869
862981869
964011869
1072231869
Stop Event
node limit
Counts
117 → 98
Calls
Call 1
Inputs
(+.f64 y x)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(*.f64 (+.f64 y x) z)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(*.f64 y (+.f64 1 z))
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
x
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
(*.f64 z x)
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
(*.f64 z x)
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
(+.f64 (*.f64 z x) x)
y
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(-.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 0)
(*.f64 1 (*.f64 (+.f64 1 z) (+.f64 x y)))
(*.f64 (+.f64 1 z) (+.f64 x y))
(*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(*.f64 (+.f64 x y) (+.f64 1 z))
(*.f64 2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)))
(*.f64 2 (*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 4)))
(*.f64 2 (*.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (/.f64 (+.f64 1 z) 4)))
(*.f64 (+.f64 z (+.f64 z 2)) (*.f64 (+.f64 x y) 1/2))
(*.f64 4 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4))
(*.f64 4 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 1/2)
(*.f64 (*.f64 (+.f64 x y) 2) (*.f64 (+.f64 1 z) 1/2))
(*.f64 8 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)))
(*.f64 (*.f64 (+.f64 1 z) 4) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 1/4)
(*.f64 1/2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 1 z) 8) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4))
(*.f64 (*.f64 (+.f64 x y) 4) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))
(*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 2))
(*.f64 (*.f64 (+.f64 1 z) 1/2) (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)) 2)
(*.f64 (*.f64 (+.f64 x y) 1/2) (+.f64 z (+.f64 z 2)))
(*.f64 1/4 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)))
(*.f64 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4) 4)
(*.f64 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))) 1/2)
(*.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 (+.f64 1 z) 1/2))
(*.f64 (*.f64 2 (/.f64 (+.f64 1 z) 4)) (*.f64 4 (*.f64 (+.f64 x y) 1/2)))
(*.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 (+.f64 x y) 4))
(*.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 2 (/.f64 (+.f64 1 z) 4)))
(*.f64 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)) 4)
(*.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 1 z) 4))
(*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)) 8)
(*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 8))
(*.f64 (*.f64 2 (+.f64 (+.f64 y y) (+.f64 x x))) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))
(*.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2))) (*.f64 (+.f64 x y) 2))
(*.f64 (+.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 4 (*.f64 (+.f64 x y) 1/2))) (/.f64 (+.f64 1 z) 4))
(*.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2))) (+.f64 z (+.f64 z 2)))
(*.f64 (+.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4)) (*.f64 (+.f64 1 z) 4))
(/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 2)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))))) 128)
(pow.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(+.f64 (*.f64 (+.f64 1 z) x) 0)
(+.f64 0 (*.f64 (+.f64 1 z) x))
(+.f64 (*.f64 (+.f64 1 z) (*.f64 x 1/2)) (*.f64 (+.f64 1 z) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 1 z) x) 0)
(/.f64 (*.f64 (+.f64 1 z) x) 1)
(/.f64 (*.f64 (+.f64 1 z) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 x 4)) 4)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))))) 128)
(pow.f64 (*.f64 (+.f64 1 z) x) 1)
(+.f64 (*.f64 (+.f64 1 z) y) 0)
(+.f64 0 (*.f64 (+.f64 1 z) y))
(+.f64 (*.f64 (+.f64 1 z) (*.f64 y 1/2)) (*.f64 (+.f64 1 z) (*.f64 y 1/2)))
(-.f64 (*.f64 (+.f64 1 z) y) 0)
(/.f64 (*.f64 (+.f64 1 z) y) 1)
(/.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 y 4)) 4)
(/.f64 (*.f64 (+.f64 1 z) (*.f64 y 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))))) 128)
(pow.f64 (*.f64 (+.f64 1 z) y) 1)
Outputs
(+.f64 y x)
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(*.f64 (+.f64 y x) z)
(*.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 (+.f64 y x) z) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(*.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 x) (*.f64 -1 y)) z)) x))
(+.f64 (*.f64 z (+.f64 y x)) (+.f64 y x))
(+.f64 y (+.f64 x (*.f64 z (+.f64 y x))))
(+.f64 x (+.f64 y (*.f64 z (+.f64 y x))))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 z 1))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 z 1))
x
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
(+.f64 (*.f64 z x) x)
(+.f64 x (*.f64 x z))
y
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(-.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 0)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 1 (*.f64 (+.f64 1 z) (+.f64 x y)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 1 z) (+.f64 x y))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 x y) (+.f64 1 z))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 2 (*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 4)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 2 (*.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (/.f64 (+.f64 1 z) 4)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 z (+.f64 z 2)) (*.f64 (+.f64 x y) 1/2))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 4 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 4 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 1/2)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 2) (*.f64 (+.f64 1 z) 1/2))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 8 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) 4) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 1/4)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) 8) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 4) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 2))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) 1/2) (+.f64 (+.f64 y y) (+.f64 x x)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 1/2)) 2)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (+.f64 x y) 1/2) (+.f64 z (+.f64 z 2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 4) 4)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) (*.f64 (+.f64 1 z) (+.f64 x x))) 1/2)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (+.f64 y y) (+.f64 x x)) (*.f64 (+.f64 1 z) 1/2))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 2 (/.f64 (+.f64 1 z) 4)) (*.f64 4 (*.f64 (+.f64 x y) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 (+.f64 x y) 4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 2 (/.f64 (+.f64 1 z) 4)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (*.f64 (+.f64 1 z) 1/2) (*.f64 (+.f64 x y) 1/2)) 4)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 (+.f64 1 z) 4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) (/.f64 (+.f64 1 z) 4)) 8)
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (+.f64 1 z) 8))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (*.f64 2 (+.f64 (+.f64 y y) (+.f64 x x))) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2)) (*.f64 1/2 (*.f64 (+.f64 1 z) 1/2))) (*.f64 (+.f64 x y) 2))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (*.f64 4 (*.f64 (+.f64 x y) 1/2)) (*.f64 4 (*.f64 (+.f64 x y) 1/2))) (/.f64 (+.f64 1 z) 4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (*.f64 1/2 (*.f64 (+.f64 x y) 1/2)) (*.f64 1/2 (*.f64 (+.f64 x y) 1/2))) (+.f64 z (+.f64 z 2)))
(*.f64 (+.f64 z 1) (+.f64 y x))
(*.f64 (+.f64 (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4) (*.f64 (*.f64 (+.f64 x y) 1/2) 1/4)) (*.f64 (+.f64 1 z) 4))
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 2)) 2)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 (+.f64 x y) 4)) 4)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8) 8)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)) 16)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))) 32)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8)))) 64)
(*.f64 (+.f64 z 1) (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 8))))) 128)
(*.f64 (+.f64 z 1) (+.f64 y x))
(pow.f64 (*.f64 (+.f64 1 z) (+.f64 x y)) 1)
(*.f64 (+.f64 z 1) (+.f64 y x))
(+.f64 (*.f64 (+.f64 1 z) x) 0)
(*.f64 x (+.f64 z 1))
(+.f64 0 (*.f64 (+.f64 1 z) x))
(*.f64 x (+.f64 z 1))
(+.f64 (*.f64 (+.f64 1 z) (*.f64 x 1/2)) (*.f64 (+.f64 1 z) (*.f64 x 1/2)))
(*.f64 x (+.f64 z 1))
(-.f64 (*.f64 (+.f64 1 z) x) 0)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) x) 1)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (+.f64 x x)) 2)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 x 4)) 4)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 x 8)) 8)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))) 16)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))) 32)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8))))) 64)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 x 8)))))) 128)
(*.f64 x (+.f64 z 1))
(pow.f64 (*.f64 (+.f64 1 z) x) 1)
(*.f64 x (+.f64 z 1))
(+.f64 (*.f64 (+.f64 1 z) y) 0)
(*.f64 y (+.f64 z 1))
(+.f64 0 (*.f64 (+.f64 1 z) y))
(*.f64 y (+.f64 z 1))
(+.f64 (*.f64 (+.f64 1 z) (*.f64 y 1/2)) (*.f64 (+.f64 1 z) (*.f64 y 1/2)))
(*.f64 y (+.f64 z 1))
(-.f64 (*.f64 (+.f64 1 z) y) 0)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) y) 1)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (+.f64 y y)) 2)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 y 4)) 4)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 (+.f64 1 z) (*.f64 y 8)) 8)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))) 16)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))) 32)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8))))) 64)
(*.f64 y (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 z) (*.f64 y 8)))))) 128)
(*.f64 y (+.f64 z 1))
(pow.f64 (*.f64 (+.f64 1 z) y) 1)
(*.f64 y (+.f64 z 1))

localize10.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite613.0ms (5.6%)

Algorithm
batch-egg-rewrite
Rules
1508×rational.json-simplify-53
1422×rational.json-simplify-35
1340×exponential.json-3
1340×rational.json-1
1340×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15013
211613
321813
440213
586013
6217613
7386113
8502513
9648213
10726913
11726913
12774013
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 y (-.f64 z -1))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 z 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 z 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 z 1) (*.f64 y 1/2)) (*.f64 (+.f64 z 1) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 z 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 z 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z 1) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z 1) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z 1) (*.f64 8 (*.f64 y 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 y (+.f64 z 1))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 z 1)) 1)))))

simplify496.0ms (4.5%)

Algorithm
egg-herbie
Rules
3476×rational.json-simplify-35
2082×rational.json-simplify-2
1408×rational.json-simplify-53
1380×rational.json-simplify-49
1112×exponential.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049470
1134470
2277470
3671470
42554470
54093470
64882470
75243470
85524470
95736470
106514470
116804470
126804470
136804470
147006470
157435470
167769470
177985470
Stop Event
node limit
Counts
38 → 19
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
y
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y z) y)
(+.f64 (*.f64 y (+.f64 z 1)) 0)
(+.f64 0 (*.f64 y (+.f64 z 1)))
(+.f64 (*.f64 (+.f64 z 1) (*.f64 y 1/2)) (*.f64 (+.f64 z 1) (*.f64 y 1/2)))
(-.f64 (*.f64 y (+.f64 z 1)) 0)
(/.f64 (*.f64 y (+.f64 z 1)) 1)
(/.f64 (*.f64 (+.f64 z 1) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 4)) 4)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 8)
(/.f64 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))) 64)
(/.f64 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1))))) 128)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 8 (*.f64 y 4))) 32)
(/.f64 (*.f64 16 (*.f64 y (+.f64 z 1))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))))) 256)
(pow.f64 (*.f64 y (+.f64 z 1)) 1)
Outputs
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
y
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y z) y)
(+.f64 y (*.f64 y z))
(+.f64 (*.f64 y (+.f64 z 1)) 0)
(*.f64 y (+.f64 1 z))
(+.f64 0 (*.f64 y (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(+.f64 (*.f64 (+.f64 z 1) (*.f64 y 1/2)) (*.f64 (+.f64 z 1) (*.f64 y 1/2)))
(*.f64 y (+.f64 1 z))
(-.f64 (*.f64 y (+.f64 z 1)) 0)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 y (+.f64 z 1)) 1)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 (+.f64 z 1) (+.f64 y y)) 2)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 4)) 4)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 8)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))) 64)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1))))) 128)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 8 (*.f64 y 4))) 32)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 16 (*.f64 y (+.f64 z 1))) 16)
(*.f64 y (+.f64 1 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 16 (*.f64 y (+.f64 z 1)))))) 256)
(*.f64 y (+.f64 1 z))
(pow.f64 (*.f64 y (+.f64 z 1)) 1)
(*.f64 y (+.f64 1 z))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

9 calls:

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

rewrite172.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
2514×rational.json-simplify-2
1526×rational.json-simplify-35
1252×rational.json-simplify-1
1232×exponential.json-3
1232×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14613
210213
321413
439713
589813
6231513
7417613
8508113
9615513
10697013
11697013
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (+.f64 y x) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y x) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y x) (*.f64 z 1/2)) (*.f64 (+.f64 y x) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y x) (*.f64 z 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 y x) z) 1)))))

simplify546.0ms (5%)

Algorithm
egg-herbie
Rules
3060×rational.json-simplify-2
2726×rational.json-simplify-35
2212×rational.json-simplify-53
1048×rational.json-simplify-1
1044×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
048650
1127458
2238458
3543458
41930458
53809458
64387458
74530458
84637458
94742458
104845458
115807458
126413458
136687458
146687458
156687458
166790458
176893458
187465458
197722458
Stop Event
node limit
Counts
38 → 20
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 (+.f64 y x) z) 0)
(+.f64 0 (*.f64 (+.f64 y x) z))
(+.f64 (*.f64 (+.f64 y x) (*.f64 z 1/2)) (*.f64 (+.f64 y x) (*.f64 z 1/2)))
(-.f64 (*.f64 (+.f64 y x) z) 0)
(/.f64 (*.f64 (+.f64 y x) z) 1)
(/.f64 (*.f64 (+.f64 y x) (+.f64 z z)) 2)
(/.f64 (*.f64 (+.f64 y x) (*.f64 z 4)) 4)
(/.f64 (*.f64 (+.f64 y x) (*.f64 z 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))))) 256)
(pow.f64 (*.f64 (+.f64 y x) z) 1)
Outputs
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(*.f64 z x)
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 y z) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 (+.f64 y x) z) 0)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 0 (*.f64 (+.f64 y x) z))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(+.f64 (*.f64 (+.f64 y x) (*.f64 z 1/2)) (*.f64 (+.f64 y x) (*.f64 z 1/2)))
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(-.f64 (*.f64 (+.f64 y x) z) 0)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) z) 1)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) (+.f64 z z)) 2)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) (*.f64 z 4)) 4)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 (+.f64 y x) (*.f64 z 8)) 8)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))) 16)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))) 32)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))) 64)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8)))))) 128)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y x) (*.f64 z 8))))))) 256)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))
(pow.f64 (*.f64 (+.f64 y x) z) 1)
(+.f64 (*.f64 z x) (*.f64 z y))
(*.f64 z (+.f64 x y))

eval34.0ms (0.3%)

Compiler

Compiled 1736 to 1113 computations (35.9% saved)

prune27.0ms (0.2%)

Pruning

12 alts after pruning (6 fresh and 6 done)

PrunedKeptTotal
New1496155
Fresh101
Picked011
Done055
Total15012162
Error
0b
Counts
162 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
28.7b
(+.f64 (*.f64 z x) x)
34.3b
(+.f64 (*.f64 y z) y)
27.1b
(+.f64 y x)
37.2b
(*.f64 (+.f64 y x) z)
0.0b
(*.f64 (+.f64 x y) (+.f64 z 1))
28.7b
(*.f64 (+.f64 1 z) x)
51.8b
(*.f64 z y)
48.0b
(*.f64 z x)
34.3b
(*.f64 y (-.f64 z -1))
45.8b
y
43.8b
x
Compiler

Compiled 90 to 62 computations (31.1% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite195.0ms (1.8%)

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

simplify142.0ms (1.3%)

Algorithm
egg-herbie
Rules
1942×rational.json-simplify-35
1292×rational.json-simplify-51
1108×rational.json-simplify-41
1044×rational.json-simplify-2
838×rational.json-simplify-45
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0105767
1247767
2481767
3881767
41619767
54491767
65771767
76420767
87050767
97541767
Stop Event
node limit
Counts
59 → 50
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 y (+.f64 1 z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
y
(*.f64 y z)
(*.f64 y z)
(-.f64 (+.f64 y (*.f64 y z)) 0)
(*.f64 y (+.f64 z 1))
(*.f64 (+.f64 y (*.f64 y z)) 1)
(*.f64 1 (+.f64 y (*.f64 y z)))
(*.f64 2 (*.f64 y (*.f64 (+.f64 z 1) 1/2)))
(*.f64 (*.f64 (+.f64 y y) (+.f64 z 1)) 1/2)
(*.f64 (+.f64 y y) (*.f64 (+.f64 z 1) 1/2))
(*.f64 (+.f64 y y) (*.f64 (+.f64 z (+.f64 z 2)) 1/4))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 z 1/2)))
(*.f64 (+.f64 z 1) y)
(*.f64 4 (*.f64 y (/.f64 (+.f64 z 1) 4)))
(*.f64 4 (*.f64 (/.f64 y 8) (+.f64 z (+.f64 z 2))))
(*.f64 (*.f64 y (*.f64 (+.f64 z 1) 4)) 1/4)
(*.f64 (*.f64 y 4) (*.f64 (+.f64 z 1) 1/4))
(*.f64 (*.f64 y 4) (/.f64 (+.f64 z 1) 4))
(*.f64 (*.f64 y 4) (*.f64 1/8 (+.f64 z (+.f64 z 2))))
(*.f64 8 (*.f64 (/.f64 y 8) (+.f64 z 1)))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 y 1/4)) (+.f64 z 1)))
(*.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 1/8)
(*.f64 (*.f64 y 8) (*.f64 1/8 (+.f64 z 1)))
(*.f64 (+.f64 z (+.f64 z 2)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (+.f64 y y) (+.f64 z 1)))
(*.f64 (*.f64 y (*.f64 (+.f64 z 1) 1/2)) 2)
(*.f64 (*.f64 y 1/2) (+.f64 z (+.f64 z 2)))
(*.f64 (*.f64 2 (*.f64 y 8)) (*.f64 1/16 (+.f64 z 1)))
(*.f64 (*.f64 (+.f64 z 1) 4) (*.f64 y 1/4))
(*.f64 1/4 (*.f64 y (*.f64 (+.f64 z 1) 4)))
(*.f64 (*.f64 (+.f64 z 1) 1/2) (+.f64 y y))
(*.f64 (*.f64 y (/.f64 (+.f64 z 1) 4)) 4)
(*.f64 (*.f64 y 1/4) (*.f64 (+.f64 z 1) 4))
(*.f64 1/8 (*.f64 (+.f64 z 1) (*.f64 y 8)))
(*.f64 (*.f64 (+.f64 z 1) 1/4) (*.f64 y 4))
(*.f64 (/.f64 (+.f64 z 1) 4) (*.f64 y 4))
(*.f64 (+.f64 1/2 (*.f64 z 1/2)) (+.f64 y y))
(/.f64 (+.f64 y (*.f64 y z)) 1)
(/.f64 (*.f64 (+.f64 y y) (+.f64 z 1)) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 z 1) 4)) 4)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))))))) 256)
(pow.f64 (+.f64 y (*.f64 y z)) 1)
Outputs
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 z) 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
y
(*.f64 y z)
(*.f64 y z)
(-.f64 (+.f64 y (*.f64 y z)) 0)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 y (+.f64 z 1))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 y (*.f64 y z)) 1)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 1 (+.f64 y (*.f64 y z)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 2 (*.f64 y (*.f64 (+.f64 z 1) 1/2)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 (+.f64 y y) (+.f64 z 1)) 1/2)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 y y) (*.f64 (+.f64 z 1) 1/2))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 y y) (*.f64 (+.f64 z (+.f64 z 2)) 1/4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 z 1/2)))
(*.f64 (+.f64 z 1) y)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 4 (*.f64 y (/.f64 (+.f64 z 1) 4)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 4 (*.f64 (/.f64 y 8) (+.f64 z (+.f64 z 2))))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y (*.f64 (+.f64 z 1) 4)) 1/4)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 4) (*.f64 (+.f64 z 1) 1/4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 4) (/.f64 (+.f64 z 1) 4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 4) (*.f64 1/8 (+.f64 z (+.f64 z 2))))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 8 (*.f64 (/.f64 y 8) (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 y 1/4)) (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 1/8)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 8) (*.f64 1/8 (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 z (+.f64 z 2)) (*.f64 y 1/2))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 1/2 (*.f64 (+.f64 y y) (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y (*.f64 (+.f64 z 1) 1/2)) 2)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 1/2) (+.f64 z (+.f64 z 2)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 2 (*.f64 y 8)) (*.f64 1/16 (+.f64 z 1)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 (+.f64 z 1) 4) (*.f64 y 1/4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 1/4 (*.f64 y (*.f64 (+.f64 z 1) 4)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 (+.f64 z 1) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y (/.f64 (+.f64 z 1) 4)) 4)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 y 1/4) (*.f64 (+.f64 z 1) 4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 1/8 (*.f64 (+.f64 z 1) (*.f64 y 8)))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (*.f64 (+.f64 z 1) 1/4) (*.f64 y 4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (/.f64 (+.f64 z 1) 4) (*.f64 y 4))
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(*.f64 (+.f64 1/2 (*.f64 z 1/2)) (+.f64 y y))
(*.f64 (+.f64 y y) (+.f64 1/2 (*.f64 z 1/2)))
(/.f64 (+.f64 y (*.f64 y z)) 1)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 (+.f64 y y) (+.f64 z 1)) 2)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 y (*.f64 (+.f64 z 1) 4)) 4)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 y 8)) 8)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))) 16)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8)))) 32)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))))) 64)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8)))))) 128)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 y 8))))))) 256)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))
(pow.f64 (+.f64 y (*.f64 y z)) 1)
(*.f64 y (+.f64 1 z))
(*.f64 y (-.f64 z -1))
(+.f64 y (*.f64 y z))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series2.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite192.0ms (1.8%)

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

simplify143.0ms (1.3%)

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 z x)
(*.f64 z x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 (+.f64 1 z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(-.f64 (+.f64 x (*.f64 z x)) 0)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 x (*.f64 z x)) 1)
(*.f64 1 (+.f64 x (*.f64 z x)))
(*.f64 2 (*.f64 x (*.f64 (+.f64 z 1) 1/2)))
(*.f64 (*.f64 x (+.f64 2 (+.f64 z z))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 z 1) 1/2))
(*.f64 (+.f64 x x) (*.f64 (+.f64 2 (+.f64 z z)) 1/4))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z 1/2)))
(*.f64 (+.f64 z 1) x)
(*.f64 4 (*.f64 x (/.f64 (+.f64 z 1) 4)))
(*.f64 4 (*.f64 (/.f64 x 8) (+.f64 2 (+.f64 z z))))
(*.f64 (*.f64 x (*.f64 (+.f64 z 1) 4)) 1/4)
(*.f64 (*.f64 x 4) (*.f64 (+.f64 z 1) 1/4))
(*.f64 (*.f64 x 4) (/.f64 (+.f64 z 1) 4))
(*.f64 (*.f64 x 4) (*.f64 1/8 (+.f64 2 (+.f64 z z))))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 z 1)))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (+.f64 z 1)))
(*.f64 (*.f64 (+.f64 z 1) (*.f64 x 8)) 1/8)
(*.f64 (+.f64 2 (+.f64 z z)) (*.f64 x 1/2))
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 z 1)))
(*.f64 1/2 (*.f64 x (+.f64 2 (+.f64 z z))))
(*.f64 (*.f64 x (*.f64 (+.f64 z 1) 1/2)) 2)
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 z z)))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 z 1)))
(*.f64 (*.f64 (+.f64 z 1) 4) (*.f64 x 1/4))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 z 1) 4)))
(*.f64 (*.f64 (+.f64 z 1) 1/2) (+.f64 x x))
(*.f64 (*.f64 x (/.f64 (+.f64 z 1) 4)) 4)
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 z 1) 4))
(*.f64 1/8 (*.f64 (+.f64 z 1) (*.f64 x 8)))
(*.f64 (*.f64 (+.f64 z 1) 1/4) (*.f64 x 4))
(*.f64 (/.f64 (+.f64 z 1) 4) (*.f64 x 4))
(*.f64 (+.f64 1/2 (*.f64 z 1/2)) (+.f64 x x))
(/.f64 (+.f64 x (*.f64 z x)) 1)
(/.f64 (*.f64 x (+.f64 2 (+.f64 z z))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 z 1) 4)) 4)
(/.f64 (*.f64 (+.f64 z 1) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))))))) 256)
(pow.f64 (+.f64 x (*.f64 z x)) 1)
Outputs
x
(*.f64 z x)
(*.f64 x z)
(*.f64 z x)
(*.f64 x z)
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1 z) x)
(*.f64 x (+.f64 z 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 x (+.f64 z 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 x (+.f64 z 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 x (+.f64 z 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 z) 1) x))
(*.f64 x (+.f64 z 1))
(-.f64 (+.f64 x (*.f64 z x)) 0)
(*.f64 x (+.f64 z 1))
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 x (*.f64 z x)) 1)
(*.f64 x (+.f64 z 1))
(*.f64 1 (+.f64 x (*.f64 z x)))
(*.f64 x (+.f64 z 1))
(*.f64 2 (*.f64 x (*.f64 (+.f64 z 1) 1/2)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x (+.f64 2 (+.f64 z z))) 1/2)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 z 1) 1/2))
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 2 (+.f64 z z)) 1/4))
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z 1/2)))
(*.f64 (+.f64 z 1) x)
(*.f64 x (+.f64 z 1))
(*.f64 4 (*.f64 x (/.f64 (+.f64 z 1) 4)))
(*.f64 x (+.f64 z 1))
(*.f64 4 (*.f64 (/.f64 x 8) (+.f64 2 (+.f64 z z))))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x (*.f64 (+.f64 z 1) 4)) 1/4)
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 4) (*.f64 (+.f64 z 1) 1/4))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 4) (/.f64 (+.f64 z 1) 4))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 4) (*.f64 1/8 (+.f64 2 (+.f64 z z))))
(*.f64 x (+.f64 z 1))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 z 1)))
(*.f64 x (+.f64 z 1))
(*.f64 8 (*.f64 (*.f64 1/2 (*.f64 x 1/4)) (+.f64 z 1)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 (+.f64 z 1) (*.f64 x 8)) 1/8)
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 2 (+.f64 z z)) (*.f64 x 1/2))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 z 1)))
(*.f64 x (+.f64 z 1))
(*.f64 1/2 (*.f64 x (+.f64 2 (+.f64 z z))))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x (*.f64 (+.f64 z 1) 1/2)) 2)
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 1/2) (+.f64 2 (+.f64 z z)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 z 1)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 (+.f64 z 1) 4) (*.f64 x 1/4))
(*.f64 x (+.f64 z 1))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 z 1) 4)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 (+.f64 z 1) 1/2) (+.f64 x x))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x (/.f64 (+.f64 z 1) 4)) 4)
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 z 1) 4))
(*.f64 x (+.f64 z 1))
(*.f64 1/8 (*.f64 (+.f64 z 1) (*.f64 x 8)))
(*.f64 x (+.f64 z 1))
(*.f64 (*.f64 (+.f64 z 1) 1/4) (*.f64 x 4))
(*.f64 x (+.f64 z 1))
(*.f64 (/.f64 (+.f64 z 1) 4) (*.f64 x 4))
(*.f64 x (+.f64 z 1))
(*.f64 (+.f64 1/2 (*.f64 z 1/2)) (+.f64 x x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z 1/2)))
(/.f64 (+.f64 x (*.f64 z x)) 1)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 x (+.f64 2 (+.f64 z z))) 2)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 x (*.f64 (+.f64 z 1) 4)) 4)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 (+.f64 z 1) (*.f64 x 8)) 8)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))) 16)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8)))) 32)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))))) 64)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8)))))) 128)
(*.f64 x (+.f64 z 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z 1) (*.f64 x 8))))))) 256)
(*.f64 x (+.f64 z 1))
(pow.f64 (+.f64 x (*.f64 z x)) 1)
(*.f64 x (+.f64 z 1))

eval20.0ms (0.2%)

Compiler

Compiled 888 to 617 computations (30.5% saved)

prune18.0ms (0.2%)

Pruning

12 alts after pruning (2 fresh and 10 done)

PrunedKeptTotal
New99099
Fresh022
Picked011
Done099
Total9912111
Error
0b
Counts
111 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
28.7b
(+.f64 (*.f64 z x) x)
34.3b
(+.f64 (*.f64 y z) y)
27.1b
(+.f64 y x)
37.2b
(*.f64 (+.f64 y x) z)
0.0b
(*.f64 (+.f64 x y) (+.f64 z 1))
28.7b
(*.f64 (+.f64 1 z) x)
51.8b
(*.f64 z y)
48.0b
(*.f64 z x)
34.3b
(*.f64 y (-.f64 z -1))
45.8b
y
43.8b
x
Compiler

Compiled 90 to 62 computations (31.1% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune6.0ms (0.1%)

Pruning

12 alts after pruning (2 fresh and 10 done)

PrunedKeptTotal
New000
Fresh022
Picked000
Done01010
Total01212
Error
0b
Counts
12 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (+.f64 1 z) x) (*.f64 y (+.f64 1 z)))
28.7b
(+.f64 (*.f64 z x) x)
34.3b
(+.f64 (*.f64 y z) y)
27.1b
(+.f64 y x)
37.2b
(*.f64 (+.f64 y x) z)
0.0b
(*.f64 (+.f64 x y) (+.f64 z 1))
28.7b
(*.f64 (+.f64 1 z) x)
51.8b
(*.f64 z y)
48.0b
(*.f64 z x)
34.3b
(*.f64 y (-.f64 z -1))
45.8b
y
43.8b
x
Compiler

Compiled 90 to 62 computations (31.1% saved)

regimes48.0ms (0.4%)

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

6 calls:

9.0ms
(+.f64 x y)
9.0ms
(*.f64 (+.f64 x y) (+.f64 z 1))
8.0ms
y
8.0ms
x
7.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(*.f64 (+.f64 x y) (+.f64 z 1))
0.0b1(+.f64 x y)
0.0b1(+.f64 z 1)
Compiler

Compiled 100 to 54 computations (46% saved)

regimes63.0ms (0.6%)

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

3 calls:

29.0ms
x
19.0ms
z
13.0ms
y
Results
ErrorSegmentsBranch
9.0b4x
8.3b2y
2.7b3z
Compiler

Compiled 51 to 25 computations (51% saved)

bsearch27.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
0.0014461789365660352
2.4947745783960316
14.0ms
-1164053.0973444618
-0.027696227440069752
Results
24.0ms272×body256valid
Compiler

Compiled 288 to 199 computations (30.9% saved)

regimes55.0ms (0.5%)

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

3 calls:

25.0ms
x
19.0ms
z
10.0ms
y
Results
ErrorSegmentsBranch
9.0b4x
8.3b2y
10.9b4z
Compiler

Compiled 36 to 21 computations (41.7% saved)

bsearch13.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1.256325957238976e-103
7.052306496891393e-101
Results
11.0ms128×body256valid
Compiler

Compiled 160 to 124 computations (22.5% saved)

regimes88.0ms (0.8%)

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

3 calls:

35.0ms
x
34.0ms
z
18.0ms
y
Results
ErrorSegmentsBranch
15.5b8x
19.1b4y
9.0b7z
Compiler

Compiled 31 to 18 computations (41.9% saved)

bsearch82.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
2.168635198761515e+81
1.3667549708564773e+82
16.0ms
7.713092569646517e+43
3.814224018889809e+50
12.0ms
2.2272897604827457e+28
1.7657867189402532e+30
13.0ms
0.0014461789365660352
2.4947745783960316
16.0ms
-2.4846737772075458e-8
-4.046747434285109e-20
13.0ms
-4.622859569499159e+52
-5.781831484472163e+50
Results
67.0ms752×body256valid
6.0ms65×body256infinite
Compiler

Compiled 738 to 546 computations (26% saved)

regimes84.0ms (0.8%)

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

3 calls:

35.0ms
x
31.0ms
y
17.0ms
z
Results
ErrorSegmentsBranch
22.0b9x
23.6b7y
11.9b4z
Compiler

Compiled 26 to 15 computations (42.3% saved)

bsearch36.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
11010.027379766323
58765.71534910072
14.0ms
-1164053.0973444618
-0.027696227440069752
12.0ms
-4.622859569499159e+52
-5.781831484472163e+50
Results
31.0ms352×body256valid
1.0ms14×body256infinite
Compiler

Compiled 324 to 232 computations (28.4% saved)

regimes94.0ms (0.9%)

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

3 calls:

38.0ms
x
35.0ms
y
20.0ms
z
Results
ErrorSegmentsBranch
25.3b11x
26.2b10y
25.5b6z
Compiler

Compiled 23 to 14 computations (39.1% saved)

bsearch96.0ms (0.9%)

Algorithm
10×binary-search
Steps
TimeLeftRight
13.0ms
1.1290086701843165e-222
9.357049547128255e-220
11.0ms
-4.7351320482975944e-288
-2.4384877025549123e-290
10.0ms
-1.1929726507541374e-210
-2.1211729088999008e-211
9.0ms
-1.47282569901475e-165
-3.009089617415769e-166
8.0ms
-2.962118869147755e-145
-1.163666777221227e-145
10.0ms
-5.905848807675357e-96
-4.070934767237013e-97
3.0ms
-1.9324513646958625e-81
-1.7977847992957728e-81
8.0ms
-2.684504104382616e-16
-7.810619304146053e-17
14.0ms
-1.548386200234061e+107
-7.070882048451089e+102
10.0ms
-5.737005420779902e+146
-1.5663143923641307e+146
Results
83.0ms928×body256valid
3.0ms33×body256infinite
Compiler

Compiled 690 to 523 computations (24.2% saved)

regimes64.0ms (0.6%)

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

3 calls:

28.0ms
x
19.0ms
y
16.0ms
z
Results
ErrorSegmentsBranch
27.1b9x
28.6b6y
26.9b5z
Compiler

Compiled 20 to 13 computations (35% saved)

bsearch49.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
9.0ms
11010.027379766323
58765.71534910072
13.0ms
3.859355566888637e-79
1.0099872144131623e-75
13.0ms
-1.4257151194712332e-95
-5.672444406592651e-100
14.0ms
-1164053.0973444618
-0.027696227440069752
Results
44.0ms496×body256valid
Compiler

Compiled 356 to 275 computations (22.8% saved)

regimes31.0ms (0.3%)

Accuracy

Total -31.3b remaining (-101.2%)

Threshold costs -31.3b (-101.2%)

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

3 calls:

12.0ms
z
10.0ms
y
9.0ms
x
Results
ErrorSegmentsBranch
31.6b2x
30.9b2y
40.8b3z
Compiler

Compiled 17 to 12 computations (29.4% saved)

bsearch8.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
4.693205600968412e-104
1.256325957238976e-103
Results
7.0ms80×body256valid
Compiler

Compiled 66 to 52 computations (21.2% saved)

simplify109.0ms (1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
094465
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (+.f64 x y) (+.f64 z 1))
(if (<=.f64 z -1) (*.f64 (+.f64 y x) z) (if (<=.f64 z 1) (+.f64 y x) (*.f64 (+.f64 y x) z)))
(if (<=.f64 y 378259259485387/315216049571155833698232320801148910440637914163723573343586347233965774171977684891314130039079325126453023922454528) (*.f64 (+.f64 1 z) x) (*.f64 y (-.f64 z -1)))
(if (<=.f64 z -10200000000000000196699275635471779940670838163898368) (*.f64 z x) (if (<=.f64 z -1851167661284901/75557863725914323419136) (*.f64 y (-.f64 z -1)) (if (<=.f64 z 208967022709991/144115188075855872) (+.f64 y x) (if (<=.f64 z 85999999999999995095415783424) (*.f64 y (-.f64 z -1)) (if (<=.f64 z 55999999999999995964996137355732516196386256977920) (*.f64 z x) (if (<=.f64 z 3549999999999999836394194465026434101580866986197578224710098636240900106668212224) (*.f64 z y) (*.f64 z x)))))))
(if (<=.f64 z -3200000000000000244152634914940384105438879070289920) (*.f64 z x) (if (<=.f64 z -1) (*.f64 z y) (if (<=.f64 z 11200) (+.f64 y x) (*.f64 z x))))
(if (<=.f64 x -550000000000000041133268450231358399806205474754497700404331131948773409849217068635538437050805245050881144828025292077772388227650709633753939968) x (if (<=.f64 x -13000000000000000979764390021341046509141333096343509137862255220699548700342689462362304150470425229393920) (*.f64 z x) (if (<=.f64 x -4381000474388761/40564819207303340847894502572032) x (if (<=.f64 x -7903152032907367/4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873152) (*.f64 z x) (if (<=.f64 x -14091255496643/9394170331095332911557922387157348109502730195633279482829163886128836100458433773854795993539074812127739904) x (if (<=.f64 x -3711603880498137/28118211215894977392565865673037386617935606989386978956879722328823984879196799189494004288149317857187005691459505594520051662846839373056303219880407274094592) y (if (<=.f64 x -4232505880258613/4149515568880992958512407863691161151012446232242436899995657329690652811412908146399707048947103794288197886611300789182395151075411775307886874834113963687061181803401509523685376) x (if (<=.f64 x -3494208047704385/2961193260766427870080908753323559866441509279473679754522422863056280045864824078237301652581494289303756200212728639995902214134435299666298460531313288000496778442422580538845568248046109094286466596972878396512780851085312) (*.f64 z x) (if (<=.f64 x -2413894590269223/21944496275174754733023745004748837080297570543729328280448007953824789527038691788660702798145451174453138901351488446979832735450978591612896414872982681198457994802840025058142360791167736098566050165049439180766375815715632675961171034001565824849041810386302038359368560295224574744242597208206082048) y (if (<=.f64 x 8139666055761541/6511732844609232689531105264376228317524178049136629062886970519300817615056281319845148633663627237053642490813899648872938282865350942461292339894854326216889802323744154842249099888585755883524379898570201759747744871130348106729652224) (*.f64 z y) y))))))))))
(if (<=.f64 z -1) (*.f64 z x) (if (<=.f64 z -5417775852004241/2462625387274654950767440006258975862817483704404090416746768337765357610718575663213391640930307227550414249394176) y (if (<=.f64 z 8865180569007683/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (if (<=.f64 z 11200) y (*.f64 z x)))))
(if (<=.f64 y 3873374817130363/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) x y)
x
Outputs
(*.f64 (+.f64 x y) (+.f64 z 1))
(if (<=.f64 z -1) (*.f64 (+.f64 y x) z) (if (<=.f64 z 1) (+.f64 y x) (*.f64 (+.f64 y x) z)))
(if (<=.f64 y 378259259485387/315216049571155833698232320801148910440637914163723573343586347233965774171977684891314130039079325126453023922454528) (*.f64 (+.f64 1 z) x) (*.f64 y (-.f64 z -1)))
(if (<=.f64 z -10200000000000000196699275635471779940670838163898368) (*.f64 z x) (if (<=.f64 z -1851167661284901/75557863725914323419136) (*.f64 y (-.f64 z -1)) (if (<=.f64 z 208967022709991/144115188075855872) (+.f64 y x) (if (<=.f64 z 85999999999999995095415783424) (*.f64 y (-.f64 z -1)) (if (<=.f64 z 55999999999999995964996137355732516196386256977920) (*.f64 z x) (if (<=.f64 z 3549999999999999836394194465026434101580866986197578224710098636240900106668212224) (*.f64 z y) (*.f64 z x)))))))
(if (<=.f64 z -3200000000000000244152634914940384105438879070289920) (*.f64 z x) (if (<=.f64 z -1) (*.f64 z y) (if (<=.f64 z 11200) (+.f64 y x) (*.f64 z x))))
(if (<=.f64 x -550000000000000041133268450231358399806205474754497700404331131948773409849217068635538437050805245050881144828025292077772388227650709633753939968) x (if (<=.f64 x -13000000000000000979764390021341046509141333096343509137862255220699548700342689462362304150470425229393920) (*.f64 z x) (if (<=.f64 x -4381000474388761/40564819207303340847894502572032) x (if (<=.f64 x -7903152032907367/4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873152) (*.f64 z x) (if (<=.f64 x -14091255496643/9394170331095332911557922387157348109502730195633279482829163886128836100458433773854795993539074812127739904) x (if (<=.f64 x -3711603880498137/28118211215894977392565865673037386617935606989386978956879722328823984879196799189494004288149317857187005691459505594520051662846839373056303219880407274094592) y (if (<=.f64 x -4232505880258613/4149515568880992958512407863691161151012446232242436899995657329690652811412908146399707048947103794288197886611300789182395151075411775307886874834113963687061181803401509523685376) x (if (<=.f64 x -3494208047704385/2961193260766427870080908753323559866441509279473679754522422863056280045864824078237301652581494289303756200212728639995902214134435299666298460531313288000496778442422580538845568248046109094286466596972878396512780851085312) (*.f64 z x) (if (<=.f64 x -2413894590269223/21944496275174754733023745004748837080297570543729328280448007953824789527038691788660702798145451174453138901351488446979832735450978591612896414872982681198457994802840025058142360791167736098566050165049439180766375815715632675961171034001565824849041810386302038359368560295224574744242597208206082048) y (if (<=.f64 x 8139666055761541/6511732844609232689531105264376228317524178049136629062886970519300817615056281319845148633663627237053642490813899648872938282865350942461292339894854326216889802323744154842249099888585755883524379898570201759747744871130348106729652224) (*.f64 z y) y))))))))))
(if (<=.f64 z -1) (*.f64 z x) (if (<=.f64 z -5417775852004241/2462625387274654950767440006258975862817483704404090416746768337765357610718575663213391640930307227550414249394176) y (if (<=.f64 z 8865180569007683/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) x (if (<=.f64 z 11200) y (*.f64 z x)))))
(if (<=.f64 y 3873374817130363/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) x y)
x
Compiler

Compiled 233 to 135 computations (42.1% saved)

soundness0.0ms (0%)

end209.0ms (1.9%)

Remove

(sort x y)

Compiler

Compiled 229 to 118 computations (48.5% saved)

Profiling

Loading profile data...