Details

Time bar (total: 10.5s)

analyze831.0ms (7.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
25.8%25%71.8%0.1%3.1%0%0%9
36.4%34.3%60.1%0.1%5.5%0%0%10
44.5%41.3%51.5%0.1%7%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample3.6s (34.6%)

Results
3.0s8256×body256valid
662.0ms1286×body256infinite
Bogosity

preprocess70.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
021100
137100
240100
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z))
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x))
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y))
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 y -1)))
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 z -1)))
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 x -1)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11525
21625
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 x y) (*.f64 (+.f64 x -1) z))

eval1.0ms (0%)

Compiler

Compiled 21 to 12 computations (42.9% 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 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series4.0ms (0%)

Counts
2 → 48
Calls

15 calls:

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

rewrite282.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
2934×rational.json-simplify-35
1444×rational.json-simplify-1
1244×exponential.json-3
1244×rational.json-1
1244×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
17738
216738
330938
458638
5131638
6259538
7396638
8525938
9655938
10718038
11718038
12718038
Stop Event
node limit
Counts
2 → 39
Calls
Call 1
Inputs
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -1) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x -1) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -1) (*.f64 z 1/2)) (*.f64 (+.f64 x -1) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x -1) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) (*.f64 z 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x -1) z) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)))))

simplify589.0ms (5.6%)

Algorithm
egg-herbie
Rules
2556×rational.json-simplify-35
2244×rational.json-simplify-2
1232×rational.json-simplify-1
1164×rational.json-simplify-42
854×rational.json-simplify-48
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01061863
12421595
25641595
315881595
431851595
540341595
644211595
747651595
850301595
952131595
1054121595
1159311595
1261871595
1367851595
1469491595
1571091595
1672391595
1775901595
1877701595
Stop Event
node limit
Counts
87 → 56
Calls
Call 1
Inputs
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 -1 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 0 (*.f64 (+.f64 x -1) z))
(+.f64 (*.f64 (+.f64 x -1) (*.f64 z 1/2)) (*.f64 (+.f64 x -1) (*.f64 z 1/2)))
(-.f64 (*.f64 (+.f64 x -1) z) 0)
(/.f64 (*.f64 (+.f64 x -1) z) 1)
(/.f64 (*.f64 (+.f64 x -1) (+.f64 z z)) 2)
(/.f64 (*.f64 (+.f64 x -1) (*.f64 z 4)) 4)
(/.f64 (*.f64 (+.f64 x -1) (*.f64 z 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))))) 512)
(pow.f64 (*.f64 (+.f64 x -1) z) 1)
(-.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 0)
(*.f64 1 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)))
(*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2))
(*.f64 4 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 1/2)
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))))
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)
(*.f64 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))) 1/2)
(/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))))) 512)
(pow.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
Outputs
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 -1 z) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x)))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 0 (*.f64 (+.f64 x -1) z))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 (+.f64 x -1) (*.f64 z 1/2)) (*.f64 (+.f64 x -1) (*.f64 z 1/2)))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(-.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) z) 1)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) (+.f64 z z)) 2)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) (*.f64 z 4)) 4)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) (*.f64 z 8)) 8)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))) 16)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))) 32)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))) 64)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))) 128)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) 256)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -1) (*.f64 z 8)))))))) 512)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(pow.f64 (*.f64 (+.f64 x -1) z) 1)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(-.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 0)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 1 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 4 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 1/2)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 1/4)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1/2) 2)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4))
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(*.f64 (+.f64 (*.f64 y (+.f64 x x)) (*.f64 (+.f64 x -1) (+.f64 z z))) 1/2)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 2) 2)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 4) 4)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8) 8)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)) 16)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))) 32)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))) 64)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))) 128)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) 256)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 8))))))) 512)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
(pow.f64 (+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y)) 1)
(+.f64 (*.f64 -1 z) (*.f64 x (+.f64 z y)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))

eval12.0ms (0.1%)

Compiler

Compiled 751 to 466 computations (37.9% saved)

prune12.0ms (0.1%)

Pruning

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New50656
Fresh000
Picked101
Done000
Total51657
Error
0.0b
Counts
57 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
25.7b
(+.f64 (*.f64 x y) (*.f64 z x))
11.9b
(+.f64 (*.f64 x y) (neg.f64 z))
0.0b
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
25.8b
(*.f64 (-.f64 x 1) z)
25.7b
(*.f64 (+.f64 y z) x)
37.1b
(*.f64 y x)
Compiler

Compiled 104 to 68 computations (34.6% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 24 to 7 computations (70.8% saved)

series4.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

rewrite154.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
1472×rational.json-simplify-35
1406×rational.json-1
1406×rational.json-2
1406×rational.json-3
1390×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01036
16936
215036
331736
465036
5158136
6318636
7489136
8632236
9750136
Stop Event
node limit
Counts
2 → 38
Calls
Call 1
Inputs
(*.f64 x (+.f64 z y))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 z y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 z y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (+.f64 z y) 1/2)) (*.f64 x (*.f64 (+.f64 z y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 z y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 z y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 z y) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 x (+.f64 z y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 z y)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x (+.f64 z y)) (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)))))

simplify477.0ms (4.5%)

