Details

Time bar (total: 8.4s)

analyze311.0ms (3.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
36.4%34.3%60.1%0.1%5.5%0%0%10
44.5%41.3%51.5%0.1%7%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample1.3s (15.7%)

Results
1.0s8256×body256valid
283.0ms1280×body256infinite
Bogosity

preprocess11.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 15 to 11 computations (26.7% saved)

simplify7.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 12 to 8 computations (33.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 12 to 8 computations (33.3% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series4.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

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

rewrite95.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1586×rational.json-simplify-35
1432×bool.json-1
1432×bool.json-2
1386×rational.json-1
1386×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
110638
229638
359038
4118638
5262638
6548938
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(*.f64 (-.f64 1 x) z)
(+.f64 (*.f64 x y) (*.f64 (-.f64 1 x) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1 x) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1 x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 (-.f64 1 x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 1 x) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1 x) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1 x) z) (*.f64 (-.f64 1 x) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1 x) z) (*.f64 (-.f64 1 x) z))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 x (/.f64 y 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (*.f64 (-.f64 1 x) (+.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)))))))

simplify679.0ms (8.1%)

Algorithm
egg-herbie
Rules
3792×rational.json-simplify-35
3288×rational.json-simplify-41
1522×rational.json-simplify-2
526×rational.json-simplify-1
454×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0951881
11971829
24631829
311241829
421321829
526861829
630291829
732141829
833681829
934921829
1036151829
1137381829
1240161829
1340361829
1440701829
1540881829
1641061829
1741191829
1842471829
1943711829
2070691829
2172351829
2274101829
2375541829
2477061829
2578441829
2679701829
Stop Event
node limit
Counts
93 → 59
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(*.f64 -1 (*.f64 z x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
z
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (-.f64 1 x) z) 0)
(+.f64 0 (*.f64 (-.f64 1 x) z))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2)))
(-.f64 (*.f64 (-.f64 1 x) z) 0)
(/.f64 (*.f64 (-.f64 1 x) z) 1)
(/.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) 2)
(/.f64 (*.f64 z (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1 x) z) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)))) 64)
(-.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 0)
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 x (/.f64 y 2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 1/2)
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (*.f64 (-.f64 1 x) (+.f64 z z))))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) (*.f64 x (+.f64 y y))))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2) 2)
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)
(/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)))) 64)
Outputs
z
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
(*.f64 z (-.f64 1 x))
z
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 (*.f64 z -1) y))
(*.f64 x (+.f64 (neg.f64 z) y))
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 z) y) x) z)
(+.f64 z (*.f64 x (+.f64 (*.f64 z -1) y)))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(+.f64 z (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x)))
(+.f64 z (*.f64 x (neg.f64 (+.f64 z (neg.f64 y)))))
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(+.f64 z (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x)))
(+.f64 z (*.f64 x (neg.f64 (+.f64 z (neg.f64 y)))))
(+.f64 (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))) z)
(+.f64 z (*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x)))
(+.f64 z (*.f64 x (neg.f64 (+.f64 z (neg.f64 y)))))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (-.f64 1 x) z) 0)
(*.f64 z (-.f64 1 x))
(+.f64 0 (*.f64 (-.f64 1 x) z))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2)))
(*.f64 z (-.f64 1 x))
(-.f64 (*.f64 (-.f64 1 x) z) 0)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) z) 1)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) 2)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 z (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 (*.f64 (-.f64 1 x) z) 8) 8)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)) 16)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) 32)
(*.f64 z (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) z) 8)))) 64)
(*.f64 z (-.f64 1 x))
(-.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 0)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 (-.f64 1 x) (*.f64 z 1/2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 x (/.f64 y 2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 (*.f64 z (-.f64 1 x)) 1/2)))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 z (*.f64 (-.f64 1 x) 1/2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 z 1/2)) (*.f64 x (/.f64 y 2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 (*.f64 z (-.f64 1 x)) 1/2)))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y 2)) (*.f64 z (*.f64 (-.f64 1 x) 1/2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 1/2)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 1/4)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 y y)) (*.f64 (-.f64 1 x) (+.f64 z z))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1 x) (+.f64 z z)) (*.f64 x (+.f64 y y))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1/2) 2)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 1)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 2) 2)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 4) 4)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8) 8)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)) 16)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) 32)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) z) (*.f64 x y)) 8)))) 64)
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))

