Details

Time bar (total: 6.0s)

analyze162.0ms (2.7%)

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

sample836.0ms (14%)

Results
718.0ms8256×body256valid
105.0ms1221×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))

rewrite214.0ms (3.6%)

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.3s (20.9%)

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

eval10.0ms (0.2%)

Compiler

Compiled 606 to 275 computations (54.6% saved)

prune72.0ms (1.2%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New51657
Fresh000
Picked011
Done000
Total51758
Error
0.0b
Counts
58 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
26.3b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
10.4b
(+.f64 x (*.f64 y z))
26.3b
(*.f64 (+.f64 1 y) x)
27.2b
(*.f64 y (+.f64 z x))
35.7b
x
Compiler

Compiled 102 to 65 computations (36.3% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

rewrite245.0ms (4.1%)

Algorithm
batch-egg-rewrite
Rules
2792×rational.json-simplify-35
1810×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
5174532
6325232
7434732
8613932
9730232
10732132
11732132
12790132
Stop Event
node limit
Counts
2 → 53
Calls
Call 1
Inputs
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 (*.f64 y x) x)
Outputs
((#(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))) 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 1/2 (*.f64 (+.f64 x (*.f64 y (+.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))) 4) 4)))) (#(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 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 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 z x))) 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 z x))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)))))
((#(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) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 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 2 (+.f64 y 1)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (+.f64 y 1) 2)) 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 2 (+.f64 y 1))) 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 2 (+.f64 y 1)))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 y x)) 1)))))

simplify463.0ms (7.7%)

Algorithm
egg-herbie
Rules
2228×rational.json-simplify-2
1782×rational.json-simplify-35
1266×rational.json-simplify-53
954×exponential.json-simplify-26
814×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01241469
12711469
26201469
314361469
428471469
537691469
642611469
749741469
853301469
957511469
1065401469
1173871469
1277211469
Stop Event
node limit
Counts
95 → 71
Calls
Call 1
Inputs
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)))
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 (+.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))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (+.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))) 4) 4)
(/.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 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))))))) 256)
(pow.f64 (+.f64 x (*.f64 y (+.f64 z x))) 1)
(-.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) 2)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 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 2 (+.f64 y 1)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))
(*.f64 (*.f64 x (/.f64 (+.f64 y 1) 2)) 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 2 (+.f64 y 1))) 2)
(/.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 4)
(/.f64 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))) 8)
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))))) 256)
(pow.f64 (+.f64 x (*.f64 y x)) 1)
Outputs
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 x y))
(*.f64 x (+.f64 y 1))
(*.f64 y z)
(*.f64 y 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 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.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 y z) (*.f64 x (+.f64 y 1)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x y)))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.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 x (*.f64 x y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 y) x))
(+.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 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 x y))
(*.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 x (*.f64 x y)))
(+.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 x (*.f64 x y)))
(+.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 x (*.f64 x y)))
x
(*.f64 y x)
(*.f64 x y)
(*.f64 y x)
(*.f64 x y)
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 1 y) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(-.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))) 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 1/2 (*.f64 (+.f64 x (*.f64 y (+.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))) 4) 4)
(+.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 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)) 8)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))) 16)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4)))) 32)
(+.f64 x (*.f64 y (+.f64 x z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 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 z x))) 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 z x))) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (+.f64 z x))) 4))))))) 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)))
(-.f64 (+.f64 x (*.f64 y x)) 0)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 x (+.f64 y 1))
(+.f64 x (*.f64 x y))
(*.f64 (+.f64 x (*.f64 y x)) 1)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 1 (+.f64 x (*.f64 y x)))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 2 (*.f64 x (/.f64 (+.f64 y 1) 2)))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 1/2)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y 1) 1/2))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 x x) (/.f64 (+.f64 y 1) 2))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (+.f64 y 1) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y x)) 4))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 1/4)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 2 (+.f64 y 1)) (*.f64 x 1/2))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1))))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1)))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 x (/.f64 (+.f64 y 1) 2)) 2)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) 1/2) (+.f64 x x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 1/4 (*.f64 x (*.f64 4 (+.f64 y 1))))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (/.f64 (+.f64 y 1) 2) (+.f64 x x))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (/.f64 (+.f64 x (*.f64 y x)) 4) 4)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 (+.f64 y 1) 1/4) (*.f64 x 4))
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 2 (*.f64 (+.f64 y 1) 1/2)) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(*.f64 (*.f64 2 (/.f64 (+.f64 y 1) 2)) x)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (+.f64 x (*.f64 y x)) 1)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1))) 2)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 x (*.f64 4 (+.f64 y 1))) 4)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))) 8)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))) 16)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))) 32)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))) 64)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) 128)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (*.f64 x (*.f64 2 (+.f64 y 1))))))))) 256)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))
(pow.f64 (+.f64 x (*.f64 y x)) 1)
(+.f64 x (*.f64 x y))
(*.f64 x (+.f64 y 1))

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