Algorithm
egg-herbie
Rules
2452×rational.json-simplify-35
2110×rational.json-simplify-2
1638×rational.json-simplify-1
1190×rational.json-simplify-48
870×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01091968
12521968
25861968
315791668
434011668
546011668
651301668
755111668
858951668
961471668
1063501668
1167551668
1269691668
1372141668
1472591668
1573021668
1674761668
1778131668
Stop Event
node limit
Counts
110 → 56
Calls
Call 1
Inputs
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(-.f64 (*.f64 z x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 x (+.f64 z y)) 0)
(+.f64 0 (*.f64 x (+.f64 z y)))
(+.f64 (*.f64 x (*.f64 (+.f64 z y) 1/2)) (*.f64 x (*.f64 (+.f64 z y) 1/2)))
(+.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)))
(+.f64 (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)))
(-.f64 (*.f64 x (+.f64 z y)) 0)
(/.f64 (*.f64 x (+.f64 z y)) 1)
(/.f64 (*.f64 (+.f64 z y) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)
(/.f64 (*.f64 x (*.f64 (+.f64 z y) 8)) 8)
(/.f64 (*.f64 16 (*.f64 x (+.f64 z y))) 16)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))))) 128)
(pow.f64 (*.f64 x (+.f64 z y)) 1)
(-.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 0)
(-.f64 (+.f64 (*.f64 x (+.f64 z y)) (-.f64 1 z)) 1)
(*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
(*.f64 1 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)))
(*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2))
(*.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)
(*.f64 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))) 1/2)
(/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))))) 128)
(pow.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
Outputs
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (-.f64 x 1) z)
(*.f64 z (+.f64 x -1))
(-.f64 (*.f64 z x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x))))
(*.f64 z (+.f64 x -1))
(-.f64 (*.f64 z x) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (*.f64 z x) z)
(*.f64 z (+.f64 x -1))
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(+.f64 (*.f64 x (+.f64 z y)) 0)
(*.f64 x (+.f64 y z))
(+.f64 0 (*.f64 x (+.f64 z y)))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 x (*.f64 (+.f64 z y) 1/2)) (*.f64 x (*.f64 (+.f64 z y) 1/2)))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z y) 2)))
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z y) 4) (+.f64 x x)))
(*.f64 x (+.f64 y z))
(-.f64 (*.f64 x (+.f64 z y)) 0)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 (+.f64 z y) (+.f64 x x)) 2)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 x (*.f64 (+.f64 z y) 8)) 8)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 16 (*.f64 x (+.f64 z y))) 16)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))) 32)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y))))) 64)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 x (+.f64 z y)))))) 128)
(*.f64 x (+.f64 y z))
(pow.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 x (+.f64 y z))
(-.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 0)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(-.f64 (+.f64 (*.f64 x (+.f64 z y)) (-.f64 1 z)) 1)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 1 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 1/2)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 4 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 1/4)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1/2) 2)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (+.f64 (*.f64 z -2) (*.f64 (+.f64 z y) (+.f64 x x))) 1/2)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 2) 2)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 4) 4)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8) 8)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)) 16)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))) 32)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8)))) 64)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 8))))) 128)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)
(pow.f64 (+.f64 (*.f64 x (+.f64 z y)) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (*.f64 z (+.f64 x -1)))
(-.f64 (*.f64 x (+.f64 y z)) z)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

9 calls:

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

rewrite183.0ms (1.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify568.0ms (5.4%)

Algorithm
egg-herbie
Rules
3048×rational.json-simplify-2
2748×rational.json-simplify-35
2224×rational.json-simplify-53
1042×exponential.json-simplify-26
1042×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
048650
1127458
2238458
3543458
41939458
53812458
64406458
74549458
84656458
94761458
104864458
115827458
126438458
136712458
146712458
156712458
166815458
176918458
187487458
197745458
Stop Event
node limit
Counts
38 → 20
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 0 (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (*.f64 (+.f64 y z) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 y z) x) 0)
(/.f64 (*.f64 (+.f64 y z) x) 1)
(/.f64 (*.f64 (+.f64 y z) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 4)) 4)
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))))))) 256)
(pow.f64 (*.f64 (+.f64 y z) x) 1)
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 0 (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (*.f64 (+.f64 y z) (*.f64 x 1/2)))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(-.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) x) 1)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) (+.f64 x x)) 2)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 4)) 4)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 8)) 8)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))) 16)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8)))) 32)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))))) 64)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8)))))) 128)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y z) (*.f64 x 8))))))) 256)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(pow.f64 (*.f64 (+.f64 y z) x) 1)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 6 computations (64.7% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite232.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
1776×rational.json-simplify-1
1390×exponential.json-3
1390×rational.json-1
1390×rational.json-2
1390×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
16217
213917
329217
458617
5141017
6276917
7415217
8534917
9635017
10684217
11734517
12769317
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (neg.f64 z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x y) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)))))

simplify344.0ms (3.3%)

Algorithm
egg-herbie
Rules
3228×rational.json-simplify-51
2254×rational.json-simplify-48
1828×rational.json-simplify-1
1608×rational.json-simplify-35
1498×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
063905
1132905
2325905
3961905
41601905
52711905
62784905
72880905
82944905
93002905
103505905
114251905
124374905
134631905
145258905
155365905
165412905
175459905
185506905
196506905
Stop Event
node limit
Counts
59 → 28
Calls
Call 1
Inputs
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(-.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 0)
(-.f64 (+.f64 (*.f64 x y) (-.f64 1 z)) 1)
(*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
(*.f64 1 (+.f64 (*.f64 x y) (neg.f64 z)))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2))
(*.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)
(*.f64 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))) 1/2)
(/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))))) 128)
(pow.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
Outputs
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(-.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 0)
(+.f64 (*.f64 y x) (neg.f64 z))
(-.f64 (+.f64 (*.f64 x y) (-.f64 1 z)) 1)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 1 (+.f64 (*.f64 x y) (neg.f64 z)))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 1/2)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 1/4)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 1/2 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1/2) 2)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 (+.f64 (*.f64 z -2) (*.f64 y (+.f64 x x))) 1/2)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 2) 2)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 4) 4)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8) 8)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)) 16)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))) 32)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8)))) 64)
(+.f64 (*.f64 y x) (neg.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 8))))) 128)
(+.f64 (*.f64 y x) (neg.f64 z))
(pow.f64 (+.f64 (*.f64 x y) (neg.f64 z)) 1)
(+.f64 (*.f64 y x) (neg.f64 z))