eval12.0ms (0.1%)

Compiler

Compiled 704 to 402 computations (42.9% saved)

prune12.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New54559
Fresh000
Picked011
Done000
Total54660
Error
0.0b
Counts
60 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x y) (*.f64 (-.f64 1 x) z))
29.4b
(+.f64 (*.f64 x y) (*.f64 z (neg.f64 x)))
10.1b
(+.f64 (*.f64 x y) z)
0.0b
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
38.9b
(*.f64 y x)
29.4b
(*.f64 x (+.f64 (neg.f64 z) y))
Compiler

Compiled 102 to 66 computations (35.3% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 7 computations (73.1% saved)

series3.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

rewrite93.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1690×bool.json-1
1690×bool.json-2
1636×rational.json-1
1636×rational.json-2
1084×bool.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01040
110240
227440
358040
4127140
5296040
6631940
Stop Event
node limit
Counts
2 → 31
Calls
Call 1
Inputs
(*.f64 x (+.f64 (neg.f64 z) y))
(+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 (neg.f64 z) y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 (neg.f64 z) y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 (neg.f64 z) y)) (*.f64 x (+.f64 (neg.f64 z) y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 (neg.f64 z) y)) (*.f64 x (+.f64 (neg.f64 z) y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))))))))

simplify375.0ms (4.5%)

Algorithm
egg-herbie
Rules
5108×rational.json-simplify-41
2334×rational.json-simplify-35
1342×rational.json-simplify-2
698×rational.json-simplify-1
428×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0922401
11922255
24481907
310361863
420341863
526421863
629511863
732581863
834311863
935711863
1036971863
1138181863
1239381863
1340181863
1440281863
1540501863
1640671863
1740751863
1841981863
1943191863
Stop Event
node limit
Counts
103 → 61
Calls
Call 1
Inputs
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 x)) z)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
z
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(*.f64 (-.f64 y z) x)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(*.f64 (-.f64 y z) x)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)
(+.f64 0 (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)))
(-.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)
(/.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 1)
(/.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 4)) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8))) 32)
(-.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 0)
(*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)
(*.f64 1 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))))
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2))
(*.f64 2 (+.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 z 1/2)))
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2))))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) (+.f64 z z)))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)
(/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8))) 32)
Outputs
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (*.f64 x -1))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (*.f64 x -1))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (*.f64 x -1))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 (+.f64 1 (*.f64 -1 x)) z)
(*.f64 z (+.f64 1 (*.f64 x -1)))
(*.f64 z (+.f64 1 (neg.f64 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(*.f64 -1 (*.f64 (-.f64 x 1) z))
(*.f64 z (+.f64 1 (*.f64 x -1)))
(*.f64 z (+.f64 1 (neg.f64 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 y x) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
z
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(*.f64 (-.f64 y z) x)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(*.f64 (-.f64 y z) x)
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) x) z)
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 0 (*.f64 x (+.f64 (neg.f64 z) y)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)))
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(-.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 0)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 1)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) 2)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 4)) 4)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8) 8)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) 16)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 z) y)) 8))) 32)
(+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1)))
(+.f64 (*.f64 y x) (*.f64 z (neg.f64 x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(-.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 0)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 1 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 2 (+.f64 (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2)) (*.f64 z 1/2)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 x (*.f64 (+.f64 (neg.f64 z) y) 1/2))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 1/2)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 1/4)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x)) (+.f64 z z)))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 (neg.f64 z) y) (+.f64 x x))))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1/2) 2)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4))
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 1)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 2) 2)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 4) 4)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8) 8)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) 16)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8)) (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 (neg.f64 z) y))) 8))) 32)
(+.f64 z (+.f64 (*.f64 y x) (*.f64 z (*.f64 x -1))))
(+.f64 (*.f64 z (neg.f64 x)) (+.f64 z (*.f64 y x)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

rewrite93.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1618×bool.json-1
1618×bool.json-2
1586×rational.json-1
1586×rational.json-2
1586×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219613
341713
486113
5188513
6389913
7638113
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 z z) (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z))))))

simplify991.0ms (11.8%)