rewrite185.0ms (3.1%)

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

simplify580.0ms (9.7%)

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

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

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

simplify805.0ms (13.5%)

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)

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

eval33.0ms (0.6%)

Compiler

Compiled 1782 to 1009 computations (43.4% saved)

prune27.0ms (0.4%)

Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New1663169
Fresh011
Picked011
Done145
Total1679176
Error
0.0b
Counts
176 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
27.2b
(+.f64 (*.f64 y z) (*.f64 y x))
26.3b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
10.4b
(+.f64 x (*.f64 y z))
26.3b
(*.f64 (+.f64 1 y) x)
27.2b
(*.f64 y (+.f64 z x))
37.2b
(*.f64 y z)
53.0b
(*.f64 y x)
35.7b
x
Compiler

Compiled 68 to 44 computations (35.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)

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

rewrite167.0ms (2.8%)

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

simplify209.0ms (3.5%)

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

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New51051
Fresh011
Picked011
Done077
Total51960
Error
0.0b
Counts
60 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
27.2b
(+.f64 (*.f64 y z) (*.f64 y x))
26.3b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
10.4b
(+.f64 x (*.f64 y z))
26.3b
(*.f64 (+.f64 1 y) x)
27.2b
(*.f64 y (+.f64 z x))
37.2b
(*.f64 y z)
53.0b
(*.f64 y x)
35.7b
x
Compiler

Compiled 68 to 44 computations (35.3% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0.1%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done088
Total099
Error
0.0b
Counts
9 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
27.2b
(+.f64 (*.f64 y z) (*.f64 y x))
26.3b
(+.f64 (*.f64 y x) x)
0.0b
(+.f64 x (*.f64 y (+.f64 z x)))
10.4b
(+.f64 x (*.f64 y z))
26.3b
(*.f64 (+.f64 1 y) x)
27.2b
(*.f64 y (+.f64 z x))
37.2b
(*.f64 y z)
53.0b
(*.f64 y x)
35.7b
x
Compiler

Compiled 68 to 44 computations (35.3% saved)

regimes28.0ms (0.5%)

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

4 calls:

7.0ms
z
7.0ms
x
6.0ms
(+.f64 x (*.f64 y (+.f64 z x)))
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)

regimes26.0ms (0.4%)

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

4 calls:

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

Compiled 66 to 29 computations (56.1% saved)

regimes48.0ms (0.8%)

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:

19.0ms
x
14.0ms
y
14.0ms
z
Results
ErrorSegmentsBranch
7.9b4x
0.6b3y
5.8b3z
Compiler

Compiled 42 to 21 computations (50% saved)

bsearch27.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
2.5850495347957122e-12
6.522061037248326e-10
16.0ms
-22287.882526431353
-3.6166124805327455e-8
Results
24.0ms272×body256valid
Compiler

Compiled 322 to 215 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:

21.0ms
x
20.0ms
z
16.0ms
y
Results
ErrorSegmentsBranch
11.3b5x
10.4b3y
15.4b5z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch15.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
3.0ms
1.118819252839072e-53
1.2827272885414614e-53
12.0ms
-7.93521055626389e-25
-3.6521063879649455e-26
Results
13.0ms144×body256valid
Compiler

