Details

Time bar (total: 10.7s)

analyze178.0ms (1.7%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
25.8%25%71.8%0.1%3.1%0%0%9
37.3%34.3%57.7%0.1%7.8%0%0%10
45.1%41.3%50.3%0.1%8.2%0%0%11
52.5%46.8%42.3%0.1%10.7%0%0%12
Compiler

Compiled 13 to 10 computations (23.1% saved)

sample873.0ms (8.1%)

Results
765.0ms8256×body256valid
97.0ms1057×body256infinite
Bogosity

preprocess4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 15 to 12 computations (20% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 12 to 9 computations (25% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 12 to 9 computations (25% saved)

localize12.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 31 to 20 computations (35.5% saved)

series5.0ms (0%)

Counts
2 → 60
Calls

15 calls:

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

rewrite87.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1616×rational.json-simplify-35
1370×bool.json-1
1370×bool.json-2
1324×rational.json-1
1324×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
110538
229738
359838
4118038
5259138
6537238
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(*.f64 (-.f64 1 y) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 1 y) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1 y) z) (*.f64 (-.f64 1 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1 y) z) (*.f64 (-.f64 1 y) z))))))

simplify486.0ms (4.5%)

Algorithm
egg-herbie
Rules
3596×rational.json-simplify-35
2890×rational.json-simplify-2
1396×rational.json-simplify-1
1150×rational.json-simplify-49
1126×rational.json-simplify-53
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0801654
11881632
23871578
38911578
425771578
540791578
649921578
752681578
854961578
955101578
1065911578
1170761578
1271101578
1371121578
1473121578
1575101578
1677081578
1779061578
Stop Event
node limit
Counts
82 → 50
Calls
Call 1
Inputs
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x)))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
z
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))
(+.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)))
(-.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)
(/.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 1)
(/.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)))) 64)
(+.f64 (*.f64 (-.f64 1 y) z) 0)
(+.f64 0 (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))
(-.f64 (*.f64 (-.f64 1 y) z) 0)
(/.f64 (*.f64 (-.f64 1 y) z) 1)
(/.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)
(/.f64 (*.f64 (-.f64 1 y) (*.f64 z 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1 y) z) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)))) 64)
Outputs
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 x y)))
(+.f64 (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x)))
(*.f64 z (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 x (*.f64 z (*.f64 x (+.f64 y -1))))
z
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y z))
(*.f64 -1 (*.f64 z y))
(neg.f64 (*.f64 z y))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y z))
(*.f64 -1 (*.f64 z y))
(neg.f64 (*.f64 z y))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 -1 (*.f64 z y)))
(+.f64 z (neg.f64 (*.f64 z y)))
(+.f64 z (*.f64 z (neg.f64 y)))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(+.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 1/2)))
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(-.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 0)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 1)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (+.f64 x x)) 2)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 (-.f64 1 (*.f64 (-.f64 1 y) z)) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8) 8)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)) 16)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) 32)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 8)))) 64)
(*.f64 x (-.f64 1 (*.f64 z (-.f64 1 y))))
(+.f64 (*.f64 (-.f64 1 y) z) 0)
(*.f64 z (-.f64 1 y))
(+.f64 0 (*.f64 (-.f64 1 y) z))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))
(*.f64 z (-.f64 1 y))
(-.f64 (*.f64 (-.f64 1 y) z) 0)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) z) 1)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (*.f64 z 4)) 4)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (*.f64 (-.f64 1 y) z) 8) 8)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)) 16)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) 32)
(*.f64 z (-.f64 1 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 y) z) 8)))) 64)
(*.f64 z (-.f64 1 y))

eval10.0ms (0.1%)

Compiler

Compiled 565 to 380 computations (32.7% saved)

prune11.0ms (0.1%)

Pruning

7 alts after pruning (7 fresh and 0 done)

PrunedKeptTotal
New43750
Fresh000
Picked101
Done000
Total44751
Error
0.0b
Counts
51 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
3.6b
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
15.6b
(*.f64 (-.f64 1 z) x)
32.8b
(*.f64 z (*.f64 (-.f64 y 1) x))
47.7b
(*.f64 z (*.f64 y x))
48.2b
(*.f64 y (*.f64 z x))
17.5b
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
30.8b
x
Compiler

Compiled 118 to 81 computations (31.4% saved)

localize11.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 31 to 18 computations (41.9% saved)

series7.0ms (0.1%)

Counts
3 → 51
Calls

24 calls:

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

rewrite100.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1498×bool.json-1
1498×bool.json-2
1466×rational.json-1
1466×rational.json-2
1466×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01057
111057
232457
365857
4133357
5305257
6599857
Stop Event
node limit
Counts
3 → 43
Calls
Call 1
Inputs
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 y 1) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))) (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 (+.f64 y -1) (+.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 z (*.f64 (+.f64 y -1) x)) (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 z (*.f64 (+.f64 y -1) x)) (*.f64 z (*.f64 (+.f64 y -1) x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (*.f64 z (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 z (+.f64 y -1))) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y -1) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y -1) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y -1) (*.f64 x 1/2)) (*.f64 (+.f64 y -1) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y -1) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y -1) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y -1) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y -1) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 y -1) x) (*.f64 (+.f64 y -1) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 y -1) x) (*.f64 (+.f64 y -1) x))))))

simplify364.0ms (3.4%)