Algorithm
egg-herbie
Rules
5902×rational.json-simplify-51
1986×rational.json-simplify-35
1694×rational.json-simplify-2
1294×rational.json-simplify-1
1142×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055650
1112650
2282650
3692650
41113650
52521650
63369650
73427650
83457650
93483650
103509650
113535650
123584650
133610650
143636650
153662650
163688650
173714650
183740650
194579650
204945650
214977650
225007650
235036650
245065650
255094650
265123650
275152650
285181650
295210650
305239650
315268650
325297650
335326650
345355650
355384650
365413650
375442650
385471650
395500650
405500650
Stop Event
node limit
Counts
56 → 24
Calls
Call 1
Inputs
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(-.f64 (+.f64 (*.f64 x y) z) 0)
(*.f64 (+.f64 (*.f64 x y) z) 1)
(*.f64 1 (+.f64 (*.f64 x y) z))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 z 1/2)))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 x (+.f64 y y))))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)
(/.f64 (+.f64 (*.f64 x y) z) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64)
Outputs
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
z
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 y x))
(-.f64 (+.f64 (*.f64 x y) z) 0)
(+.f64 z (*.f64 y x))
(*.f64 (+.f64 (*.f64 x y) z) 1)
(+.f64 z (*.f64 y x))
(*.f64 1 (+.f64 (*.f64 x y) z))
(+.f64 z (*.f64 y x))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))
(+.f64 z (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 z 1/2)))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)
(+.f64 z (*.f64 y x))
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)
(+.f64 z (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))
(+.f64 z (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 x (+.f64 y y))))
(+.f64 z (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)
(+.f64 z (*.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))
(+.f64 z (*.f64 y x))
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)
(+.f64 z (*.f64 y x))
(/.f64 (+.f64 (*.f64 x y) z) 1)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 8) 8)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16)
(+.f64 z (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32)
(+.f64 z (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64)
(+.f64 z (*.f64 y x))

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 7 computations (69.6% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite89.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1730×bool.json-1
1730×bool.json-2
1676×rational.json-1
1142×bool.json-3
1014×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01023
110223
227619
359617
4130317
5303217
6647117
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 z (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 y (neg.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z (*.f64 x -1/2)) (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 z (*.f64 x -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 y (neg.f64 z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 (neg.f64 z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (/.f64 z -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (neg.f64 z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y (neg.f64 z))) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (*.f64 z -2)) (*.f64 (*.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (*.f64 x y) 2) (*.f64 x (*.f64 z -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (neg.f64 z)) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 y (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 y (neg.f64 z))) (*.f64 x (+.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 y (neg.f64 z))) (*.f64 x (+.f64 y (neg.f64 z))))))))

simplify1.0s (12.5%)

Algorithm
egg-herbie
Rules
12250×rational.json-simplify-44
3970×rational.json-simplify-35
1658×rational.json-simplify-2
1218×rational.json-simplify-1
688×rational.json-simplify-41
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0931183
11941161
24241149
313271149
424541149
535481149
641811149
743281149
844291149
945211149
1046131149
1148691149
1249711149
1350831149
1451891149
1552861149
1653811149
1753811149
1853811149
1954761149
2055711149
2156661149
2257611149
2358561149
2459511149
2560461149
2661411149
2762361149
2863311149
2964261149
3065211149
3166161149
3267111149
3368061149
3468061149
Stop Event
node limit
Counts
67 → 41
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(-.f64 (*.f64 x (+.f64 y (neg.f64 z))) 0)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)
(*.f64 1 (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2))
(*.f64 2 (+.f64 (*.f64 z (*.f64 x -1/2)) (*.f64 y (*.f64 x 1/2))))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 z (*.f64 x -1/2))))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y (neg.f64 z)) 1/2))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 z -1/2)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 (neg.f64 z) 1/2)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (/.f64 z -2)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 1/2)
(*.f64 4 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))
(*.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 1/4)
(*.f64 (+.f64 y (neg.f64 z)) x)
(*.f64 (*.f64 2 (+.f64 y (neg.f64 z))) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 z -2)) (*.f64 (*.f64 x y) 2)))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 x y) 2) (*.f64 x (*.f64 z -2))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y (neg.f64 z))))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) (+.f64 y y)))
(*.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2) 2)
(*.f64 (*.f64 (+.f64 y (neg.f64 z)) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))
(*.f64 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)
(/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8))) 32)
Outputs
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 (*.f64 -1 z) y) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x))
(*.f64 -1 (*.f64 x (+.f64 z (*.f64 -1 y))))
(*.f64 (+.f64 z (neg.f64 y)) (neg.f64 x))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 x (+.f64 y (neg.f64 z)))
(-.f64 (*.f64 x (+.f64 y (neg.f64 z))) 0)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 1 (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 2 (+.f64 (*.f64 z (*.f64 x -1/2)) (*.f64 y (*.f64 x 1/2))))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x 1/2)) (*.f64 z (*.f64 x -1/2))))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 y (neg.f64 z)) 1/2))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 z -1/2)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (*.f64 (neg.f64 z) 1/2)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 y 1/2) (/.f64 z -2)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 1/2)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 4 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 1/4)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (+.f64 y (neg.f64 z)) x)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 2 (+.f64 y (neg.f64 z))) (*.f64 x 1/2))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 z -2)) (*.f64 (*.f64 x y) 2)))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 -2 x)) (*.f64 (*.f64 y x) 2)))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 x -2)) (*.f64 y (*.f64 x 2))))
(*.f64 1/2 (*.f64 x (+.f64 (*.f64 z -2) (*.f64 y 2))))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 x y) 2) (*.f64 x (*.f64 z -2))))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 -2 x)) (*.f64 (*.f64 y x) 2)))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 x -2)) (*.f64 y (*.f64 x 2))))
(*.f64 1/2 (*.f64 x (+.f64 (*.f64 z -2) (*.f64 y 2))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y (neg.f64 z))))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 z -2) (+.f64 y y)))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1/2) 2)
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (*.f64 (+.f64 y (neg.f64 z)) 1/2) (+.f64 x x))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 (/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 x (+.f64 y (neg.f64 z))) 1)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 y (neg.f64 z)))) 2)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 4) 4)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8) 8)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) 16)
(*.f64 x (+.f64 y (neg.f64 z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 y (neg.f64 z))) 8))) 32)
(*.f64 x (+.f64 y (neg.f64 z)))

