Details

Time bar (total: 5.7s)

analyze165.0ms (2.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
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 (29.8%)

Results
1.6s8256×body256valid
99.0ms1163×body256infinite
Bogosity

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

simplify8.0ms (0.1%)

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

rewrite210.0ms (3.7%)

Algorithm
batch-egg-rewrite
Rules
2414×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
6250132
7420932
8516732
9602132
10663832
11663832
12770432
Stop Event
node limit
Counts
2 → 39
Calls
Call 1
Inputs
(*.f64 y (+.f64 z x))
(+.f64 x (*.f64 y (+.f64 z x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 z x) (*.f64 y 1/2)) (*.f64 (+.f64 z x) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 z x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 z x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 z x) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 z x)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (+.f64 z x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (+.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 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 z x))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)))))

simplify945.0ms (16.5%)

Algorithm
egg-herbie
Rules
6496×rational.json-simplify-41
3998×rational.json-simplify-35
2132×rational.json-simplify-2
880×rational.json-simplify-51
878×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01001791
12441587
26671587
317981587
434801587
541821587
645891587
748521587
850231587
951531587
1057121587
1158941587
1260901587
1361461587
1462571587
1563801587
1663801587
1763801587
1864961587
1966261587
2067441587
2168601587
2269761587
2370921587
2472081587
2573381587
2674541587
2775701587
2876861587
2976861587
Stop Event
node limit
Counts
99 → 57
Calls
Call 1
Inputs
(*.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 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 (*.f64 y (+.f64 z x)) 0)
(+.f64 0 (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 (+.f64 z x) (*.f64 y 1/2)) (*.f64 (+.f64 z x) (*.f64 y 1/2)))
(-.f64 (*.f64 y (+.f64 z x)) 0)
(/.f64 (*.f64 y (+.f64 z x)) 1)
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 2)) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 4)) 4)
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 8)) 8)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))))) 256)
(pow.f64 (*.f64 y (+.f64 z x)) 1)
(-.f64 (+.f64 x (*.f64 y (+.f64 z x))) 0)
(*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(*.f64 1 (+.f64 x (*.f64 y (+.f64 z x))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))
(*.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))) 1/2)
(/.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)))))) 256)
(pow.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 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 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 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 x (+.f64 y 1)))
x
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 y (+.f64 z x))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y x) x)
(+.f64 x (*.f64 y x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y (+.f64 z x)) 0)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 0 (*.f64 y (+.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 (+.f64 z x) (*.f64 y 1/2)) (*.f64 (+.f64 z x) (*.f64 y 1/2)))
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(-.f64 (*.f64 y (+.f64 z x)) 0)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 y (+.f64 z x)) 1)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 2)) 2)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 4)) 4)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 y (*.f64 (+.f64 z x) 8)) 8)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))) 16)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))) 32)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))) 64)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8)))))) 128)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 8))))))) 256)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(pow.f64 (*.f64 y (+.f64 z x)) 1)
(+.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (+.f64 x z))
(-.f64 (+.f64 x (*.f64 y (+.f64 z x))) 0)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1 (+.f64 x (*.f64 y (+.f64 z x))))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 1/2)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 1/4)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 1/8)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/2) 2)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1/4) 4)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (+.f64 z x) 2))) 1/2)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 2) 2)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 4)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8) 8)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)) 16)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))) 32)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)))) 64)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8))))) 128)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 8)))))) 256)
(+.f64 x (*.f64 y (+.f64 x z)))
(pow.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))

eval9.0ms (0.2%)

Compiler

Compiled 606 to 275 computations (54.6% saved)

prune9.0ms (0.2%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New52557
Fresh000
Picked101
Done000
Total53558
Error
0.0b
Counts
58 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
23.3b
(+.f64 (*.f64 y x) x)
11.6b
(+.f64 x (*.f64 y z))
23.3b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 y (+.f64 z x))
34.6b
x
Compiler