eval20.0ms (0.2%)

Compiler

Compiled 1281 to 617 computations (51.8% saved)

prune21.0ms (0.2%)

Pruning

8 alts after pruning (5 fresh and 3 done)

PrunedKeptTotal
New1195124
Fresh101
Picked011
Done224
Total1228130
Error
0.0b
Counts
130 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
25.7b
(-.f64 (*.f64 z x) z)
0.0b
(-.f64 (*.f64 x (+.f64 y z)) z)
25.7b
(+.f64 (*.f64 z x) (*.f64 y x))
11.9b
(+.f64 (*.f64 x y) (neg.f64 z))
25.7b
(*.f64 (+.f64 y z) x)
51.1b
(*.f64 z x)
37.1b
(*.f64 y x)
37.1b
(neg.f64 z)
Compiler

Compiled 101 to 65 computations (35.6% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

rewrite131.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1924×rational.json-1
1562×rational.json-simplify-35
1192×rational.json-2
1192×rational.json-3
1188×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
15232
211432
324832
447432
5110932
6309332
7563532
8782032
Stop Event
node limit
Counts
2 → 59
Calls
Call 1
Inputs
(*.f64 x (+.f64 y z))
(-.f64 (*.f64 x (+.f64 y z)) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (*.f64 (+.f64 y z) (*.f64 x 1/2)))))) (#(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 (*.f64 (+.f64 y z) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y z) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 y z) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 y z)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y z)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 x (+.f64 y z)) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 -1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 z) (*.f64 x (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (-.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 z) (+.f64 (*.f64 x (+.f64 y z)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 x (+.f64 y z)) 1) (-.f64 -1 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 x (+.f64 y z)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (*.f64 (/.f64 x 8) (*.f64 (+.f64 y z) 2)) (*.f64 z 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 y z) 8) (+.f64 x x)) (*.f64 z 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 z (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 z (*.f64 x (+.f64 y z))))))))

simplify215.0ms (2%)

Algorithm
egg-herbie
Rules
2398×rational.json-simplify-2
1486×rational.json-simplify-35
1102×rational.json-simplify-1
996×rational.json-simplify-51
724×rational.json-simplify-48
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01482411
13332127
27832127
323332127
440892127
546092127
651112127
758242127
867072127
974182127
Stop Event
node limit
Counts
131 → 77
Calls
Call 1
Inputs
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(-.f64 (*.f64 z x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 (-.f64 x 1) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 x (+.f64 y z)) 0)
(+.f64 0 (*.f64 x (+.f64 y z)))
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (*.f64 (+.f64 y z) (*.f64 x 1/2)))
(-.f64 (*.f64 x (+.f64 y z)) 0)
(/.f64 (*.f64 x (+.f64 y z)) 1)
(/.f64 (*.f64 (+.f64 y z) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 4)) 4)
(/.f64 (*.f64 x (*.f64 (+.f64 y z) 8)) 8)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))))) 128)
(pow.f64 (*.f64 x (+.f64 y z)) 1)
(+.f64 (*.f64 x (+.f64 y z)) (neg.f64 z))
(+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 0)
(+.f64 0 (-.f64 (*.f64 x (+.f64 y z)) z))
(+.f64 1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 -1 z)))
(+.f64 (neg.f64 z) (*.f64 x (+.f64 y z)))
(+.f64 -1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)))
(+.f64 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)) -1)
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (-.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) z))
(+.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))
(+.f64 (-.f64 1 z) (+.f64 (*.f64 x (+.f64 y z)) -1))
(+.f64 -2 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))
(+.f64 (+.f64 (*.f64 x (+.f64 y z)) 1) (-.f64 -1 z))
(+.f64 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) -2)
(*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(*.f64 1 (-.f64 (*.f64 x (+.f64 y z)) z))
(*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 1/2)
(*.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)
(*.f64 4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4))
(*.f64 4 (-.f64 (*.f64 (/.f64 x 8) (*.f64 (+.f64 y z) 2)) (*.f64 z 1/4)))
(*.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 y z) 8) (+.f64 x x)) (*.f64 z 1/4)))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 1/4)
(*.f64 -1 (-.f64 z (*.f64 x (+.f64 y z))))
(*.f64 -1 (*.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2) 2))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -1/2)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 1/8)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) 2)
(*.f64 -2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2))
(*.f64 1/4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4) 4)
(/.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 2)
(/.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 4)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -2)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)) 16)
(/.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4) -4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))) 32)
(/.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4))) -16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))))) 128)
(pow.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(neg.f64 (-.f64 z (*.f64 x (+.f64 y z))))
Outputs
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 (+.f64 y z) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (*.f64 z x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 y x)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(-.f64 (+.f64 (*.f64 z x) (*.f64 y x)) z)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (-.f64 x 1) z)
(-.f64 (*.f64 z x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 y x) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x))))
(-.f64 (*.f64 z x) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) (*.f64 y x))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 x (+.f64 y z)) 0)
(*.f64 (+.f64 y z) x)
(+.f64 0 (*.f64 x (+.f64 y z)))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (*.f64 (+.f64 y z) (*.f64 x 1/2)))
(*.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 (*.f64 (+.f64 y z) (+.f64 x x)) 2)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 (+.f64 y z) (*.f64 x 4)) 4)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 x (*.f64 (+.f64 y z) 8)) 8)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))) 16)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))) 32)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) 64)
(*.f64 (+.f64 y z) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (+.f64 y z) 8)))))) 128)
(*.f64 (+.f64 y z) x)
(pow.f64 (*.f64 x (+.f64 y z)) 1)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x (+.f64 y z)) (neg.f64 z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 0)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 0 (-.f64 (*.f64 x (+.f64 y z)) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 -1 z)))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (neg.f64 z) (*.f64 x (+.f64 y z)))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 -1 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (+.f64 (*.f64 x (+.f64 y z)) (-.f64 1 z)) -1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) (-.f64 (*.f64 (+.f64 y z) (*.f64 x 1/2)) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (-.f64 1 z) (+.f64 (*.f64 x (+.f64 y z)) -1))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 -2 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (+.f64 (*.f64 x (+.f64 y z)) 1) (-.f64 -1 z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(+.f64 (+.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) -2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 1 (-.f64 (*.f64 x (+.f64 y z)) z))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 1/2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 4 (-.f64 (*.f64 (/.f64 x 8) (*.f64 (+.f64 y z) 2)) (*.f64 z 1/4)))
(*.f64 4 (-.f64 (*.f64 (+.f64 y z) (*.f64 2 (/.f64 x 8))) (*.f64 z 1/4)))
(*.f64 4 (-.f64 (*.f64 (/.f64 (+.f64 y z) 8) (+.f64 x x)) (*.f64 z 1/4)))
(*.f64 4 (-.f64 (*.f64 (+.f64 x x) (/.f64 (+.f64 y z) 8)) (*.f64 z 1/4)))
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 1/4)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 -1 (-.f64 z (*.f64 x (+.f64 y z))))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 -1 (*.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2) 2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -1/2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 1/8)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/2) 2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 -2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 1/2))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 1/4 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(*.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1/4) 4)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 2) 2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (-.f64 z (*.f64 x (+.f64 y z))) -1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 4) 4)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) -2) -2)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8) 8)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)) 16)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4) -4)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))) 32)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4)) -8)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) 64)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 x (+.f64 y z))) 4))) -16)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 8))))) 128)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(pow.f64 (-.f64 (*.f64 x (+.f64 y z)) z) 1)
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)
(neg.f64 (-.f64 z (*.f64 x (+.f64 y z))))
(+.f64 (*.f64 (+.f64 y z) x) (neg.f64 z))
(-.f64 (*.f64 (+.f64 y z) x) z)