eval22.0ms (0.3%)

Compiler

Compiled 1435 to 595 computations (58.5% saved)

prune21.0ms (0.3%)

Pruning

8 alts after pruning (5 fresh and 3 done)

PrunedKeptTotal
New1405145
Fresh000
Picked011
Done325
Total1438151
Error
0.0b
Counts
151 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 y z) x) z)
29.4b
(+.f64 (*.f64 x y) (*.f64 z (neg.f64 x)))
10.1b
(+.f64 (*.f64 x y) z)
29.4b
(*.f64 (-.f64 y z) x)
23.4b
(*.f64 z (-.f64 1 x))
52.6b
(*.f64 z (neg.f64 x))
38.9b
(*.f64 y x)
33.2b
z
Compiler

Compiled 62 to 41 computations (33.9% saved)

localize5.0ms (0.1%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite115.0ms (1.4%)

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
6431013
7750713
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 z (-.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 (-.f64 1 x) 1/2)) (*.f64 z (*.f64 (-.f64 1 x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -2 (*.f64 (+.f64 x -1) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z (-.f64 1 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 z (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 z (-.f64 1 x)) (*.f64 z (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 z (-.f64 1 x)) (*.f64 z (-.f64 1 x)))))))

simplify1.2s (13.8%)

Algorithm
egg-herbie
Rules
5700×rational.json-simplify-35
2296×rational.json-simplify-2
1090×rational.json-simplify-53
710×rational.json-simplify-1
676×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
043341
1101319
2213319
3454319
41719319
53283319
64225319
74625319
84822319
95024319
105037319
115408319
125412319
135482319
145558319
155764319
165991319
176191319
186381319
196571319
206761319
216951319
226951319
237007319
247010319
257014319
267014319
277205319
287396319
297587319
307778319
317969319
Stop Event
node limit
Counts
23 → 22
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(*.f64 -1 (*.f64 z x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 z (-.f64 1 x)) 0)
(+.f64 0 (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 z (*.f64 (-.f64 1 x) 1/2)) (*.f64 z (*.f64 (-.f64 1 x) 1/2)))
(-.f64 (*.f64 z (-.f64 1 x)) 0)
(/.f64 (*.f64 z (-.f64 1 x)) 1)
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) z)) 2)
(/.f64 (*.f64 (-.f64 1 x) (*.f64 z 4)) 4)
(/.f64 (*.f64 (*.f64 z (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)))) 64)
Outputs
z
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (*.f64 x -1))
(neg.f64 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (*.f64 x -1))
(neg.f64 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (*.f64 z (*.f64 x -1)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 z (-.f64 1 x)) 0)
(*.f64 z (-.f64 1 x))
(+.f64 0 (*.f64 z (-.f64 1 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 z (*.f64 (-.f64 1 x) 1/2)) (*.f64 z (*.f64 (-.f64 1 x) 1/2)))
(*.f64 z (-.f64 1 x))
(-.f64 (*.f64 z (-.f64 1 x)) 0)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 z (-.f64 1 x)) 1)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) z)) 2)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (*.f64 z 4)) 4)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 (*.f64 z (-.f64 1 x)) 8) 8)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)) 16)
(*.f64 z (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) 32)
(*.f64 z (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 x)) 8)))) 64)
(*.f64 z (-.f64 1 x))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

