Details

Time bar (total: 6.5s)

analyze166.0ms (2.6%)

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)

sample842.0ms (13%)

Results
728.0ms8256×body256valid
101.0ms1136×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)

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

rewrite222.0ms (3.4%)

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

simplify1.2s (19%)

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

eval217.0ms (3.4%)

Compiler

Compiled 606 to 275 computations (54.6% saved)

prune11.0ms (0.2%)

Pruning

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New51657
Fresh000
Picked101
Done000
Total52658
Error
0.0b
Counts
58 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
21.4b
(+.f64 (*.f64 y x) x)
14.3b
(+.f64 x (*.f64 y z))
21.4b
(*.f64 (+.f64 1 y) x)
28.8b
(*.f64 y (+.f64 z x))
34.5b
x
Compiler

Compiled 92 to 59 computations (35.9% saved)

localize398.0ms (6.2%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 7 computations (73.1% saved)

series3.0ms (0.1%)

Counts
2 → 42
Calls

15 calls:

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

rewrite250.0ms (3.9%)

Algorithm
batch-egg-rewrite
Rules
2792×rational.json-simplify-35
1816×rational.json-simplify-1
1448×exponential.json-3
1448×rational.json-1
1448×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0938
16238
213932
331632
467632
5174132
6324732
7434332
8613632
9729932
10731832
11731832
12789832
Stop Event
node limit
Counts
2 → 53
Calls
Call 1
Inputs
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y z) (+.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 (*.f64 (+.f64 y 1) 1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 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 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 (+.f64 x (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (+.f64 y (+.f64 y 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (+.f64 y 1) 1/2) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))))) (#(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 1/4 (*.f64 x (*.f64 4 (+.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)))) (#(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 2 (*.f64 (+.f64 y 1) 1/2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (/.f64 (+.f64 y 1) 2)) 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 y (+.f64 y 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y x)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)))))

simplify269.0ms (4.2%)

Algorithm
egg-herbie
Rules
2070×rational.json-simplify-2
1804×rational.json-simplify-35
816×rational.json-simplify-53
810×rational.json-simplify-1
736×exponential.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01271469
12741469
26081469
314011469
428001469
536581469
640561469
745351469
850211469
954821469
1063631469
1170981469
1275601469
1379461469
Stop Event
node limit
Counts
95 → 72
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))
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 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 (*.f64 y x) x)
(*.f64 y z)
(*.f64 y z)
(*.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)))
(-.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 (*.f64 (+.f64 y 1) 1/2) x))
(*.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 (+.f64 y 1) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))
(*.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 1/4)
(*.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (+.f64 y (+.f64 y 2))))
(*.f64 (*.f64 (*.f64 (+.f64 y 1) 1/2) x) 2)
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 4 (+.f64 y 1))))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)
(*.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))
(*.f64 (*.f64 2 (*.f64 (+.f64 y 1) 1/2)) x)
(*.f64 (*.f64 2 (/.f64 (+.f64 y 1) 2)) x)
(/.f64 (+.f64 x (*.f64 y x)) 1)
(/.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 2)
(/.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 4)
(/.f64 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))) 8)
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))))) 256)
(pow.f64 (+.f64 x (*.f64 y x)) 1)
(-.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)
(*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(*.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(*.f64 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))))) 256)
(pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 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 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
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 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 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y (+.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x)))) x)
(+.f64 x (*.f64 y (+.f64 x z)))
(+.f64 (*.f64 y x) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 y z)
(*.f64 y z)
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 x (+.f64 y 1)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 1 (+.f64 x (*.f64 y x)))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 2 (*.f64 (*.f64 (+.f64 y 1) 1/2) x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 1/2)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 y 1) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 1/4)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 y (+.f64 y 2)) (*.f64 x 1/2))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 1/2 (*.f64 x (+.f64 y (+.f64 y 2))))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 (*.f64 (+.f64 y 1) 1/2) x) 2)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 2)))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 1/4 (*.f64 x (*.f64 4 (+.f64 y 1))))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 2 (*.f64 (+.f64 y 1) 1/2)) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (*.f64 2 (/.f64 (+.f64 y 1) 2)) x)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 x (+.f64 y (+.f64 y 2))) 2)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 4)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))) 8)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))) 16)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))) 32)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))) 64)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) 128)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (+.f64 y (+.f64 y 2))))))))) 256)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(pow.f64 (+.f64 x (*.f64 y x)) 1)
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(-.f64 (+.f64 x (*.f64 y (+.f64 x z))) 0)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1 (+.f64 x (*.f64 y (+.f64 x z))))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 1/2)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 1/4)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1/2) 2)
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))
(+.f64 x (*.f64 y (+.f64 x z)))
(*.f64 (/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 2) 2)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4) 4)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)) 8)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))) 16)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))) 32)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))) 64)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) 128)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 x z))) 4))))))) 256)
(+.f64 x (*.f64 y (+.f64 x z)))
(pow.f64 (+.f64 x (*.f64 y (+.f64 x z))) 1)
(+.f64 x (*.f64 y (+.f64 x z)))

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

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