Compiled 36 to 24 computations (33.3% 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 1 y) x)
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite182.0ms (3.2%)

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
15813
213613
324113
444113
593813
6237913
7416013
8523313
9676013
10759513
11759513
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (+.f64 1 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 y) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 1 y) x) 1)))))

simplify569.0ms (9.9%)

Algorithm
egg-herbie
Rules
2778×rational.json-simplify-2
2570×rational.json-simplify-35
1512×rational.json-simplify-53
1212×rational.json-simplify-1
1048×exponential.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046314
1126314
2236314
3529314
41881314
53654314
64197314
74382314
84566314
94756314
104928314
115927314
126533314
136808314
146808314
156862314
166887314
176970314
187015314
197191314
207335314
217467314
Stop Event
node limit
Counts
26 → 20
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 (+.f64 1 y) x) 0)
(+.f64 0 (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 1 y) x) 0)
(/.f64 (*.f64 (+.f64 1 y) x) 1)
(/.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))))) 256)
(pow.f64 (*.f64 (+.f64 1 y) 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 (+.f64 1 y) x) 0)
(*.f64 x (+.f64 y 1))
(+.f64 0 (*.f64 (+.f64 1 y) x))
(*.f64 x (+.f64 y 1))
(+.f64 (*.f64 (+.f64 1 y) (*.f64 x 1/2)) (*.f64 (+.f64 1 y) (*.f64 x 1/2)))
(*.f64 x (+.f64 y 1))
(-.f64 (*.f64 (+.f64 1 y) x) 0)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) x) 1)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) (+.f64 x x)) 2)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 (+.f64 1 y) (*.f64 x 8)) 8)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))) 16)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))) 32)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))) 64)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8)))))) 128)
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 y) (*.f64 x 8))))))) 256)
(*.f64 x (+.f64 y 1))
(pow.f64 (*.f64 (+.f64 1 y) x) 1)
(*.f64 x (+.f64 y 1))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite180.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
1524×rational.json-simplify-35
1424×rational.json-simplify-1
1386×exponential.json-3
1386×rational.json-1
1386×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14613
210213
321413
439713
589613
6231213
7417413
8535813
9686913
10768013
11768013
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(+.f64 x (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 y z)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x (*.f64 y z)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y 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 z)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y z)) 1)))))

simplify779.0ms (13.6%)

Algorithm
egg-herbie
Rules
5824×rational.json-simplify-51
3524×rational.json-simplify-35
1364×rational.json-simplify-49
1152×rational.json-simplify-2
1114×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054689
1121689
2420689
31176689
41869689
52750689
63233689
73307689
83355689
93387689
103419689
113451689
123483689
133515689
143547689
153579689
163611689
173643689
183675689
194583689
204842689
214935689
225024689
235111689
245197689
255410689
265410689
275496689
285582689
295668689
305754689
315840689
325926689
336012689
346098689
356184689
Stop Event
node limit
Counts
59 → 26
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(-.f64 (+.f64 x (*.f64 y z)) 0)
(*.f64 (+.f64 x (*.f64 y z)) 1)
(*.f64 1 (+.f64 x (*.f64 y z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 y z)) 1/4))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y z)) 8))
(/.f64 (+.f64 x (*.f64 y z)) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))))) 256)
(pow.f64 (+.f64 x (*.f64 y z)) 1)
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(-.f64 (+.f64 x (*.f64 y z)) 0)
(+.f64 (*.f64 y z) x)
(*.f64 (+.f64 x (*.f64 y z)) 1)
(+.f64 (*.f64 y z) x)
(*.f64 1 (+.f64 x (*.f64 y z)))
(+.f64 (*.f64 y z) x)
(*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)
(+.f64 (*.f64 y z) x)
(*.f64 4 (*.f64 (+.f64 x (*.f64 y z)) 1/4))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 1/8)
(+.f64 (*.f64 y z) x)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)
(+.f64 (*.f64 y z) x)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/4) 4)
(+.f64 (*.f64 y z) x)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 y z)) 8))
(+.f64 (*.f64 y z) x)
(/.f64 (+.f64 x (*.f64 y z)) 1)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))))) 128)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))))) 256)
(+.f64 (*.f64 y z) x)
(pow.f64 (+.f64 x (*.f64 y z)) 1)
(+.f64 (*.f64 y z) x)

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