localize3.0ms (0%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0%)

Compiler

Compiled 13 to 5 computations (61.5% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 6 computations (68.4% saved)

series2.0ms (0%)

Counts
1 → 18
Calls

9 calls:

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

rewrite172.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
2744×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
6276613
7490413
8616813
9702713
10702713
Stop Event
node limit
Counts
1 → 48
Calls
Call 1
Inputs
(+.f64 (*.f64 z x) (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 z y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 z y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 z y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (*.f64 2 (+.f64 z y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 x (/.f64 (+.f64 z y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (/.f64 (+.f64 z y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 (+.f64 z y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 (*.f64 2 (+.f64 z y)) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (+.f64 z y) (/.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 z y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 (+.f64 z y) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) (*.f64 x 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 z y) 1/16))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) 4) (*.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z y) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (+.f64 z y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (*.f64 (+.f64 z y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 x (+.f64 z y)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z y) 4) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 y y) (+.f64 z z)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) 1/4) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) (/.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) 1/8) (*.f64 x 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z y) 1/16) (*.f64 2 (*.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/4) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/8) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 z y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 z y)) 1)))))

simplify220.0ms (2.1%)

Algorithm
egg-herbie
Rules
2970×rational.json-simplify-2
1610×rational.json-simplify-35
1486×rational.json-simplify-53
1434×rational.json-simplify-1
1292×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0107822
1243822
2563822
31463822
43712822
55428822
66357822
76507822
86629822
96745822
106888822
117956822
Stop Event
node limit
Counts
66 → 54
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 z x)
(*.f64 y x)
(*.f64 y x)
(-.f64 (*.f64 x (+.f64 z y)) 0)
(*.f64 x (+.f64 z y))
(*.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 1 (*.f64 x (+.f64 z y)))
(*.f64 2 (*.f64 (+.f64 z y) (*.f64 x 1/2)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 z y) 1/2))
(*.f64 (+.f64 x x) (*.f64 (*.f64 2 (+.f64 z y)) 1/4))
(*.f64 (+.f64 z y) x)
(*.f64 4 (*.f64 x (/.f64 (+.f64 z y) 4)))
(*.f64 4 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)))
(*.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 1/4)
(*.f64 (*.f64 x 4) (/.f64 (+.f64 z y) 4))
(*.f64 (*.f64 x 4) (*.f64 (+.f64 z y) 1/4))
(*.f64 (*.f64 x 4) (*.f64 (*.f64 2 (+.f64 z y)) 1/8))
(*.f64 8 (*.f64 (+.f64 z y) (/.f64 x 8)))
(*.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 1/8)
(*.f64 (*.f64 2 (+.f64 z y)) (*.f64 x 1/2))
(*.f64 (*.f64 x 8) (*.f64 (+.f64 z y) 1/8))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 z y))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 z y)))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) (+.f64 z z)))
(*.f64 (*.f64 (+.f64 z y) (*.f64 x 1/2)) 2)
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 z y) 1/16))
(*.f64 (*.f64 (+.f64 z y) 4) (*.f64 x 1/4))
(*.f64 1/4 (*.f64 (+.f64 z y) (*.f64 x 4)))
(*.f64 (*.f64 (+.f64 z y) 1/2) (+.f64 x x))
(*.f64 (*.f64 x (/.f64 (+.f64 z y) 4)) 4)
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 z y) 4))
(*.f64 1/8 (*.f64 (*.f64 x (+.f64 z y)) 8))
(*.f64 (/.f64 (+.f64 z y) 4) (*.f64 x 4))
(*.f64 (+.f64 (+.f64 y y) (+.f64 z z)) (*.f64 x 1/2))
(*.f64 (*.f64 (+.f64 z y) 1/4) (*.f64 x 4))
(*.f64 (*.f64 (+.f64 z y) (/.f64 x 8)) 8)
(*.f64 (*.f64 (+.f64 z y) 1/8) (*.f64 x 8))
(*.f64 (*.f64 (+.f64 z y) 1/16) (*.f64 2 (*.f64 x 8)))
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/4) (+.f64 x x))
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)) 4)
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/8) (*.f64 x 4))
(/.f64 (*.f64 x (+.f64 z y)) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 2)
(/.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))))) 128)
(pow.f64 (*.f64 x (+.f64 z y)) 1)
Outputs
(*.f64 y x)
(*.f64 z x)
(*.f64 x z)
(*.f64 z x)
(*.f64 x z)
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 x (+.f64 y z))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 x (+.f64 y z))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 x (+.f64 y z))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 x (+.f64 y z))
(*.f64 z x)
(*.f64 x z)
(*.f64 y x)
(*.f64 y x)
(-.f64 (*.f64 x (+.f64 z y)) 0)
(*.f64 x (+.f64 y z))
(*.f64 x (+.f64 z y))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 x (+.f64 y z))
(*.f64 1 (*.f64 x (+.f64 z y)))
(*.f64 x (+.f64 y z))
(*.f64 2 (*.f64 (+.f64 z y) (*.f64 x 1/2)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 1/2)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 x x) (*.f64 (+.f64 z y) 1/2))
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 x x) (*.f64 (*.f64 2 (+.f64 z y)) 1/4))
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 z y) x)
(*.f64 x (+.f64 y z))
(*.f64 4 (*.f64 x (/.f64 (+.f64 z y) 4)))
(*.f64 x (+.f64 y z))
(*.f64 4 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 1/4)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 4) (/.f64 (+.f64 z y) 4))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 4) (*.f64 (+.f64 z y) 1/4))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 4) (*.f64 (*.f64 2 (+.f64 z y)) 1/8))
(*.f64 x (+.f64 y z))
(*.f64 8 (*.f64 (+.f64 z y) (/.f64 x 8)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 1/8)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 2 (+.f64 z y)) (*.f64 x 1/2))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 8) (*.f64 (+.f64 z y) 1/8))
(*.f64 x (+.f64 y z))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 z y))))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 z y)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 y y) (+.f64 z z)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) (*.f64 x 1/2)) 2)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 z y) 1/16))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) 4) (*.f64 x 1/4))
(*.f64 x (+.f64 y z))
(*.f64 1/4 (*.f64 (+.f64 z y) (*.f64 x 4)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) 1/2) (+.f64 x x))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x (/.f64 (+.f64 z y) 4)) 4)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x 1/4) (*.f64 (+.f64 z y) 4))
(*.f64 x (+.f64 y z))
(*.f64 1/8 (*.f64 (*.f64 x (+.f64 z y)) 8))
(*.f64 x (+.f64 y z))
(*.f64 (/.f64 (+.f64 z y) 4) (*.f64 x 4))
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 (+.f64 y y) (+.f64 z z)) (*.f64 x 1/2))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) 1/4) (*.f64 x 4))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) (/.f64 x 8)) 8)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) 1/8) (*.f64 x 8))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (+.f64 z y) 1/16) (*.f64 2 (*.f64 x 8)))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/4) (+.f64 x x))
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) (/.f64 x 8)) 4)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 (*.f64 2 (+.f64 z y)) 1/8) (*.f64 x 4))
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 x (*.f64 2 (+.f64 z y))) 2)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 (+.f64 z y) (*.f64 x 4)) 4)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 (*.f64 x (+.f64 z y)) 8) 8)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)) 16)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))) 32)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8)))) 64)
(*.f64 x (+.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 z y)) 8))))) 128)
(*.f64 x (+.f64 y z))
(pow.f64 (*.f64 x (+.f64 z y)) 1)
(*.f64 x (+.f64 y z))