9 calls:

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

rewrite79.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1338×bool.json-1
1338×bool.json-2
1296×rational.json-1
1296×rational.json-2
1296×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16913
219713
342913
488313
5195013
6447013
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (-.f64 y z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 y z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 (-.f64 y z) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 y z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y z) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y z) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 y z) 8) x) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 y z) x) (*.f64 (-.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 y z) x) (*.f64 (-.f64 y z) x))))))

simplify457.0ms (5.4%)

Algorithm
egg-herbie
Rules
4338×rational.json-simplify-2
2342×rational.json-simplify-53
2304×rational.json-simplify-35
1122×rational.json-simplify-51
1060×rational.json-simplify-1
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
043653
199611
2199503
3441503
41387503
53375503
63988503
74130503
84235503
94337503
104439503
115651503
125764503
135868503
145971503
155971503
166074503
176987503
187817503
Stop Event
node limit
Counts
35 → 20
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 (-.f64 y z) x) 0)
(+.f64 0 (*.f64 (-.f64 y z) x))
(+.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 (-.f64 y z) (*.f64 x 1/2)))
(-.f64 (*.f64 (-.f64 y z) x) 0)
(/.f64 (*.f64 (-.f64 y z) x) 1)
(/.f64 (*.f64 (-.f64 y z) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 y z) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 y z) 8) x) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)))) 64)
Outputs
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y))
(+.f64 (*.f64 z (neg.f64 x)) (*.f64 x y))
(*.f64 x (+.f64 y (neg.f64 z)))
(+.f64 (*.f64 (-.f64 y z) x) 0)
(*.f64 x (-.f64 y z))
(+.f64 0 (*.f64 (-.f64 y z) x))
(*.f64 x (-.f64 y z))
(+.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 (-.f64 y z) (*.f64 x 1/2)))
(*.f64 x (-.f64 y z))
(-.f64 (*.f64 (-.f64 y z) x) 0)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 (-.f64 y z) x) 1)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 (-.f64 y z) (+.f64 x x)) 2)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 (-.f64 y z) (*.f64 x 4)) 4)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 (*.f64 (-.f64 y z) 8) x) 8)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)) 16)
(*.f64 x (-.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) 32)
(*.f64 x (-.f64 y z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 y z) 8) x)))) 64)
(*.f64 x (-.f64 y z))

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
1 → 27
Calls

9 calls:

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

rewrite79.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1440×rational.json-simplify-35
1334×bool.json-1
1334×bool.json-2
1292×rational.json-1
1292×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
17919
221719
347019
499119
5222919
6482619
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 y z) x) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 (-.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 (-.f64 y z) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (-.f64 y z) (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (-.f64 y z) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 (-.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 (-.f64 y z) x)) (+.f64 z (*.f64 (-.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 (-.f64 y z) x)) (+.f64 z (*.f64 (-.f64 y z) x)))))))

simplify864.0ms (10.3%)