Algorithm
egg-herbie
Rules
2732×rational.json-simplify-2
2046×rational.json-simplify-35
1374×rational.json-simplify-1
1302×rational.json-simplify-42
884×rational.json-simplify-53
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01082530
12641846
26201846
315001846
431811846
542881846
645371846
747401846
849971846
953741846
1069031846
1170891846
1274481846
1375161846
1475481846
1575721846
Stop Event
node limit
Counts
94 → 74
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
x
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)
(+.f64 0 (*.f64 z (*.f64 (+.f64 y -1) x)))
(+.f64 (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))) (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))))
(-.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)
(/.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 1)
(/.f64 (*.f64 z (*.f64 (+.f64 y -1) (+.f64 x x))) 2)
(/.f64 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))))) 32)
(-.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 0)
(*.f64 1 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 y -1))))
(*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)
(*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2))
(*.f64 4 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 1/2)
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2))
(*.f64 (+.f64 1 (*.f64 z (+.f64 y -1))) x)
(*.f64 (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (*.f64 x 1/2))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2) 2)
(*.f64 (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)
(/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)))) 32)
(+.f64 (*.f64 (+.f64 y -1) x) 0)
(+.f64 0 (*.f64 (+.f64 y -1) x))
(+.f64 (*.f64 (+.f64 y -1) (*.f64 x 1/2)) (*.f64 (+.f64 y -1) (*.f64 x 1/2)))
(-.f64 (*.f64 (+.f64 y -1) x) 0)
(/.f64 (*.f64 (+.f64 y -1) x) 1)
(/.f64 (*.f64 (+.f64 y -1) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 y -1) (*.f64 x 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))))) 32)
Outputs
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
x
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 0 (*.f64 z (*.f64 (+.f64 y -1) x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(+.f64 (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))) (*.f64 z (*.f64 (+.f64 y -1) (*.f64 x 1/2))))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(-.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 0)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 1)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 z (*.f64 (+.f64 y -1) (+.f64 x x))) 2)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)) 4)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))) 8)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4)))) 16)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 (*.f64 z x) 4))))) 32)
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z (*.f64 x y)))
(*.f64 (*.f64 z x) (+.f64 -1 y))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(-.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 0)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 1 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 y -1))))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 4 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 1/2)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 1/4)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (+.f64 1 (*.f64 z (+.f64 y -1))) x)
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (*.f64 x 1/2))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 z (+.f64 y -1)))))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1/2) 2)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(*.f64 (*.f64 1/2 (+.f64 1 (*.f64 z (+.f64 y -1)))) (+.f64 x x))
(*.f64 x (+.f64 1 (*.f64 z (+.f64 -1 y))))
(*.f64 x (+.f64 1 (*.f64 z (-.f64 y 1))))
(*.f64 (/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 1)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 2) 2)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4) 4)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)) 8)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4))) 16)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) 4)))) 32)
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z (*.f64 x y))))
(+.f64 x (*.f64 (*.f64 z x) (+.f64 -1 y)))
(+.f64 x (*.f64 z (*.f64 x (+.f64 -1 y))))
(+.f64 x (*.f64 z (*.f64 x (-.f64 y 1))))
(+.f64 (*.f64 (+.f64 y -1) x) 0)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 0 (*.f64 (+.f64 y -1) x))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(+.f64 (*.f64 (+.f64 y -1) (*.f64 x 1/2)) (*.f64 (+.f64 y -1) (*.f64 x 1/2)))
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(-.f64 (*.f64 (+.f64 y -1) x) 0)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 (+.f64 y -1) x) 1)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 (+.f64 y -1) (+.f64 x x)) 2)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 (+.f64 y -1) (*.f64 x 4)) 4)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))) 8)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4)))) 16)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y -1) (*.f64 x 4))))) 32)
(+.f64 (*.f64 -1 x) (*.f64 x y))
(*.f64 x (+.f64 -1 y))
(*.f64 x (-.f64 y 1))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.2b
(*.f64 y (*.f64 z x))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series3.0ms (0%)

Counts
1 → 0
Calls

9 calls:

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

rewrite99.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1858×bool.json-1
1858×bool.json-2
1186×rational.json-1
1186×rational.json-2
1186×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17213
221413
347213
494513
5210213
6453413
7754113
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (*.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 y (*.f64 x 4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (*.f64 z x)) (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (*.f64 z x)) (*.f64 y (*.f64 z x)))))))

simplify464.0ms (4.3%)

Algorithm
egg-herbie
Rules
3798×rational.json-simplify-35
2474×rational.json-simplify-2
2250×rational.json-simplify-53
968×rational.json-simplify-43
766×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040143
1101143
2225143
3557143
42316143
53732143
64407143
74711143
84952143
94955143
105926143
115926143
125926143
136162143
146398143
156634143
166870143
177106143
187106143
Stop Event
node limit
Counts
11 → 12
Calls
Call 1
Inputs
(+.f64 (*.f64 y (*.f64 z x)) 0)
(+.f64 0 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))
(-.f64 (*.f64 y (*.f64 z x)) 0)
(/.f64 (*.f64 y (*.f64 z x)) 1)
(/.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)
(/.f64 (*.f64 z (*.f64 y (*.f64 x 4))) 4)
(/.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)))) 64)
Outputs
(+.f64 (*.f64 y (*.f64 z x)) 0)
(*.f64 y (*.f64 z x))
(+.f64 0 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))
(*.f64 y (*.f64 z x))
(-.f64 (*.f64 y (*.f64 z x)) 0)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z x)) 1)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 z (*.f64 y (*.f64 x 4))) 4)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)
(*.f64 y (*.f64 z x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)))) 64)
(*.f64 y (*.f64 z x))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.3b
(*.f64 z (*.f64 y x))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite100.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1858×bool.json-1
1858×bool.json-2
1186×rational.json-1
1186×rational.json-2
1186×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17213
221413
347213
494513
5210213
6453413
7754113
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 z (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 z (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 y (+.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 z (*.f64 y x)) (*.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 z (*.f64 y x)) (*.f64 z (*.f64 y x)))))))

simplify509.0ms (4.7%)