rewrite187.0ms (3.3%)

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

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

eval20.0ms (0.3%)

Compiler

Compiled 1029 to 640 computations (37.8% saved)

prune16.0ms (0.3%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New1122114
Fresh011
Picked011
Done033
Total1127119
Error
0.0b
Counts
119 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
23.3b
(+.f64 (*.f64 y x) x)
11.6b
(+.f64 x (*.f64 y z))
23.3b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 y (+.f64 z x))
40.1b
(*.f64 y z)
51.7b
(*.f64 y x)
34.6b
x
Compiler

Compiled 48 to 32 computations (33.3% saved)

localize3.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize3.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
23.3b
(+.f64 (*.f64 y x) x)
11.6b
(+.f64 x (*.f64 y z))
23.3b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 y (+.f64 z x))
40.1b
(*.f64 y z)
51.7b
(*.f64 y x)
34.6b
x
Compiler

Compiled 48 to 32 computations (33.3% 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
23.3b
(+.f64 (*.f64 y x) x)
11.6b
(+.f64 x (*.f64 y z))
23.3b
(*.f64 (+.f64 1 y) x)
29.5b
(*.f64 y (+.f64 z x))
40.1b
(*.f64 y z)
51.7b
(*.f64 y x)
34.6b
x
Compiler

Compiled 48 to 32 computations (33.3% saved)

regimes25.0ms (0.4%)

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

4 calls:

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

Compiled 59 to 28 computations (52.5% saved)

regimes55.0ms (1%)

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

3 calls:

20.0ms
z
19.0ms
x
15.0ms
y
Results
ErrorSegmentsBranch
7.4b3x
1.2b3y
6.3b3z
Compiler

Compiled 42 to 21 computations (50% saved)

bsearch20.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
0.0028323327209656382
0.00799728532800115
11.0ms
-4380227562.6021185
-24705334.38194022
Results
17.0ms192×body256valid
0.0msbody256infinite
Compiler

Compiled 232 to 155 computations (33.2% saved)

regimes58.0ms (1%)

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

3 calls:

20.0ms
x
20.0ms
z
16.0ms
y
Results
ErrorSegmentsBranch
11.6b5x
9.1b3y
14.1b5z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch26.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
1.2141786235318232e-27
4.0823090556743227e-25
14.0ms
-410.2355719500469
-0.2794585548801859
Results
22.0ms256×body256valid
Compiler

Compiled 304 to 219 computations (28% saved)

regimes65.0ms (1.1%)

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
21.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
18.3b5x
9.6b3y
19.3b9z
Compiler

Compiled 27 to 16 computations (40.7% saved)

bsearch25.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1.2141786235318232e-27
4.0823090556743227e-25
13.0ms
-4.095649213195747e-12
-6.259009375535706e-17
Results
23.0ms256×body256valid
Compiler

Compiled 240 to 171 computations (28.8% saved)

regimes66.0ms (1.2%)

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

3 calls:

25.0ms
y
22.0ms
z
19.0ms
x
Results
ErrorSegmentsBranch
22.7b5x
16.7b8y
23.7b7z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch99.0ms (1.7%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
1.8845344876878567e+206
1.1192125941350242e+210
15.0ms
1.9407286875492436e+110
1.0201388659595544e+113
13.0ms
1.2141786235318232e-27
4.0823090556743227e-25
12.0ms
-4.095649213195747e-12
-6.259009375535706e-17
10.0ms
-3.3740659228767434e+28
-4.5655872765284046e+27
11.0ms
-1.941721739097884e+53
-4.7746112850917195e+52
15.0ms
-2.117041753573503e+102
-4.803117887202652e+98
Results
73.0ms832×body256valid
17.0ms198×body256infinite
Compiler

Compiled 712 to 515 computations (27.7% saved)

regimes27.0ms (0.5%)

Accuracy

Total -37.5b remaining (-153.2%)

Threshold costs -37.5b (-153.2%)

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

3 calls:

9.0ms
z
9.0ms
y
8.0ms
x
Results
ErrorSegmentsBranch
33.2b3x
24.5b3y
32.9b3z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch21.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
0.0028323327209656382
0.00799728532800115
13.0ms
-410.2355719500469
-0.2794585548801859
Results
19.0ms208×body256valid
Compiler

Compiled 172 to 128 computations (25.6% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
060325
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -25000000) (*.f64 y (+.f64 z x)) (if (<=.f64 y 4496393867966703/576460752303423488) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -11) (*.f64 y (+.f64 z x)) (if (<=.f64 y 4529838868451533/348449143727040986586495598010130648530944) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -1419768672255617/5070602400912917605986812821504) (*.f64 y (+.f64 z x)) (if (<=.f64 y 7404544304199621/21778071482940061661655974875633165533184) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -80000000000000001272231288780793443746886468511562251118250620461982710177363048486507759886854520832) (*.f64 y x) (if (<=.f64 y -58999999999999999600035971787336050611240798074699776) (*.f64 y z) (if (<=.f64 y -9399999999999999520171622400) (*.f64 y x) (if (<=.f64 y -2028240960365167/633825300114114700748351602688) (*.f64 y z) (if (<=.f64 y 6097860015223217/21778071482940061661655974875633165533184) x (if (<=.f64 y 27000000000000001103620086990295988021648383691125335373849252825761398474501718491264917777511257094605437403136) (*.f64 y z) (if (<=.f64 y 189999999999999993132152804637433743694739505847473435043835440662863676089854685414617037127850799804942739225902680945313806744195408521240432643422167242133859089767052854447192908658718328807730406490112) (*.f64 y x) (*.f64 y z))))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 4496393867966703/576460752303423488) x (*.f64 y x)))
x
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -25000000) (*.f64 y (+.f64 z x)) (if (<=.f64 y 4496393867966703/576460752303423488) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -11) (*.f64 y (+.f64 z x)) (if (<=.f64 y 4529838868451533/348449143727040986586495598010130648530944) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -1419768672255617/5070602400912917605986812821504) (*.f64 y (+.f64 z x)) (if (<=.f64 y 7404544304199621/21778071482940061661655974875633165533184) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -80000000000000001272231288780793443746886468511562251118250620461982710177363048486507759886854520832) (*.f64 y x) (if (<=.f64 y -58999999999999999600035971787336050611240798074699776) (*.f64 y z) (if (<=.f64 y -9399999999999999520171622400) (*.f64 y x) (if (<=.f64 y -2028240960365167/633825300114114700748351602688) (*.f64 y z) (if (<=.f64 y 6097860015223217/21778071482940061661655974875633165533184) x (if (<=.f64 y 27000000000000001103620086990295988021648383691125335373849252825761398474501718491264917777511257094605437403136) (*.f64 y z) (if (<=.f64 y 189999999999999993132152804637433743694739505847473435043835440662863676089854685414617037127850799804942739225902680945313806744195408521240432643422167242133859089767052854447192908658718328807730406490112) (*.f64 y x) (*.f64 y z))))))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 4496393867966703/576460752303423488) x (*.f64 y x)))
x
Compiler

Compiled 159 to 83 computations (47.8% saved)

soundness0.0ms (0%)

end51.0ms (0.9%)

Compiler

Compiled 141 to 57 computations (59.6% saved)

Profiling

Loading profile data...