Algorithm
egg-herbie
Rules
5946×rational.json-simplify-51
2248×rational.json-simplify-35
1750×rational.json-simplify-2
1316×rational.json-simplify-1
1130×rational.json-simplify-49
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0741081
11501039
2335985
3756941
41189941
52618941
63486941
73563941
83608941
93648941
103688941
113728941
123794941
133834941
143874941
153914941
163954941
173994941
184034941
194873941
205264941
215313941
225360941
235406941
245452941
255498941
265544941
275590941
285636941
295682941
305728941
315774941
325774941
335820941
345866941
355912941
Stop Event
node limit
Counts
49 → 47
Calls
Call 1
Inputs
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(*.f64 y x)
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(*.f64 y x)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 x)) z)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
z
(*.f64 (-.f64 y z) x)
(*.f64 (-.f64 y z) x)
(-.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 0)
(*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)
(*.f64 1 (+.f64 z (*.f64 (-.f64 y z) x)))
(*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2))
(*.f64 2 (+.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 z 1/2)))
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 (-.f64 y z) (*.f64 x 1/2))))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 y z) (+.f64 x x)) (+.f64 z z)))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (-.f64 y z) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))
(*.f64 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)
(/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)))) 64)
Outputs
(+.f64 (*.f64 -1 (*.f64 z x)) z)
(+.f64 z (*.f64 -1 (*.f64 z x)))
(+.f64 z (neg.f64 (*.f64 z x)))
(+.f64 z (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1 (*.f64 z x))))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 z x)) z))
(+.f64 z (+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (+.f64 (neg.f64 (*.f64 z x)) (*.f64 x y)))
(+.f64 z (*.f64 x (+.f64 y (neg.f64 z))))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 (+.f64 1 (*.f64 -1 x)) z)
(*.f64 z (+.f64 1 (*.f64 -1 x)))
(*.f64 z (+.f64 1 (neg.f64 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1 x)) z) (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(*.f64 -1 (*.f64 (-.f64 x 1) z))
(*.f64 z (+.f64 1 (*.f64 -1 x)))
(*.f64 z (+.f64 1 (neg.f64 x)))
(*.f64 z (-.f64 1 x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 x 1) z)))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
z
(*.f64 (-.f64 y z) x)
(*.f64 x (-.f64 y z))
(*.f64 (-.f64 y z) x)
(*.f64 x (-.f64 y z))
(-.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 0)
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 1 (+.f64 z (*.f64 (-.f64 y z) x)))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 2 (+.f64 (*.f64 (-.f64 y z) (*.f64 x 1/2)) (*.f64 z 1/2)))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 (-.f64 y z) (*.f64 x 1/2))))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 1/2)
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 4 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 1/4)
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 y z) (+.f64 x x)) (+.f64 z z)))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (-.f64 y z) (+.f64 x x))))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1/2) 2)
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4))
(+.f64 z (*.f64 x (-.f64 y z)))
(*.f64 (/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 1)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 2) 2)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 4) 4)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8) 8)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)) 16)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) 32)
(+.f64 z (*.f64 x (-.f64 y z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (-.f64 y z) x)) 8)))) 64)
(+.f64 z (*.f64 x (-.f64 y z)))

eval16.0ms (0.2%)

Compiler

Compiled 1012 to 461 computations (54.4% saved)

prune15.0ms (0.2%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New1090109
Fresh011
Picked011
Done066
Total1098117
Error
0.0b
Counts
117 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 y z) x) z)
29.4b
(+.f64 (*.f64 x y) (*.f64 z (neg.f64 x)))
10.1b
(+.f64 (*.f64 x y) z)
29.4b
(*.f64 (-.f64 y z) x)
23.4b
(*.f64 z (-.f64 1 x))
52.6b
(*.f64 z (neg.f64 x))
38.9b
(*.f64 y x)
33.2b
z
Compiler

Compiled 62 to 41 computations (33.9% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done077
Total088
Error
0.0b
Counts
8 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 y z) x) z)
29.4b
(+.f64 (*.f64 x y) (*.f64 z (neg.f64 x)))
10.1b
(+.f64 (*.f64 x y) z)
29.4b
(*.f64 (-.f64 y z) x)
23.4b
(*.f64 z (-.f64 1 x))
52.6b
(*.f64 z (neg.f64 x))
38.9b
(*.f64 y x)
33.2b
z
Compiler

Compiled 62 to 41 computations (33.9% saved)

regimes28.0ms (0.3%)

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

4 calls:

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

Compiled 88 to 40 computations (54.5% saved)

regimes19.0ms (0.2%)

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

3 calls:

6.0ms
y
6.0ms
x
6.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
Compiler

Compiled 67 to 28 computations (58.2% saved)

regimes45.0ms (0.5%)

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

3 calls:

17.0ms
z
14.0ms
x
13.0ms
y
Results
ErrorSegmentsBranch
0.9b3x
4.5b3y
6.7b3z
Compiler