eval21.0ms (0.2%)

Compiler

Compiled 1345 to 616 computations (54.2% saved)

prune20.0ms (0.2%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New1301131
Fresh000
Picked011
Done167
Total1318139
Error
0.0b
Counts
139 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
25.7b
(-.f64 (*.f64 z x) z)
11.9b
(-.f64 (*.f64 y x) z)
0.0b
(-.f64 (*.f64 x (+.f64 y z)) z)
25.7b
(+.f64 (*.f64 z x) (*.f64 y x))
25.7b
(*.f64 (+.f64 y z) x)
51.1b
(*.f64 z x)
37.1b
(*.f64 y x)
37.1b
(neg.f64 z)
Compiler

Compiled 61 to 39 computations (36.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite110.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1498×exponential.json-3
1498×rational.json-1
1498×rational.json-2
1498×rational.json-4
1498×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
210313
322313
441013
593813
6249713
7472613
8653413
Stop Event
node limit
Counts
1 → 47
Calls
Call 1
Inputs
(-.f64 (*.f64 y x) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 y x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 y x) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (*.f64 y x) (-.f64 -1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 z) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (*.f64 y x) (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 y x) (-.f64 1 z)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x 1/2)) (-.f64 (*.f64 y (*.f64 x 1/2)) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) (*.f64 (-.f64 (*.f64 y x) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 z) (+.f64 (*.f64 y x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 (*.f64 y x) (-.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 y x) 1) (-.f64 -1 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 y x) (-.f64 z 2)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 y x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 y x) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 z (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (-.f64 (*.f64 y x) z) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (*.f64 y x) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (/.f64 (-.f64 (*.f64 y x) z) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (*.f64 y x) z) -2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (*.f64 y x) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (-.f64 (*.f64 y x) z) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (-.f64 (*.f64 y (*.f64 x 8)) (*.f64 z 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (*.f64 (-.f64 (*.f64 y x) z) -2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 z (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z (*.f64 y x)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 y x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 z (*.f64 y x)))))))

simplify437.0ms (4.1%)