Compiled 178 to 128 computations (28.1% saved)

regimes51.0ms (0.9%)

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:

18.0ms
x
18.0ms
z
14.0ms
y
Results
ErrorSegmentsBranch
14.5b5x
10.4b3y
21.6b5z
Compiler

Compiled 27 to 16 computations (40.7% saved)

bsearch16.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
1.118819252839072e-53
1.2827272885414614e-53
11.0ms
-7.93521055626389e-25
-3.6521063879649455e-26
Results
14.0ms144×body256valid
Compiler

Compiled 142 to 101 computations (28.9% saved)

regimes45.0ms (0.8%)

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

3 calls:

16.0ms
x
15.0ms
z
13.0ms
y
Results
ErrorSegmentsBranch
21.3b5x
20.3b3y
25.0b5z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch14.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
3.0ms
1.118819252839072e-53
1.2827272885414614e-53
11.0ms
-7.93521055626389e-25
-3.6521063879649455e-26
Results
13.0ms144×body256valid
Compiler

Compiled 124 to 92 computations (25.8% saved)

regimes16.0ms (0.3%)

Accuracy

Total -35.1b remaining (-130.5%)

Threshold costs -35.1b (-130.5%)

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

3 calls:

9.0ms
y
4.0ms
x
3.0ms
z
Results
ErrorSegmentsBranch
35.7b1x
26.9b3y
35.7b1z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch29.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
6.522061037248326e-10
3.8799428818056055e-5
16.0ms
-22287.882526431353
-3.6166124805327455e-8
Results
26.0ms288×body256valid
0.0msbody256infinite
Compiler

Compiled 232 to 173 computations (25.4% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047270
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -1) (*.f64 y (+.f64 z x)) (if (<=.f64 y 785801782749509/1208925819614629174706176) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -110591769249305/170141183460469231731687303715884105728) (*.f64 y (+.f64 z x)) (if (<=.f64 y 2480315093377859/215679573337205118357336120696157045389097155380324579848828881993728) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -66355061549583/85070591730234615865843651857942052864) (*.f64 y (+.f64 z x)) (if (<=.f64 y 336999333339383/26959946667150639794667015087019630673637144422540572481103610249216) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -5988969657808517/10889035741470030830827987437816582766592) (*.f64 y z) (if (<=.f64 y 5176309760092923/431359146674410236714672241392314090778194310760649159697657763987456) x (*.f64 y z)))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 700976274800963/18446744073709551616) x (*.f64 y x)))
x
Outputs
(+.f64 (*.f64 y z) (+.f64 (*.f64 y x) x))
(+.f64 x (*.f64 y (+.f64 z x)))
(if (<=.f64 y -1) (*.f64 y (+.f64 z x)) (if (<=.f64 y 785801782749509/1208925819614629174706176) (+.f64 x (*.f64 y z)) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -110591769249305/170141183460469231731687303715884105728) (*.f64 y (+.f64 z x)) (if (<=.f64 y 2480315093377859/215679573337205118357336120696157045389097155380324579848828881993728) (*.f64 (+.f64 1 y) x) (*.f64 y (+.f64 z x))))
(if (<=.f64 y -66355061549583/85070591730234615865843651857942052864) (*.f64 y (+.f64 z x)) (if (<=.f64 y 336999333339383/26959946667150639794667015087019630673637144422540572481103610249216) x (*.f64 y (+.f64 z x))))
(if (<=.f64 y -5988969657808517/10889035741470030830827987437816582766592) (*.f64 y z) (if (<=.f64 y 5176309760092923/431359146674410236714672241392314090778194310760649159697657763987456) x (*.f64 y z)))
(if (<=.f64 y -1) (*.f64 y x) (if (<=.f64 y 700976274800963/18446744073709551616) x (*.f64 y x)))
x
Compiler

Compiled 136 to 74 computations (45.6% saved)

soundness0.0ms (0%)

end50.0ms (0.8%)

Compiler

Compiled 115 to 44 computations (61.7% saved)

Profiling

Loading profile data...