Algorithm
egg-herbie
Rules
3886×rational.json-simplify-35
2786×rational.json-simplify-2
2696×rational.json-simplify-53
1032×rational.json-simplify-43
802×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042611
1103611
2234611
3586611
42446611
53902611
64586611
74891611
85137611
95140611
106234611
116234611
126234611
136475611
146716611
156957611
167198611
177439611
187439611
Stop Event
node limit
Counts
47 → 13
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 z (*.f64 y x)) 0)
(+.f64 0 (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 z (*.f64 y (*.f64 x 1/2))))
(-.f64 (*.f64 z (*.f64 y x)) 0)
(/.f64 (*.f64 z (*.f64 y x)) 1)
(/.f64 (*.f64 z (*.f64 y (+.f64 x x))) 2)
(/.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)
(/.f64 (*.f64 (*.f64 z (*.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)))) 64)
Outputs
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 z (*.f64 y x)) 0)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(+.f64 0 (*.f64 z (*.f64 y x)))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 z (*.f64 y (*.f64 x 1/2))))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(-.f64 (*.f64 z (*.f64 y x)) 0)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 z (*.f64 y x)) 1)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 z (*.f64 y (+.f64 x x))) 2)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 (*.f64 z (*.f64 y x)) 8) 8)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)) 16)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) 32)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (*.f64 y x)) 8)))) 64)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite105.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1212×bool.json-1
1212×bool.json-2
1192×rational.json-simplify-35
1166×rational.json-1
1166×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17713
223713
347413
492113
5198013
6431313
7751013
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 z) (*.f64 x 1/2)) (*.f64 (-.f64 1 z) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1 z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 z) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 z) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (-.f64 1 z)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1 z) x) (*.f64 (-.f64 1 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1 z) x) (*.f64 (-.f64 1 z) x))))))

simplify972.0ms (9.1%)

Algorithm
egg-herbie
Rules
7820×rational.json-simplify-41
3924×rational.json-simplify-35
2860×rational.json-simplify-2
1820×rational.json-simplify-53
722×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
041341
196319
2195319
3424319
41328319
52602319
63586319
73760319
83886319
94009319
104129319
114249319
124802319
135065319
145123319
155123319
165243319
175363319
185483319
195603319
205867319
216189319
226362319
236507319
246631319
256751319
266751319
277051319
287051319
Stop Event
node limit
Counts
23 → 21
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 (-.f64 1 z) x) 0)
(+.f64 0 (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 (-.f64 1 z) (*.f64 x 1/2)) (*.f64 (-.f64 1 z) (*.f64 x 1/2)))
(-.f64 (*.f64 (-.f64 1 z) x) 0)
(/.f64 (*.f64 (-.f64 1 z) x) 1)
(/.f64 (*.f64 (-.f64 1 z) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 1 z) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 z)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))))) 64)
Outputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 -1 (*.f64 x z))
(neg.f64 (*.f64 x z))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 -1 (*.f64 x z))
(neg.f64 (*.f64 x z))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 (-.f64 1 z) x) 0)
(*.f64 x (-.f64 1 z))
(+.f64 0 (*.f64 (-.f64 1 z) x))
(*.f64 x (-.f64 1 z))
(+.f64 (*.f64 (-.f64 1 z) (*.f64 x 1/2)) (*.f64 (-.f64 1 z) (*.f64 x 1/2)))
(*.f64 x (-.f64 1 z))
(-.f64 (*.f64 (-.f64 1 z) x) 0)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 (-.f64 1 z) x) 1)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 (-.f64 1 z) (+.f64 x x)) 2)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 (-.f64 1 z) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 z)) 8)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))) 16)
(*.f64 x (-.f64 1 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) 32)
(*.f64 x (-.f64 1 z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 z))))) 64)
(*.f64 x (-.f64 1 z))

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 13 computations (40.9% saved)

eval30.0ms (0.3%)

Compiler

Compiled 1625 to 957 computations (41.1% saved)

prune22.0ms (0.2%)

Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New1543157
Fresh022
Picked011
Done134
Total1559164
Error
0.0b
Counts
164 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
15.6b
(+.f64 (*.f64 z (neg.f64 x)) x)
16.7b
(+.f64 (*.f64 y (*.f64 z x)) x)
15.6b
(*.f64 (-.f64 1 z) x)
32.8b
(*.f64 z (*.f64 (-.f64 y 1) x))
47.7b
(*.f64 z (*.f64 y x))
47.1b
(*.f64 z (neg.f64 x))
48.2b
(*.f64 y (*.f64 z x))
17.5b
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
30.8b
x
Compiler

Compiled 75 to 51 computations (32% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.0b
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
Compiler

Compiled 27 to 11 computations (59.3% saved)

series5.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite90.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1654×bool.json-1
1654×bool.json-2
1594×rational.json-1
1054×bool.json-3
970×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01123
111723
232823
367623
4139523
5316623
6655523
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))))))))

simplify1.1s (10.2%)

Algorithm
egg-herbie
Rules
7086×rational.json-simplify-41
3856×rational.json-simplify-35
2810×rational.json-simplify-2
1596×rational.json-simplify-53
736×rational.json-simplify-43
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
045946
1104902
2204902
3502814
41949814
53183814
63939814
74070814
84163814
94251814
104338814
114766814
124991814
135271814
145426814
155513814
165513814
175600814
185687814
195774814
205942814
216188814
226347814
236480814
246574814
256662814
266749814
276836814
286923814
297010814
307097814
317417814
327417814
Stop Event
node limit
Counts
46 → 18
Calls
Call 1
Inputs
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))))
(+.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)))
(-.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)
(/.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 1)
(/.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) 2)) 2)
(/.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8))) 32)
Outputs
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(+.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 1/2)))
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(-.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 0)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 1)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) 2)) 2)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (*.f64 (-.f64 1 (*.f64 z (neg.f64 y))) (*.f64 x 4)) 4)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8) 8)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) 16)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 (*.f64 z (neg.f64 y)))) 8))) 32)
(*.f64 (-.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (-.f64 1 (*.f64 z (neg.f64 y))))
(*.f64 x (-.f64 (*.f64 y z) -1))
(*.f64 x (+.f64 1 (*.f64 y z)))

localize5.0ms (0%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize162.0ms (1.5%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
1 → 18
Calls

9 calls:

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

rewrite80.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1410×bool.json-1
1410×bool.json-2
1378×rational.json-1
1378×rational.json-2
1378×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18219
223419
351619
4107219
5246519
6527319
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 y (*.f64 z x)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (*.f64 z x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 1 (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (*.f64 y z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 y z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 1 (*.f64 y z))) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (*.f64 z (+.f64 x x))) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (*.f64 z (+.f64 y y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 (*.f64 y z)) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 y (*.f64 z x))) (+.f64 x (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 y (*.f64 z x))) (+.f64 x (*.f64 y (*.f64 z x))))))))