series1.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite194.0ms (3%)

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

simplify596.0ms (9.2%)

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

rewrite193.0ms (3%)

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

simplify824.0ms (12.7%)

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)

eval31.0ms (0.5%)

Compiler

Compiled 1836 to 1004 computations (45.3% saved)

prune25.0ms (0.4%)

Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New1723175
Fresh011
Picked011
Done134
Total1738181
Error
0.0b
Counts
181 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
28.8b
(+.f64 (*.f64 y z) (*.f64 y x))
21.4b
(+.f64 (*.f64 y x) x)
14.3b
(+.f64 x (*.f64 y z))
21.4b
(*.f64 (+.f64 1 y) x)
28.8b
(*.f64 y (+.f64 z x))
42.1b
(*.f64 y z)
49.8b
(*.f64 y x)
34.5b
x
Compiler

Compiled 58 to 38 computations (34.5% 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) (*.f64 y x))
Compiler

Compiled 19 to 6 computations (68.4% saved)

series1.0ms (0%)

Counts
1 → 18
Calls

9 calls:

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

rewrite173.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
2754×rational.json-simplify-2
1304×rational.json-1
1304×rational.json-2
1304×rational.json-3
1284×exponential.json-3
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
15313
211713
325513
447413
5110713
6276413
7489913
8616313
9702213
10702213
Stop Event
node limit
Counts
1 → 48
Calls
Call 1
Inputs
(+.f64 (*.f64 y z) (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (+.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (+.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (+.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 y (*.f64 (+.f64 z x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 2 (+.f64 z x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (+.f64 z x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (*.f64 2 (+.f64 z x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 y (/.f64 (+.f64 z x) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 4) (/.f64 (+.f64 z x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 4) (*.f64 (+.f64 z x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 4) (*.f64 (*.f64 2 (+.f64 z x)) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (+.f64 z x) (/.f64 y 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 8) (*.f64 (+.f64 z x) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 z x)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 y (*.f64 2 (+.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 (+.f64 z x) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 y 8)) (*.f64 (+.f64 z x) 1/16))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) 4) (*.f64 y 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z x) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) 1/2) (+.f64 y y))))) (#(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 1/4) (*.f64 (+.f64 z x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 y (+.f64 z x)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z x) 4) (*.f64 y 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (+.f64 z z)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) 1/4) (*.f64 y 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) (/.f64 y 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) 1/8) (*.f64 y 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z x) 1/16) (*.f64 2 (*.f64 y 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/4) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/8) (*.f64 y 4))))) (#(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 2 (+.f64 z x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.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 y (+.f64 z x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 z x)) 1)))))

simplify216.0ms (3.3%)

Algorithm
egg-herbie
Rules
2960×rational.json-simplify-2
1500×rational.json-simplify-35
1496×rational.json-simplify-53
1416×rational.json-simplify-1
1292×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0105822
1243822
2565822
31454822
43695822
55381822
66280822
76419822
86530822
96635822
106767822
117821822
Stop Event
node limit
Counts
66 → 51
Calls
Call 1
Inputs
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y x)
(*.f64 y z)
(*.f64 y z)
(*.f64 y z)
(*.f64 y x)
(*.f64 y x)
(-.f64 (*.f64 y (+.f64 z x)) 0)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y (+.f64 z x)) 1)
(*.f64 1 (*.f64 y (+.f64 z x)))
(*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 1/2)))
(*.f64 (*.f64 y (*.f64 2 (+.f64 z x))) 1/2)
(*.f64 (+.f64 y y) (*.f64 (+.f64 z x) 1/2))
(*.f64 (+.f64 y y) (*.f64 (*.f64 2 (+.f64 z x)) 1/4))
(*.f64 (+.f64 z x) y)
(*.f64 4 (*.f64 y (/.f64 (+.f64 z x) 4)))
(*.f64 4 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)))
(*.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 1/4)
(*.f64 (*.f64 y 4) (/.f64 (+.f64 z x) 4))
(*.f64 (*.f64 y 4) (*.f64 (+.f64 z x) 1/4))
(*.f64 (*.f64 y 4) (*.f64 (*.f64 2 (+.f64 z x)) 1/8))
(*.f64 8 (*.f64 (+.f64 z x) (/.f64 y 8)))
(*.f64 (*.f64 y 8) (*.f64 (+.f64 z x) 1/8))
(*.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 1/8)
(*.f64 (*.f64 2 (+.f64 z x)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 z x))))
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 z x)))
(*.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) (+.f64 z z)))
(*.f64 (*.f64 y (*.f64 (+.f64 z x) 1/2)) 2)
(*.f64 (*.f64 2 (*.f64 y 8)) (*.f64 (+.f64 z x) 1/16))
(*.f64 (*.f64 (+.f64 z x) 4) (*.f64 y 1/4))
(*.f64 1/4 (*.f64 (+.f64 z x) (*.f64 y 4)))
(*.f64 (*.f64 (+.f64 z x) 1/2) (+.f64 y y))
(*.f64 (*.f64 y (/.f64 (+.f64 z x) 4)) 4)
(*.f64 (*.f64 y 1/4) (*.f64 (+.f64 z x) 4))
(*.f64 1/8 (*.f64 (*.f64 y (+.f64 z x)) 8))
(*.f64 (/.f64 (+.f64 z x) 4) (*.f64 y 4))
(*.f64 (+.f64 (+.f64 x x) (+.f64 z z)) (*.f64 y 1/2))
(*.f64 (*.f64 (+.f64 z x) 1/4) (*.f64 y 4))
(*.f64 (*.f64 (+.f64 z x) (/.f64 y 8)) 8)
(*.f64 (*.f64 (+.f64 z x) 1/8) (*.f64 y 8))
(*.f64 (*.f64 (+.f64 z x) 1/16) (*.f64 2 (*.f64 y 8)))
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/4) (+.f64 y y))
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)) 4)
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/8) (*.f64 y 4))
(/.f64 (*.f64 y (+.f64 z x)) 1)
(/.f64 (*.f64 y (*.f64 2 (+.f64 z x))) 2)
(/.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8))))) 128)
(pow.f64 (*.f64 y (+.f64 z x)) 1)
Outputs
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y (+.f64 z x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y (+.f64 z x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y (+.f64 z x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 z) (*.f64 -1 x))))
(*.f64 y (+.f64 z x))
(*.f64 y x)
(*.f64 y z)
(*.f64 y z)
(*.f64 y z)
(*.f64 y x)
(*.f64 y x)
(-.f64 (*.f64 y (+.f64 z x)) 0)
(*.f64 y (+.f64 z x))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y (+.f64 z x)) 1)
(*.f64 y (+.f64 z x))
(*.f64 1 (*.f64 y (+.f64 z x)))
(*.f64 y (+.f64 z x))
(*.f64 2 (*.f64 y (*.f64 (+.f64 z x) 1/2)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y (*.f64 2 (+.f64 z x))) 1/2)
(*.f64 y (+.f64 z x))
(*.f64 (+.f64 y y) (*.f64 (+.f64 z x) 1/2))
(*.f64 y (+.f64 z x))
(*.f64 (+.f64 y y) (*.f64 (*.f64 2 (+.f64 z x)) 1/4))
(*.f64 y (+.f64 z x))
(*.f64 (+.f64 z x) y)
(*.f64 y (+.f64 z x))
(*.f64 4 (*.f64 y (/.f64 (+.f64 z x) 4)))
(*.f64 y (+.f64 z x))
(*.f64 4 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 1/4)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 4) (/.f64 (+.f64 z x) 4))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 4) (*.f64 (+.f64 z x) 1/4))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 4) (*.f64 (*.f64 2 (+.f64 z x)) 1/8))
(*.f64 y (+.f64 z x))
(*.f64 8 (*.f64 (+.f64 z x) (/.f64 y 8)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 8) (*.f64 (+.f64 z x) 1/8))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 1/8)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 2 (+.f64 z x)) (*.f64 y 1/2))
(*.f64 y (+.f64 z x))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 z x))))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 z x)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 1/2) (+.f64 (+.f64 x x) (+.f64 z z)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y (*.f64 (+.f64 z x) 1/2)) 2)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 2 (*.f64 y 8)) (*.f64 (+.f64 z x) 1/16))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) 4) (*.f64 y 1/4))
(*.f64 y (+.f64 z x))
(*.f64 1/4 (*.f64 (+.f64 z x) (*.f64 y 4)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) 1/2) (+.f64 y y))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y (/.f64 (+.f64 z x) 4)) 4)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 y 1/4) (*.f64 (+.f64 z x) 4))
(*.f64 y (+.f64 z x))
(*.f64 1/8 (*.f64 (*.f64 y (+.f64 z x)) 8))
(*.f64 y (+.f64 z x))
(*.f64 (/.f64 (+.f64 z x) 4) (*.f64 y 4))
(*.f64 y (+.f64 z x))
(*.f64 (+.f64 (+.f64 x x) (+.f64 z z)) (*.f64 y 1/2))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) 1/4) (*.f64 y 4))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) (/.f64 y 8)) 8)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) 1/8) (*.f64 y 8))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (+.f64 z x) 1/16) (*.f64 2 (*.f64 y 8)))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/4) (+.f64 y y))
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) (/.f64 y 8)) 4)
(*.f64 y (+.f64 z x))
(*.f64 (*.f64 (*.f64 2 (+.f64 z x)) 1/8) (*.f64 y 4))
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (+.f64 z x)) 1)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 y (*.f64 2 (+.f64 z x))) 2)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 (+.f64 z x) (*.f64 y 4)) 4)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 (*.f64 y (+.f64 z x)) 8) 8)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8)) 16)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8))) 32)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8)))) 64)
(*.f64 y (+.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 z x)) 8))))) 128)
(*.f64 y (+.f64 z x))
(pow.f64 (*.f64 y (+.f64 z x)) 1)
(*.f64 y (+.f64 z x))