Algorithm
egg-herbie
Rules
1920×rational.json-simplify-1
1750×rational.json-simplify-45
1748×rational.json-simplify-35
1610×rational.json-simplify-2
842×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01061177
12231177
26651177
316571177
426881177
538371177
646231177
748191177
851291177
957891177
1063381177
1169171177
1276961177
1379761177
1479911177
1580001177
Stop Event
node limit
Counts
83 → 53
Calls
Call 1
Inputs
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (-.f64 (*.f64 y x) z) 0)
(+.f64 0 (-.f64 (*.f64 y x) z))
(+.f64 1 (+.f64 (*.f64 y x) (-.f64 -1 z)))
(+.f64 (neg.f64 z) (*.f64 y x))
(+.f64 -1 (+.f64 (*.f64 y x) (-.f64 1 z)))
(+.f64 (+.f64 (*.f64 y x) (-.f64 1 z)) -1)
(+.f64 (*.f64 y (*.f64 x 1/2)) (-.f64 (*.f64 y (*.f64 x 1/2)) z))
(+.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) (*.f64 (-.f64 (*.f64 y x) z) 1/2))
(+.f64 (-.f64 1 z) (+.f64 (*.f64 y x) -1))
(+.f64 -2 (-.f64 (*.f64 y x) (-.f64 z 2)))
(+.f64 (+.f64 (*.f64 y x) 1) (-.f64 -1 z))
(+.f64 (-.f64 (*.f64 y x) (-.f64 z 2)) -2)
(*.f64 (-.f64 (*.f64 y x) z) 1)
(*.f64 1 (-.f64 (*.f64 y x) z))
(*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 1/2))
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 1/2)
(*.f64 (-.f64 z (*.f64 y x)) -1)
(*.f64 4 (*.f64 (-.f64 (*.f64 y x) z) 1/4))
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 1/4)
(*.f64 -1 (-.f64 z (*.f64 y x)))
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -1/2)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 1/8)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 y x) z) 2))
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) 2)
(*.f64 -2 (/.f64 (-.f64 (*.f64 y x) z) -2))
(*.f64 (/.f64 (-.f64 (*.f64 y x) z) -2) -2)
(*.f64 1/4 (*.f64 (-.f64 (*.f64 y x) z) 4))
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/4) 4)
(*.f64 1/8 (*.f64 (-.f64 (*.f64 y x) z) 8))
(*.f64 1/8 (-.f64 (*.f64 y (*.f64 x 8)) (*.f64 z 8)))
(*.f64 -1/2 (*.f64 (-.f64 (*.f64 y x) z) -2))
(/.f64 (-.f64 (*.f64 y x) z) 1)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 2)
(/.f64 (-.f64 z (*.f64 y x)) -1)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 4)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -2)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 8)
(/.f64 (*.f64 (-.f64 z (*.f64 y x)) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4))) -16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))))) 128)
(pow.f64 (-.f64 (*.f64 y x) z) 1)
(neg.f64 (-.f64 z (*.f64 y x)))
Outputs
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 y x)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 -1 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (-.f64 (*.f64 y x) z) 0)
(-.f64 (*.f64 y x) z)
(+.f64 0 (-.f64 (*.f64 y x) z))
(-.f64 (*.f64 y x) z)
(+.f64 1 (+.f64 (*.f64 y x) (-.f64 -1 z)))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (neg.f64 z) (*.f64 y x))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 -1 (+.f64 (*.f64 y x) (-.f64 1 z)))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (+.f64 (*.f64 y x) (-.f64 1 z)) -1)
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (*.f64 y (*.f64 x 1/2)) (-.f64 (*.f64 y (*.f64 x 1/2)) z))
(+.f64 (*.f64 x (*.f64 y 1/2)) (-.f64 (*.f64 x (*.f64 y 1/2)) z))
(+.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) (*.f64 (-.f64 (*.f64 y x) z) 1/2))
(-.f64 (*.f64 y x) z)
(+.f64 (-.f64 1 z) (+.f64 (*.f64 y x) -1))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 -2 (-.f64 (*.f64 y x) (-.f64 z 2)))
(-.f64 (*.f64 y x) z)
(+.f64 (+.f64 (*.f64 y x) 1) (-.f64 -1 z))
(+.f64 (*.f64 y x) (neg.f64 z))
(+.f64 (-.f64 (*.f64 y x) (-.f64 z 2)) -2)
(-.f64 (*.f64 y x) z)
(*.f64 (-.f64 (*.f64 y x) z) 1)
(-.f64 (*.f64 y x) z)
(*.f64 1 (-.f64 (*.f64 y x) z))
(-.f64 (*.f64 y x) z)
(*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 1/2))
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 1/2)
(-.f64 (*.f64 y x) z)
(*.f64 (-.f64 z (*.f64 y x)) -1)
(-.f64 (*.f64 y x) z)
(*.f64 4 (*.f64 (-.f64 (*.f64 y x) z) 1/4))
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 1/4)
(-.f64 (*.f64 y x) z)
(*.f64 -1 (-.f64 z (*.f64 y x)))
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -1/2)
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 1/8)
(-.f64 (*.f64 y x) z)
(*.f64 1/2 (*.f64 (-.f64 (*.f64 y x) z) 2))
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/2) 2)
(-.f64 (*.f64 y x) z)
(*.f64 -2 (/.f64 (-.f64 (*.f64 y x) z) -2))
(-.f64 (*.f64 y x) z)
(*.f64 (/.f64 (-.f64 (*.f64 y x) z) -2) -2)
(-.f64 (*.f64 y x) z)
(*.f64 1/4 (*.f64 (-.f64 (*.f64 y x) z) 4))
(-.f64 (*.f64 y x) z)
(*.f64 (*.f64 (-.f64 (*.f64 y x) z) 1/4) 4)
(-.f64 (*.f64 y x) z)
(*.f64 1/8 (*.f64 (-.f64 (*.f64 y x) z) 8))
(-.f64 (*.f64 y x) z)
(*.f64 1/8 (-.f64 (*.f64 y (*.f64 x 8)) (*.f64 z 8)))
(-.f64 (*.f64 y x) z)
(*.f64 -1/2 (*.f64 (-.f64 (*.f64 y x) z) -2))
(-.f64 (*.f64 y x) z)
(/.f64 (-.f64 (*.f64 y x) z) 1)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 2) 2)
(-.f64 (*.f64 y x) z)
(/.f64 (-.f64 z (*.f64 y x)) -1)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 4) 4)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) -2) -2)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 (-.f64 (*.f64 y x) z) 8) 8)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 (-.f64 z (*.f64 y x)) 4) -4)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)) 16)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4)) -8)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))) 32)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) 64)
(-.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z (*.f64 y x)) 4))) -16)
(-.f64 (*.f64 y x) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) z) 8))))) 128)
(-.f64 (*.f64 y x) z)
(pow.f64 (-.f64 (*.f64 y x) z) 1)
(-.f64 (*.f64 y x) z)
(neg.f64 (-.f64 z (*.f64 y x)))
(-.f64 (*.f64 y x) z)