simplify290.0ms (2.7%)

Algorithm
egg-herbie
Rules
1976×rational.json-simplify-2
1616×rational.json-simplify-1
1360×rational.json-simplify-42
1330×rational.json-simplify-45
1138×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
086871
1181871
2414871
3892871
41315871
52746871
63622871
73796871
84031871
94334871
104826871
115043871
125551871
135851871
146136871
156499871
Stop Event
node limit
Counts
49 → 39
Calls
Call 1
Inputs
x
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
x
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(-.f64 (+.f64 x (*.f64 y (*.f64 z x))) 0)
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 1 (+.f64 x (*.f64 y (*.f64 z x))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2))
(*.f64 2 (+.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 y (*.f64 x 1/2)))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 1 (*.f64 y z)) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (*.f64 y z) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)
(*.f64 (+.f64 1 (*.f64 y z)) x)
(*.f64 (*.f64 2 (+.f64 1 (*.f64 y z))) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 z (+.f64 x x))) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2) 2)
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 y z))))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z (+.f64 y y)) 2))
(*.f64 (*.f64 (+.f64 1 (*.f64 y z)) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)))) 64)
Outputs
x
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 x z))
(*.f64 x (*.f64 y z))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 x z))
(*.f64 x (*.f64 y z))
x
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 x z))
(*.f64 x (*.f64 y z))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 x z))
(*.f64 x (*.f64 y z))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(-.f64 (+.f64 x (*.f64 y (*.f64 z x))) 0)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 x (+.f64 1 (*.f64 y z)))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 1 (+.f64 x (*.f64 y (*.f64 z x))))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 2 (+.f64 (*.f64 z (*.f64 y (*.f64 x 1/2))) (*.f64 x 1/2)))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 y (*.f64 x 1/2)))))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 1/2)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 1 (*.f64 y z)) 1/2))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (*.f64 y z) 1/2)))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (+.f64 1 (*.f64 y z)) x)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 2 (+.f64 1 (*.f64 y z))) (*.f64 x 1/2))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 z (+.f64 x x))) (+.f64 x x)))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1/2) 2)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 1 (*.f64 y z))))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z (+.f64 y y)) 2))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (*.f64 (+.f64 1 (*.f64 y z)) 1/2) (+.f64 x x))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(*.f64 (/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (+.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 2) 2)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8) 8)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)) 16)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) 32)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 z x))) 8)))) 64)
(*.f64 x (+.f64 (*.f64 y z) 1))
(+.f64 x (*.f64 x (*.f64 y z)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 6 computations (64.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite83.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1548×bool.json-1
1548×bool.json-2
1494×rational.json-1
1494×rational.json-2
1494×rational.json-4
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
0817
18317
223717
352117
4115017
5267313
6572313
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 z (neg.f64 x)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z (/.f64 x -2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (/.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (/.f64 z -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (-.f64 1 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (*.f64 x (-.f64 1 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 z (*.f64 x -2)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (-.f64 1 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (-.f64 1 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 z)) (*.f64 x (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 z)) (*.f64 x (-.f64 1 z)))))))

simplify410.0ms (3.8%)

Algorithm
egg-herbie
Rules
2470×rational.json-simplify-2
1770×rational.json-simplify-35
1588×rational.json-simplify-1
764×rational.json-simplify-53
706×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0871057
1181959
2413959
31310771
42523771
53412771
63993771
74212771
84441771
94728771
105117771
115612771
126471771
136944771
147546771
157887771
Stop Event
node limit
Counts
55 → 41
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(-.f64 (*.f64 x (-.f64 1 z)) 0)
(*.f64 x (-.f64 1 z))
(*.f64 (*.f64 x (-.f64 1 z)) 1)
(*.f64 1 (*.f64 x (-.f64 1 z)))
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))
(*.f64 2 (+.f64 (*.f64 z (/.f64 x -2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (/.f64 x -2))))
(*.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 z) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 z -2)))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 z)) 4))
(*.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 1/4)
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (*.f64 x (-.f64 1 z)) 2))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 x -2)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 x -2))))
(*.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) 2))
(*.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 1 z)) 4))
(*.f64 (/.f64 (*.f64 x (-.f64 1 z)) 4) 4)
(/.f64 (*.f64 x (-.f64 1 z)) 1)
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 2)
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8))) 32)
Outputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 z x))
(*.f64 -1 (*.f64 x z))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 z x))
(*.f64 -1 (*.f64 x z))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(-.f64 (*.f64 x (-.f64 1 z)) 0)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 x (-.f64 1 z))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 x (-.f64 1 z)) 1)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 1 (*.f64 x (-.f64 1 z)))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 2 (+.f64 (*.f64 z (/.f64 x -2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (/.f64 x -2))))
(*.f64 2 (+.f64 (*.f64 z (/.f64 x -2)) (*.f64 x 1/2)))
(*.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 1/2)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 z) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 z -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 z -2)))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 z)) 4))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 1/4)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (-.f64 1 z) x)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 1/2 (*.f64 (*.f64 x (-.f64 1 z)) 2))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 x -2)) (+.f64 x x)))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 x -2))))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) 2))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 1 z)) 4))
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(*.f64 (/.f64 (*.f64 x (-.f64 1 z)) 4) 4)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (*.f64 x (-.f64 1 z)) 1)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 2) 2)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 4) 4)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (*.f64 (*.f64 x (-.f64 1 z)) 8) 8)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) 16)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 z)) 8))) 32)
(+.f64 x (*.f64 -1 (*.f64 x z)))
(+.f64 x (*.f64 x (neg.f64 z)))
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 x z))

eval18.0ms (0.2%)

Compiler

Compiled 1085 to 571 computations (47.4% saved)