Compiled 44 to 25 computations (43.2% saved)

bsearch26.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
0.0001811043898030428
1.6029209110674583
12.0ms
-9484.193566313279
-363.13681862622144
Results
23.0ms240×body256valid
Compiler

Compiled 288 to 193 computations (33% saved)

regimes43.0ms (0.5%)

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

3 calls:

15.0ms
z
15.0ms
y
12.0ms
x
Results
ErrorSegmentsBranch
11.2b3x
14.3b3y
12.7b3z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch25.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
42259589.1703386
223138526262.75433
11.0ms
-1.7589876483236396e-41
-1.562504850185607e-42
Results
22.0ms224×body256valid
0.0msbody256infinite
Compiler

Compiled 270 to 195 computations (27.8% saved)

regimes41.0ms (0.5%)

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

3 calls:

14.0ms
z
13.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
19.7b4x
15.1b3y
14.2b3z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch23.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
4.1040655549638487e-172
3.2855037116788097e-170
11.0ms
-6.246783479415166e-81
-1.457442455814532e-81
Results
20.0ms208×body256valid
Compiler

Compiled 226 to 169 computations (25.2% saved)

regimes34.0ms (0.4%)

Accuracy

Total -41.8b remaining (-203.2%)

Threshold costs -41.8b (-203.2%)

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

3 calls:

12.0ms
z
12.0ms
y
9.0ms
x
Results
ErrorSegmentsBranch
20.5b3x
24.1b3y
22.5b3z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch25.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
1.7945274796161475e-25
1.9572672763730408e-20
10.0ms
-1.7589876483236396e-41
-1.562504850185607e-42
Results
23.0ms240×body256valid
Compiler

Compiled 198 to 148 computations (25.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042243
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 1 x) z))
(+.f64 (*.f64 (-.f64 y z) x) z)
(if (<=.f64 x -370) (*.f64 (-.f64 y z) x) (if (<=.f64 x 1) (+.f64 (*.f64 x y) z) (*.f64 (-.f64 y z) x)))
(if (<=.f64 x -1667355148462087/98079714615416886934934209737619787751599303819750539264) (*.f64 (-.f64 y z) x) (if (<=.f64 x 43000000) (*.f64 z (-.f64 1 x)) (*.f64 (-.f64 y z) x)))
(if (<=.f64 z -7475954625723185/4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873152) (*.f64 z (-.f64 1 x)) (if (<=.f64 z 7614394265021173/271942652322184754529069161754863937192751676276240344678115398758606622648756348282451201159797394262471336696958208519857448620878186106577674229128492724195241610667721328144244801536) (*.f64 y x) (*.f64 z (-.f64 1 x))))
(if (<=.f64 x -5884782876925013/392318858461667547739736838950479151006397215279002157056) (*.f64 y x) (if (<=.f64 x 15057660889751/10384593717069655257060992658440192) z (*.f64 y x)))
z
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 1 x) z))
(+.f64 (*.f64 (-.f64 y z) x) z)
(if (<=.f64 x -370) (*.f64 (-.f64 y z) x) (if (<=.f64 x 1) (+.f64 (*.f64 x y) z) (*.f64 (-.f64 y z) x)))
(if (<=.f64 x -1667355148462087/98079714615416886934934209737619787751599303819750539264) (*.f64 (-.f64 y z) x) (if (<=.f64 x 43000000) (*.f64 z (-.f64 1 x)) (*.f64 (-.f64 y z) x)))
(if (<=.f64 z -7475954625723185/4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873152) (*.f64 z (-.f64 1 x)) (if (<=.f64 z 7614394265021173/271942652322184754529069161754863937192751676276240344678115398758606622648756348282451201159797394262471336696958208519857448620878186106577674229128492724195241610667721328144244801536) (*.f64 y x) (*.f64 z (-.f64 1 x))))
(if (<=.f64 x -5884782876925013/392318858461667547739736838950479151006397215279002157056) (*.f64 y x) (if (<=.f64 x 15057660889751/10384593717069655257060992658440192) z (*.f64 y x)))
z
Compiler

Compiled 120 to 70 computations (41.7% saved)

soundness0.0ms (0%)

end45.0ms (0.5%)

Compiler

Compiled 102 to 46 computations (54.9% saved)

Profiling

Loading profile data...