eval8.0ms (0.1%)

Compiler

Compiled 482 to 230 computations (52.3% saved)

prune10.0ms (0.1%)

Pruning

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New53053
Fresh000
Picked011
Done077
Total53861
Error
0.0b
Counts
61 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
25.7b
(-.f64 (*.f64 z x) z)
11.9b
(-.f64 (*.f64 y x) z)
0.0b
(-.f64 (*.f64 x (+.f64 y z)) z)
25.7b
(+.f64 (*.f64 z x) (*.f64 y x))
25.7b
(*.f64 (+.f64 y z) x)
51.1b
(*.f64 z x)
37.1b
(*.f64 y x)
37.1b
(neg.f64 z)
Compiler

Compiled 61 to 39 computations (36.1% saved)

regimes33.0ms (0.3%)

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

4 calls:

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

Compiled 99 to 43 computations (56.6% saved)

regimes58.0ms (0.6%)

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

3 calls:

23.0ms
y
17.0ms
z
16.0ms
x
Results
ErrorSegmentsBranch
0.8b3x
7.2b3y
7.6b3z
Compiler

Compiled 63 to 26 computations (58.7% saved)

bsearch26.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
3.4592508225042433e-10
3.207191698996208e-9
16.0ms
-393950.8824775174
-0.11849718931952065
Results
23.0ms240×body256valid
Compiler

Compiled 300 to 199 computations (33.7% saved)

regimes49.0ms (0.5%)

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

3 calls:

18.0ms
y
15.0ms
x
14.0ms
z
Results
ErrorSegmentsBranch
0.8b3x
7.2b3y
7.6b3z
Compiler

Compiled 49 to 24 computations (51% saved)

bsearch25.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
3.4592508225042433e-10
3.207191698996208e-9
15.0ms
-393950.8824775174
-0.11849718931952065
Results
22.0ms240×body256valid
Compiler

Compiled 288 to 193 computations (33% saved)

regimes49.0ms (0.5%)

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

3 calls:

20.0ms
x
17.0ms
z
12.0ms
y
Results
ErrorSegmentsBranch
11.2b5x
14.4b3y
13.8b3z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch50.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
3.4592508225042433e-10
3.207191698996208e-9
17.0ms
-1.706842474850474e-165
-1.5188710172418922e-180
14.0ms
-5.7093336439762436e-27
-1.235750600187763e-31
9.0ms
-4.260849081416492e-12
-1.071565196302158e-12
Results
45.0ms464×body256valid
Compiler

Compiled 540 to 390 computations (27.8% saved)

regimes64.0ms (0.6%)

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

3 calls:

30.0ms
y
18.0ms
x
14.0ms
z
Results
ErrorSegmentsBranch
11.2b5x
18.8b9y
19.3b3z
Compiler

Compiled 28 to 17 computations (39.3% saved)

bsearch57.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
9.233978587942072e-29
1.9005240631022774e-17
17.0ms
-1.706842474850474e-165
-1.5188710172418922e-180
13.0ms
-5.7093336439762436e-27
-1.235750600187763e-31
9.0ms
-4.260849081416492e-12
-1.071565196302158e-12
Results
51.0ms528×body256valid
Compiler

Compiled 513 to 376 computations (26.7% saved)

regimes41.0ms (0.4%)

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

3 calls:

18.0ms
x
12.0ms
z
10.0ms
y
Results
ErrorSegmentsBranch
20.8b6x
25.7b3y
25.3b3z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch78.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1.7875898320371537e+41
4.819824926322189e+42
16.0ms
335.29985146870143
201964605227.11444
17.0ms
9.233978587942072e-29
1.9005240631022774e-17
17.0ms
-393950.8824775174
-0.11849718931952065
15.0ms
-8.709373707890715e+178
-1.9004284191949838e+178
Results
62.0ms656×body256valid
6.0ms69×body256infinite
Compiler

Compiled 573 to 423 computations (26.2% saved)

regimes34.0ms (0.3%)

Accuracy

Total -39.3b remaining (-174%)

Threshold costs -39.3b (-174%)

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

3 calls:

14.0ms
x
11.0ms
z
8.0ms
y
Results
ErrorSegmentsBranch
22.6b5x
25.7b3y
25.3b3z
Compiler

Compiled 20 to 14 computations (30% saved)

bsearch56.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
9.233978587942072e-29
1.9005240631022774e-17
17.0ms
-1.706842474850474e-165
-1.5188710172418922e-180
14.0ms
-5.7093336439762436e-27
-1.235750600187763e-31
8.0ms
-4.260849081416492e-12
-1.071565196302158e-12
Results
50.0ms528×body256valid
Compiler