prune19.0ms (0.2%)

Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New1073110
Fresh011
Picked101
Done257
Total1109119
Error
0.0b
Counts
119 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
15.6b
(-.f64 x (*.f64 x z))
17.5b
(+.f64 x (*.f64 x (*.f64 y z)))
15.6b
(*.f64 (-.f64 1 z) x)
32.8b
(*.f64 z (*.f64 (-.f64 y 1) x))
47.7b
(*.f64 z (*.f64 y x))
47.1b
(*.f64 z (neg.f64 x))
48.2b
(*.f64 y (*.f64 z x))
49.0b
(*.f64 x (*.f64 y z))
30.8b
x
Compiler

Compiled 71 to 47 computations (33.8% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.6b
(*.f64 x (*.f64 y z))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite102.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1858×bool.json-1
1858×bool.json-2
1186×rational.json-1
1186×rational.json-2
1186×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17213
221413
347213
494513
5210213
6453413
7754113
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 x (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y (*.f64 z 1/2))) (*.f64 x (*.f64 y (*.f64 z 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 x (*.f64 y (+.f64 z z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x (*.f64 z 4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (*.f64 y z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 y z)) (*.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 y z)) (*.f64 x (*.f64 y z)))))))

simplify493.0ms (4.6%)

Algorithm
egg-herbie
Rules
3790×rational.json-simplify-35
2952×rational.json-simplify-2
2792×rational.json-simplify-53
1104×rational.json-simplify-43
862×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042611
1105611
2237611
3606611
42576611
54072611
64792611
75127611
85132611
95135611
106301611
116301611
126301611
136567611
146833611
157099611
167365611
177631611
187631611
Stop Event
node limit
Counts
47 → 13
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 x (*.f64 y z)) 0)
(+.f64 0 (*.f64 x (*.f64 y z)))
(+.f64 (*.f64 x (*.f64 y (*.f64 z 1/2))) (*.f64 x (*.f64 y (*.f64 z 1/2))))
(-.f64 (*.f64 x (*.f64 y z)) 0)
(/.f64 (*.f64 x (*.f64 y z)) 1)
(/.f64 (*.f64 x (*.f64 y (+.f64 z z))) 2)
(/.f64 (*.f64 y (*.f64 x (*.f64 z 4))) 4)
(/.f64 (*.f64 (*.f64 x (*.f64 y z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)))) 64)
Outputs
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 x (*.f64 y z)) 0)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 0 (*.f64 x (*.f64 y z)))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 x (*.f64 y (*.f64 z 1/2))) (*.f64 x (*.f64 y (*.f64 z 1/2))))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(-.f64 (*.f64 x (*.f64 y z)) 0)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 x (*.f64 y z)) 1)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 x (*.f64 y (+.f64 z z))) 2)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 y (*.f64 x (*.f64 z 4))) 4)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (*.f64 y z)) 8) 8)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)) 16)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) 32)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (*.f64 y z)) 8)))) 64)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite80.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1468×bool.json-1
1468×bool.json-2
1436×rational.json-1
1436×rational.json-2
1436×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18219
223619
353219
4110719
5251619
6540519
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 x (*.f64 x (*.f64 y z)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 x (*.f64 y z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 (*.f64 y z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (*.f64 x (*.f64 z 1/2))) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 x (*.f64 z 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 (*.f64 y z) 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (/.f64 (+.f64 (*.f64 y z) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 (*.f64 y (*.f64 z 1/2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 y z) 1)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (*.f64 y (+.f64 z z))) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y (+.f64 z z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (*.f64 y z) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (*.f64 y (+.f64 z z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y (+.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y z) 1) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 y z) 1) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 x (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 x (*.f64 y z))) (+.f64 x (*.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 x (*.f64 y z))) (+.f64 x (*.f64 x (*.f64 y z))))))))

simplify191.0ms (1.8%)

Algorithm
egg-herbie
Rules
2436×rational.json-simplify-2
1714×rational.json-simplify-1
1154×rational.json-simplify-51
1080×rational.json-simplify-53
894×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0871251
11851251
23841251
38611251
419091251
536621251
644651251
749421251
853891251
959161251
1066521251
1177721251
Stop Event
node limit
Counts
69 → 40
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) x)
(-.f64 (+.f64 x (*.f64 x (*.f64 y z))) 0)
(*.f64 x (+.f64 (*.f64 y z) 1))
(*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)
(*.f64 1 (+.f64 x (*.f64 x (*.f64 y z))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x (*.f64 z 1/2))) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 x (*.f64 z 1/2)))))
(*.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 1/2)
(*.f64 (+.f64 x x) (*.f64 (+.f64 (*.f64 y z) 1) 1/2))
(*.f64 (+.f64 x x) (/.f64 (+.f64 (*.f64 y z) 1) 2))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y (*.f64 z 1/2)) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4))
(*.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 (*.f64 y z) 1)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y (+.f64 z z))) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y (+.f64 z z)))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (*.f64 y z) 1)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y (+.f64 z z)) 2))
(*.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y (+.f64 z z))))
(*.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2) 2)
(*.f64 (*.f64 (+.f64 (*.f64 y z) 1) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)))
(*.f64 (/.f64 (+.f64 (*.f64 y z) 1) 2) (+.f64 x x))
(*.f64 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4) 4)
(/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8))) 32)
Outputs
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 y z)) 1) x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
x
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 z x)) x)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(-.f64 (+.f64 x (*.f64 x (*.f64 y z))) 0)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 y z) 1))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 1 (+.f64 x (*.f64 x (*.f64 y z))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x (*.f64 z 1/2))) (*.f64 x 1/2)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 x (*.f64 z 1/2)))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 1/2)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 (*.f64 y z) 1) 1/2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 x x) (/.f64 (+.f64 (*.f64 y z) 1) 2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y (*.f64 z 1/2)) 1/2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y (*.f64 z 1/2))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 4 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 1/4)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 2 (+.f64 (*.f64 y z) 1)) (*.f64 x 1/2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y (+.f64 z z))) (+.f64 x x)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y (+.f64 z z)))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (*.f64 y z) 1)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y (+.f64 z z)) 2))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 x 1/2) (+.f64 2 (*.f64 y (+.f64 z z))))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1/2) 2)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (*.f64 (+.f64 (*.f64 y z) 1) 1/2) (+.f64 x x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 1/4 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (/.f64 (+.f64 (*.f64 y z) 1) 2) (+.f64 x x))
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(*.f64 (/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 4) 4)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (+.f64 x (*.f64 x (*.f64 y z))) 1)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) 1))) 2)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 x (*.f64 (+.f64 (*.f64 y z) 1) 4)) 4)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8) 8)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8)) 16)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 x (*.f64 y z))) 8))) 32)
(*.f64 (+.f64 (*.f64 y z) 1) x)
(+.f64 x (*.f64 z (*.f64 y x)))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite111.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1308×bool.json-1
1308×bool.json-2
1266×rational.json-1
1266×rational.json-2
1266×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
16013
217813
339713
484013
5187613
6432013
Stop Event
node limit
Counts
1 → 51
Calls
Call 1
Inputs
(-.f64 x (*.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (neg.f64 (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (-.f64 x (*.f64 x z)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (+.f64 x 1) (*.f64 x z)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) (*.f64 x (/.f64 (-.f64 1 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x z)) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 x (*.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x z)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 x (*.f64 x z)) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (-.f64 1/2 (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x z) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 x (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (+.f64 z -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z -1) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x z) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 x (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 z 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x z) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 z -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 x z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x z) x) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x z) x) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x z) x))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 x (*.f64 x z)) (-.f64 x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 x (*.f64 x z)) (-.f64 x (*.f64 x z)))))))