eval8.0ms (0.1%)

Compiler

Compiled 474 to 252 computations (46.8% saved)

prune10.0ms (0.1%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New51051
Fresh011
Picked011
Done066
Total51859
Error
0.0b
Counts
59 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
28.8b
(+.f64 (*.f64 y z) (*.f64 y x))
21.4b
(+.f64 (*.f64 y x) x)
14.3b
(+.f64 x (*.f64 y z))
21.4b
(*.f64 (+.f64 1 y) x)
28.8b
(*.f64 y (+.f64 z x))
42.1b
(*.f64 y z)
49.8b
(*.f64 y x)
34.5b
x
Compiler

Compiled 58 to 38 computations (34.5% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done077
Total088
Error
0.0b
Counts
8 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
28.8b
(+.f64 (*.f64 y z) (*.f64 y x))
21.4b
(+.f64 (*.f64 y x) x)
14.3b
(+.f64 x (*.f64 y z))
21.4b
(*.f64 (+.f64 1 y) x)
28.8b
(*.f64 y (+.f64 z x))
42.1b
(*.f64 y z)
49.8b
(*.f64 y x)
34.5b
x
Compiler

Compiled 58 to 38 computations (34.5% saved)

regimes27.0ms (0.4%)

Counts
10 → 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)))
(+.f64 (*.f64 y z) (*.f64 y x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
Calls

4 calls:

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

Compiled 75 to 30 computations (60% saved)

regimes43.0ms (0.7%)

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:

14.0ms
z
14.0ms
x
13.0ms
y
Results
ErrorSegmentsBranch
7.7b3x
1.3b3y
7.4b3z
Compiler

Compiled 42 to 21 computations (50% saved)

bsearch28.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
8.68875356035391e-6
9.775092849134452
15.0ms
-5.550502417122935
-9.521645271898693e-9
Results
25.0ms288×body256valid
Compiler

Compiled 340 to 227 computations (33.2% saved)

regimes69.0ms (1.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:

31.0ms
z
24.0ms
x
12.0ms
y
Results
ErrorSegmentsBranch
9.2b5x
8.9b3y
13.0b7z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch24.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
12.134020106689762
14435.945103729506
11.0ms
-114.34865387709024
-5.550502417122935
Results
21.0ms240×body256valid
0.0msbody256infinite
Compiler

Compiled 286 to 206 computations (28% saved)

regimes82.0ms (1.3%)

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:

38.0ms
x
31.0ms
z
11.0ms
y
Results
ErrorSegmentsBranch
13.5b11x
9.9b3y
20.0b9z
Compiler

Compiled 27 to 16 computations (40.7% saved)

bsearch28.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
9.877789990607384e-24
9.473641442916037e-21
16.0ms
-5.550502417122935
-9.521645271898693e-9
Results
25.0ms272×body256valid
Compiler

Compiled 254 to 181 computations (28.7% saved)

regimes54.0ms (0.8%)

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

3 calls:

22.0ms
z
19.0ms
x
12.0ms
y
Results
ErrorSegmentsBranch
22.9b5x
20.6b4y
25.8b7z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch60.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
8.68875356035391e-6
9.775092849134452
14.0ms
-5.550502417122935
-9.521645271898693e-9
32.0ms
-4.331288746677901e+238
-1.0981282687796637e+206
Results
41.0ms464×body256valid
14.0ms161×body256infinite
Compiler

Compiled 386 to 283 computations (26.7% saved)

regimes26.0ms (0.4%)

Accuracy

Total -39.1b remaining (-172.5%)

Threshold costs -39.1b (-172.5%)

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

3 calls:

14.0ms
z
9.0ms
y
3.0ms
x
Results
ErrorSegmentsBranch
34.5b1x
22.7b3y
31.9b5z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch30.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
8.68875356035391e-6
9.775092849134452
15.0ms
-5.550502417122935
-9.521645271898693e-9
Results
26.0ms288×body256valid
Compiler

Compiled 232 to 173 computations (25.4% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042261
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -1) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -21) (*.f64 y (+.f64 z x)) (if (<=.f64 y 45) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -3687223749824619/302231454903657293676544) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1295997295890293/166153499473114484112975882535043072) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -15999999999999999749520600428758758355736396403189392846713340598610086606224371578033052110909282892937136496142714834561348045635194268959136480375167243142968433984438025611277059702803707504038057026162004066304) (*.f64 y x) (if (<=.f64 y -3475661731392059/302231454903657293676544) (*.f64 y z) (if (<=.f64 y 1) x (*.f64 y x))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 1) x (*.f64 y x)))
x
Outputs
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -1) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -21) (*.f64 y (+.f64 z x)) (if (<=.f64 y 45) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -3687223749824619/302231454903657293676544) (*.f64 y (+.f64 z x)) (if (<=.f64 y 1295997295890293/166153499473114484112975882535043072) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -15999999999999999749520600428758758355736396403189392846713340598610086606224371578033052110909282892937136496142714834561348045635194268959136480375167243142968433984438025611277059702803707504038057026162004066304) (*.f64 y x) (if (<=.f64 y -3475661731392059/302231454903657293676544) (*.f64 y z) (if (<=.f64 y 1) x (*.f64 y x))))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 1) x (*.f64 y x)))
x
Compiler

Compiled 131 to 71 computations (45.8% saved)

soundness0.0ms (0%)

end45.0ms (0.7%)

Compiler

Compiled 113 to 45 computations (60.2% saved)

Profiling

Loading profile data...