Compiled 447 to 343 computations (23.3% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
075482
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 x (+.f64 y z)) z)
(if (<=.f64 x -1) (*.f64 (+.f64 y z) x) (if (<=.f64 x 7737125245533627/2417851639229258349412352) (-.f64 (*.f64 y x) z) (+.f64 (*.f64 x y) (*.f64 z x))))
(if (<=.f64 x -1) (*.f64 (+.f64 y z) x) (if (<=.f64 x 7737125245533627/2417851639229258349412352) (-.f64 (*.f64 y x) z) (*.f64 (+.f64 y z) x)))
(if (<=.f64 x -5694524180712749/4951760157141521099596496896) (*.f64 (+.f64 y z) x) (if (<=.f64 x -7849862309882779/1427247692705959881058285969449495136382746624) (*.f64 (-.f64 x 1) z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 (+.f64 y z) x) (if (<=.f64 x 4352132950612665/9671406556917033397649408) (*.f64 (-.f64 x 1) z) (*.f64 (+.f64 y z) x)))))
(if (<=.f64 x -5446936172855673/4951760157141521099596496896) (*.f64 (+.f64 y z) x) (if (<=.f64 x -3902630409742859/696898287454081973172991196020261297061888) (neg.f64 z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 (+.f64 y z) x) (if (<=.f64 x 6114448780610613/664613997892457936451903530140172288) (neg.f64 z) (*.f64 (+.f64 y z) x)))))
(if (<=.f64 x -35000000000000000035768627845441377059942897466111292589102633030846563181335786978638316639512353528344261785902919762434344652472297305247756620664353374847953102364357179736064) (*.f64 y x) (if (<=.f64 x -1) (*.f64 z x) (if (<=.f64 x 3266710722441009/21778071482940061661655974875633165533184) (neg.f64 z) (if (<=.f64 x 350000000) (*.f64 y x) (if (<=.f64 x 2250000000000000062307227298002679176888320) (*.f64 z x) (*.f64 y x))))))
(if (<=.f64 x -5942112188569825/4951760157141521099596496896) (*.f64 y x) (if (<=.f64 x -4683156491691431/44601490397061246283071436545296723011960832) (neg.f64 z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 y x) (if (<=.f64 x 552958846246525/21267647932558653966460912964485513216) (neg.f64 z) (*.f64 y x)))))
(neg.f64 z)
Outputs
(-.f64 (*.f64 x (+.f64 y z)) z)
(if (<=.f64 x -1) (*.f64 (+.f64 y z) x) (if (<=.f64 x 7737125245533627/2417851639229258349412352) (-.f64 (*.f64 y x) z) (+.f64 (*.f64 x y) (*.f64 z x))))
(if (<=.f64 x -1) (*.f64 (+.f64 y z) x) (if (<=.f64 x 7737125245533627/2417851639229258349412352) (-.f64 (*.f64 y x) z) (*.f64 (+.f64 y z) x)))
(if (<=.f64 x -5694524180712749/4951760157141521099596496896) (*.f64 (+.f64 y z) x) (if (<=.f64 x -7849862309882779/1427247692705959881058285969449495136382746624) (*.f64 (-.f64 x 1) z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 (+.f64 y z) x) (if (<=.f64 x 4352132950612665/9671406556917033397649408) (*.f64 (-.f64 x 1) z) (*.f64 (+.f64 y z) x)))))
(if (<=.f64 x -5446936172855673/4951760157141521099596496896) (*.f64 (+.f64 y z) x) (if (<=.f64 x -3902630409742859/696898287454081973172991196020261297061888) (neg.f64 z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 (+.f64 y z) x) (if (<=.f64 x 6114448780610613/664613997892457936451903530140172288) (neg.f64 z) (*.f64 (+.f64 y z) x)))))
(if (<=.f64 x -35000000000000000035768627845441377059942897466111292589102633030846563181335786978638316639512353528344261785902919762434344652472297305247756620664353374847953102364357179736064) (*.f64 y x) (if (<=.f64 x -1) (*.f64 z x) (if (<=.f64 x 3266710722441009/21778071482940061661655974875633165533184) (neg.f64 z) (if (<=.f64 x 350000000) (*.f64 y x) (if (<=.f64 x 2250000000000000062307227298002679176888320) (*.f64 z x) (*.f64 y x))))))
(if (<=.f64 x -5942112188569825/4951760157141521099596496896) (*.f64 y x) (if (<=.f64 x -4683156491691431/44601490397061246283071436545296723011960832) (neg.f64 z) (if (<=.f64 x -881772058387211/518689446110124119814050982961395143876555779030304612499457166211331601426613518299963381118387974286024735826412598647799393884426471913485859354264245460882647725425188690460672) (*.f64 y x) (if (<=.f64 x 552958846246525/21267647932558653966460912964485513216) (neg.f64 z) (*.f64 y x)))))
(neg.f64 z)
Compiler

Compiled 223 to 118 computations (47.1% saved)

soundness973.0ms (9.2%)

Algorithm
egg-herbie
Rules
2556×rational.json-simplify-35
2452×rational.json-simplify-35
2244×rational.json-simplify-2
2110×rational.json-simplify-2
1638×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01061863
12421595
25641595
315881595
431851595
540341595
644211595
747651595
850301595
952131595
1054121595
1159311595
1261871595
1367851595
1469491595
1571091595
1672391595
1775901595
1877701595
01091968
12521968
25861968
315791668
434011668
546011668
651301668
755111668
858951668
961471668
1063501668
1167551668
1269691668
1372141668
1472591668
1573021668
1674761668
1778131668
Stop Event
node limit
node limit
Compiler

Compiled 460 to 231 computations (49.8% saved)

end65.0ms (0.6%)

Compiler

Compiled 202 to 82 computations (59.4% saved)

Profiling

Loading profile data...