simplify232.0ms (2.2%)

Algorithm
egg-herbie
Rules
2558×rational.json-simplify-2
2060×rational.json-simplify-35
1084×rational.json-simplify-51
1064×rational.json-simplify-1
778×rational.json-simplify-52
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01211019
12571013
25501007
313881007
425421007
539681007
653381007
763251007
869541007
971971007
1073951007
1175811007
Stop Event
node limit
Counts
75 → 62
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (neg.f64 (*.f64 x z)))
(+.f64 (-.f64 x (*.f64 x z)) 0)
(+.f64 0 (-.f64 x (*.f64 x z)))
(+.f64 1 (+.f64 (-.f64 x (*.f64 x z)) -1))
(+.f64 (neg.f64 (*.f64 x z)) x)
(+.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x z)))
(+.f64 (-.f64 (+.f64 x 1) (*.f64 x z)) -1)
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x z)))
(+.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) (*.f64 x (/.f64 (-.f64 1 z) 2)))
(+.f64 (-.f64 1 (*.f64 x z)) (+.f64 x -1))
(+.f64 -2 (+.f64 (-.f64 x (*.f64 x z)) 2))
(+.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x z)) -1))
(+.f64 (+.f64 (-.f64 x (*.f64 x z)) 2) -2)
(*.f64 x (-.f64 1 z))
(*.f64 (-.f64 x (*.f64 x z)) 1)
(*.f64 1 (-.f64 x (*.f64 x z)))
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 z 1/2)))
(*.f64 (-.f64 (*.f64 x z) x) -1)
(*.f64 4 (/.f64 (-.f64 x (*.f64 x z)) 4))
(*.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x z) 4)))
(*.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 1/4)
(*.f64 (neg.f64 x) (+.f64 z -1))
(*.f64 (+.f64 z -1) (neg.f64 x))
(*.f64 (-.f64 1 z) x)
(*.f64 -1 (-.f64 (*.f64 x z) x))
(*.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 z)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 z z)))
(*.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)
(*.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 x z)) 4))
(*.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 z 4))))
(*.f64 (/.f64 (-.f64 x (*.f64 x z)) 4) 4)
(/.f64 (-.f64 x (*.f64 x z)) 1)
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 2)
(/.f64 (-.f64 (*.f64 x z) x) -1)
(/.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 4)
(/.f64 (*.f64 x (*.f64 2 (+.f64 z -1))) -2)
(/.f64 (*.f64 (-.f64 x (*.f64 x z)) 8) 8)
(/.f64 (*.f64 (-.f64 (*.f64 x z) x) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x z) x) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4))) 8)
(neg.f64 (-.f64 (*.f64 x z) x))
Outputs
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (-.f64 1 z) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 x (neg.f64 (*.f64 x z)))
(*.f64 (-.f64 1 z) x)
(+.f64 (-.f64 x (*.f64 x z)) 0)
(*.f64 (-.f64 1 z) x)
(+.f64 0 (-.f64 x (*.f64 x z)))
(*.f64 (-.f64 1 z) x)
(+.f64 1 (+.f64 (-.f64 x (*.f64 x z)) -1))
(*.f64 (-.f64 1 z) x)
(+.f64 (neg.f64 (*.f64 x z)) x)
(*.f64 (-.f64 1 z) x)
(+.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x z)))
(*.f64 (-.f64 1 z) x)
(+.f64 (-.f64 (+.f64 x 1) (*.f64 x z)) -1)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x z)))
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 z x)))
(+.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 z)))
(*.f64 x (+.f64 1/2 (-.f64 1/2 z)))
(+.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) (*.f64 x (/.f64 (-.f64 1 z) 2)))
(*.f64 (-.f64 1 z) x)
(+.f64 (-.f64 1 (*.f64 x z)) (+.f64 x -1))
(*.f64 (-.f64 1 z) x)
(+.f64 -2 (+.f64 (-.f64 x (*.f64 x z)) 2))
(*.f64 (-.f64 1 z) x)
(+.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x z)) -1))
(*.f64 (-.f64 1 z) x)
(+.f64 (+.f64 (-.f64 x (*.f64 x z)) 2) -2)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 x (*.f64 x z)) 1)
(*.f64 (-.f64 1 z) x)
(*.f64 1 (-.f64 x (*.f64 x z)))
(*.f64 (-.f64 1 z) x)
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 z) 2)))
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 1/2)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 z) 1/2))
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 z 1/2)))
(*.f64 (-.f64 (*.f64 x z) x) -1)
(*.f64 (-.f64 1 z) x)
(*.f64 4 (/.f64 (-.f64 x (*.f64 x z)) 4))
(*.f64 (-.f64 1 z) x)
(*.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x z) 4)))
(*.f64 4 (-.f64 (/.f64 x 4) (*.f64 z (/.f64 x 4))))
(*.f64 4 (-.f64 (/.f64 x 4) (*.f64 x (/.f64 z 4))))
(*.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 1/4)
(*.f64 (-.f64 1 z) x)
(*.f64 (neg.f64 x) (+.f64 z -1))
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 z -1) (neg.f64 x))
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 -1 (-.f64 (*.f64 x z) x))
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 2 (-.f64 1 z)) (*.f64 x 1/2))
(*.f64 (-.f64 1 z) x)
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 z)))
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 z)))
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 z z)))
(*.f64 x (*.f64 1/2 (-.f64 2 (+.f64 z z))))
(*.f64 (*.f64 x (/.f64 (-.f64 1 z) 2)) 2)
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 (-.f64 1 z) 1/2) (+.f64 x x))
(*.f64 (-.f64 1 z) x)
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 x z)) 4))
(*.f64 (-.f64 1 z) x)
(*.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 z 4))))
(*.f64 (-.f64 1 z) x)
(*.f64 (/.f64 (-.f64 x (*.f64 x z)) 4) 4)
(*.f64 (-.f64 1 z) x)
(/.f64 (-.f64 x (*.f64 x z)) 1)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 z)) 2)
(*.f64 (-.f64 1 z) x)
(/.f64 (-.f64 (*.f64 x z) x) -1)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 (-.f64 x (*.f64 x z)) 4) 4)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (*.f64 2 (+.f64 z -1))) -2)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 (-.f64 x (*.f64 x z)) 8) 8)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 (-.f64 (*.f64 x z) x) 4) -4)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)) 16)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x z) x) 4)) -8)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) 32)
(*.f64 (-.f64 1 z) x)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) 4)
(*.f64 (-.f64 1 z) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x z)) 8)))) 64)
(*.f64 (-.f64 1 z) x)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x z) x) 4))) 8)
(*.f64 (-.f64 1 z) x)
(neg.f64 (-.f64 (*.f64 x z) x))
(*.f64 (-.f64 1 z) x)

eval20.0ms (0.2%)

Compiler

Compiled 1239 to 618 computations (50.1% saved)

prune22.0ms (0.2%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New1280128
Fresh011
Picked011
Done077
Total1289137
Error
0.0b
Counts
137 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
15.6b
(-.f64 x (*.f64 x z))
17.5b
(+.f64 x (*.f64 x (*.f64 y z)))
15.6b
(*.f64 (-.f64 1 z) x)
32.8b
(*.f64 z (*.f64 (-.f64 y 1) x))
47.7b
(*.f64 z (*.f64 y x))
47.1b
(*.f64 z (neg.f64 x))
48.2b
(*.f64 y (*.f64 z x))
49.0b
(*.f64 x (*.f64 y z))
30.8b
x
Compiler

Compiled 71 to 47 computations (33.8% saved)

regimes666.0ms (6.2%)

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

7 calls:

248.0ms
(-.f64 1 (*.f64 (-.f64 1 y) z))
116.0ms
x
114.0ms
(*.f64 (-.f64 1 y) z)
76.0ms
(-.f64 1 y)
75.0ms
z
Results
ErrorSegmentsBranch
0.1b3x
1.0b2y
0.8b2z
0.8b2(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
0.6b2(-.f64 1 (*.f64 (-.f64 1 y) z))
0.6b2(*.f64 (-.f64 1 y) z)
1.0b2(-.f64 1 y)
Compiler

Compiled 134 to 76 computations (43.3% saved)

bsearch73.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
66.0ms
3.2769661643416947e+25
1.7107292346824118e+31
7.0ms
-1.761988011957231e-25
-1.5200644051923748e-32
Results
71.0ms96×body256valid
0.0msbody256infinite
Compiler

Compiled 174 to 128 computations (26.4% saved)

regimes117.0ms (1.1%)

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

7 calls:

52.0ms
x
15.0ms
z
14.0ms
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
13.0ms
(*.f64 (-.f64 1 y) z)
9.0ms
(-.f64 1 (*.f64 (-.f64 1 y) z))
Results
ErrorSegmentsBranch
2.1b1x
2.1b1y
0.8b2z
0.8b2(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
0.6b2(-.f64 1 (*.f64 (-.f64 1 y) z))
0.6b2(*.f64 (-.f64 1 y) z)
2.1b1(-.f64 1 y)
Compiler

Compiled 125 to 71 computations (43.2% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
7.888958821790183e+254
2.3707718132217715e+265
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes268.0ms (2.5%)

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

3 calls:

133.0ms
y
111.0ms
x
21.0ms
z
Results
ErrorSegmentsBranch
8.4b9x
1.7b3y
0.8b3z
Compiler

Compiled 80 to 37 computations (53.8% saved)

bsearch71.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
9.261712477570579e-19
4.694638306719311e-14
56.0ms
-653034057.5230305
-308976705.1982169
Results
66.0ms208×body256valid
1.0ms13×body256infinite
Compiler

Compiled 304 to 209 computations (31.3% saved)

regimes177.0ms (1.6%)

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

3 calls:

84.0ms
y
74.0ms
x
17.0ms
z
Results
ErrorSegmentsBranch
12.3b3x
8.1b3y
7.9b3z
Compiler

Compiled 58 to 30 computations (48.3% saved)

bsearch32.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
3.653084709693039e-50
2.029635155442369e-41
16.0ms
-308976705.1982169
-0.21821666825575312
Results
28.0ms288×body256valid
1.0ms13×body256infinite
Compiler

Compiled 378 to 266 computations (29.6% saved)

regimes48.0ms (0.4%)

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

3 calls:

16.0ms
y
15.0ms
x
15.0ms
z
Results
ErrorSegmentsBranch
13.6b3x
8.1b3y
14.4b3z
Compiler

Compiled 51 to 26 computations (49% saved)

bsearch35.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
1.6242953698416968e+105
2.8961970009906374e+107
19.0ms
-2.46370079808997e+213
-6.705625494416842e+208
Results
26.0ms240×body256valid
3.0ms29×body256infinite
Compiler

Compiled 288 to 209 computations (27.4% saved)

regimes359.0ms (3.3%)

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

3 calls:

176.0ms
x
108.0ms
y
73.0ms
z
Results
ErrorSegmentsBranch
23.8b9x
17.8b11y
15.0b4z
Compiler

Compiled 35 to 20 computations (42.9% saved)

bsearch54.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
7892654644.1243725
31970661807064.457
22.0ms
3.653084709693039e-50
2.029635155442369e-41
17.0ms
-308976705.1982169
-0.21821666825575312
Results
48.0ms416×body256valid
1.0ms14×body256infinite
Compiler

Compiled 397 to 290 computations (27% saved)

regimes257.0ms (2.4%)

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

3 calls:

104.0ms
y
89.0ms
x
63.0ms
z
Results
ErrorSegmentsBranch
24.3b9x
18.6b11y
15.0b4z
Compiler

Compiled 30 to 18 computations (40% saved)

bsearch206.0ms (1.9%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
7892654644.1243725
31970661807064.457
175.0ms
3.653084709693039e-50
2.029635155442369e-41
16.0ms
-308976705.1982169
-0.21821666825575312
Results
199.0ms416×body256valid
2.0ms21×body256infinite
Compiler

Compiled 397 to 290 computations (27% saved)

regimes123.0ms (1.1%)

Accuracy

Total -45.3b remaining (-277.4%)

Threshold costs -45.3b (-277.4%)

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

3 calls:

90.0ms
x
25.0ms
y
8.0ms
z
Results
ErrorSegmentsBranch
26.0b9x
25.3b9y
16.3b3z
Compiler

Compiled 20 to 14 computations (30% saved)

bsearch111.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
94.0ms
0.00030174616857993265
28.184543323261337
17.0ms
-308976705.1982169
-0.21821666825575312
Results
106.0ms288×body256valid
2.0ms22×body256infinite
Compiler

Compiled 252 to 194 computations (23% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
077527
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -7136238463529799/178405961588244985132285746181186892047843328) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (if (<=.f64 x 50000000000000002382364672) (+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) 999999999999999988452569694641453289891412847766833896677368465428848130901034909295879619908945316559292587569958465674654992927728624557883489163749540246356891129106733591931304833693638565628182306078113383272782784390994049606075766012189756664840192) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (*.f64 z (*.f64 (-.f64 y 1) x)))
(if (<=.f64 z -310000000) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 7288990951312319/158456325028528675187087900672) (+.f64 x (*.f64 x (*.f64 y z))) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 z -20) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 7846377169233351/392318858461667547739736838950479151006397215279002157056) (-.f64 x (*.f64 x z)) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 y -67999999999999996941712501446266390027436822395373212950789985704530166892791082424800417602510103810990978865405775314817269048765408403563851587991165381625188869005811786295311846998874855825546383342960640) (*.f64 y (*.f64 z x)) (if (<=.f64 y 2050000000000000115327538881548278752048331595781511805365424983534616321282107773788261428279245782646784) (*.f64 (-.f64 1 z) x) (*.f64 z (*.f64 y x))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 3432790011539591/196159429230833773869868419475239575503198607639501078528) x (if (<=.f64 z 2700000000000) (*.f64 z (*.f64 y x)) (*.f64 z (neg.f64 x)))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 1632046451200537/12554203470773361527671578846415332832204710888928069025792) x (if (<=.f64 z 110000000000) (*.f64 x (*.f64 y z)) (*.f64 z (neg.f64 x)))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 1) x (*.f64 z (neg.f64 x))))
x
Outputs
(if (<=.f64 x -7136238463529799/178405961588244985132285746181186892047843328) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (if (<=.f64 x 50000000000000002382364672) (+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) 999999999999999988452569694641453289891412847766833896677368465428848130901034909295879619908945316559292587569958465674654992927728624557883489163749540246356891129106733591931304833693638565628182306078113383272782784390994049606075766012189756664840192) (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) (*.f64 z (*.f64 (-.f64 y 1) x)))
(if (<=.f64 z -310000000) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 7288990951312319/158456325028528675187087900672) (+.f64 x (*.f64 x (*.f64 y z))) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 z -20) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 7846377169233351/392318858461667547739736838950479151006397215279002157056) (-.f64 x (*.f64 x z)) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 y -67999999999999996941712501446266390027436822395373212950789985704530166892791082424800417602510103810990978865405775314817269048765408403563851587991165381625188869005811786295311846998874855825546383342960640) (*.f64 y (*.f64 z x)) (if (<=.f64 y 2050000000000000115327538881548278752048331595781511805365424983534616321282107773788261428279245782646784) (*.f64 (-.f64 1 z) x) (*.f64 z (*.f64 y x))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 3432790011539591/196159429230833773869868419475239575503198607639501078528) x (if (<=.f64 z 2700000000000) (*.f64 z (*.f64 y x)) (*.f64 z (neg.f64 x)))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 1632046451200537/12554203470773361527671578846415332832204710888928069025792) x (if (<=.f64 z 110000000000) (*.f64 x (*.f64 y z)) (*.f64 z (neg.f64 x)))))
(if (<=.f64 z -1) (*.f64 z (neg.f64 x)) (if (<=.f64 z 1) x (*.f64 z (neg.f64 x))))
x
Compiler

Compiled 235 to 146 computations (37.9% saved)

soundness0.0ms (0%)

end89.0ms (0.8%)

Compiler

Compiled 211 to 114 computations (46% saved)

Profiling

Loading profile data...