Details

Time bar (total: 9.2s)

analyze351.0ms (3.8%)

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)

sample934.0ms (10.1%)

Results
797.0ms8256×body256valid
123.0ms1280×body256infinite
Bogosity

preprocess4.0ms (0%)

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

Compiled 12 to 8 computations (33.3% saved)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series4.0ms (0%)

Counts
2 → 60
Calls

15 calls:

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

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

simplify678.0ms (7.4%)

Algorithm
egg-herbie
Rules
3796×rational.json-simplify-35
3350×rational.json-simplify-41
1524×rational.json-simplify-2
522×rational.json-simplify-1
452×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0941881
11931829
24571829
311191829
421331829
526961829
630391829
732241829
833781829
935021829
1036251829
1137481829
1240271829
1340471829
1440811829
1540991829
1641171829
1741301829
1842581829
1943821829
2070881829
2172541829
2274291829
2375731829
2477251829
2578631829
2679891829
Stop Event
node limit
Counts
93 → 61
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
y
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 (-.f64 1 x) y) 0)
(+.f64 0 (*.f64 (-.f64 1 x) y))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2)))
(-.f64 (*.f64 (-.f64 1 x) y) 0)
(/.f64 (*.f64 (-.f64 1 x) y) 1)
(/.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1 x) y) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)))) 64)
(-.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 0)
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 x (/.f64 z 2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 1/2)
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 (-.f64 1 x) (+.f64 y y))))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) (*.f64 x (+.f64 z z))))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2) 2)
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)))) 64)
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
y
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 x (+.f64 z (*.f64 y -1)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 x (+.f64 z (*.f64 y -1))))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 -1 z))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 -1 z)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 (+.f64 y (neg.f64 z)))))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 -1 z)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 (+.f64 y (neg.f64 z)))))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 -1 z)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 (+.f64 y (neg.f64 z)))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(+.f64 (*.f64 (-.f64 1 x) y) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 (-.f64 1 x) y))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 (-.f64 1 x) y) 0)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) y) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (*.f64 (-.f64 1 x) y) 8) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)))) 64)
(*.f64 y (-.f64 1 x))
(-.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 0)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 x (/.f64 z 2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 y (/.f64 (-.f64 1 x) 2))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 x (/.f64 z 2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 z 2)) (*.f64 y (/.f64 (-.f64 1 x) 2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 1/2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 1/4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 (-.f64 1 x) (+.f64 y y))))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) (*.f64 x (+.f64 z z))))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2) 2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8) 8)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)) 16)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) 32)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)))) 64)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 x z))

eval12.0ms (0.1%)

Compiler

Compiled 720 to 408 computations (43.3% saved)

prune12.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New56561
Fresh000
Picked011
Done000
Total56662
Error
0.0b
Counts
62 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
29.2b
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
0.0b
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
12.2b
(+.f64 y (*.f64 x z))
41.0b
(*.f64 z x)
29.2b
(*.f64 x (+.f64 z (neg.f64 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 y (*.f64 x (+.f64 z (neg.f64 y))))
0.0b
(*.f64 x (+.f64 z (neg.f64 y)))
Compiler

Compiled 26 to 7 computations (73.1% saved)

series4.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

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

simplify372.0ms (4%)

Algorithm
egg-herbie
Rules
5036×rational.json-simplify-41
2322×rational.json-simplify-35
1348×rational.json-simplify-2
698×rational.json-simplify-1
422×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0902401
11902255
24411907
310291863
420251863
526211863
629351863
732411863
834141863
935541863
1036801863
1138011863
1239211863
1340031863
1440131863
1540351863
1640521863
1740601863
1841831863
1943041863
Stop Event
node limit
Counts
103 → 62
Calls
Call 1
Inputs
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
y
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(+.f64 0 (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)) (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)))
(-.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) 2)
(/.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 4)) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8))) 32)
(-.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 0)
(*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1)
(*.f64 1 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1/2))
(*.f64 2 (+.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4))
(*.f64 (/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 4)
(/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8)) (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8))) 32)
Outputs
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 x -1)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 x -1)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 x -1))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
y
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 (-.f64 z y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 0 (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)) (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)))
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) 2)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 4)) 4)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8) 8)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) 16)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8))) 32)
(+.f64 (*.f64 y (*.f64 x -1)) (*.f64 z x))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 z x))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 0)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1/2))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 2 (+.f64 (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2)) (*.f64 y 1/2)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 (+.f64 z (neg.f64 y)) 1/2))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2) 1/2)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 4 (/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 1/4)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) (+.f64 y y)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1/2) 2)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 4)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 1)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 2) 2)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 4) 4)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8) 8)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8)) 16)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8)) (*.f64 2 (*.f64 (+.f64 y (*.f64 x (+.f64 z (neg.f64 y)))) 8))) 32)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 y (*.f64 x -1))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 z x) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite97.0ms (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 y (*.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 x z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 x z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 y (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 y (*.f64 x z)) (+.f64 y (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 y (*.f64 x z)) (+.f64 y (*.f64 x z)))))))

simplify989.0ms (10.7%)

Algorithm
egg-herbie
Rules
5918×rational.json-simplify-51
1976×rational.json-simplify-35
1694×rational.json-simplify-2
1292×rational.json-simplify-1
1114×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055650
1113650
2284650
3696650
41105650
52511650
63357650
73415650
83445650
93471650
103497650
113523650
123572650
133598650
143624650
153650650
163676650
173702650
183728650
194546650
204914650
214946650
224976650
235005650
245034650
255063650
265092650
275121650
285150650
295179650
305208650
315237650
325266650
335295650
345324650
355353650
365382650
375411650
385440650
395469650
405469650
Stop Event
node limit
Counts
56 → 24
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(-.f64 (+.f64 y (*.f64 x z)) 0)
(*.f64 (+.f64 y (*.f64 x z)) 1)
(*.f64 1 (+.f64 y (*.f64 x z)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 z 1/2))))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 y (*.f64 x z)) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x z)) 2))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (+.f64 y y)))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x z)) 4))
(*.f64 (/.f64 (+.f64 y (*.f64 x z)) 4) 4)
(/.f64 (+.f64 y (*.f64 x z)) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)))) 64)
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
y
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
y
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
y
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
y
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(+.f64 (*.f64 z x) y)
(+.f64 y (*.f64 z x))
(-.f64 (+.f64 y (*.f64 x z)) 0)
(+.f64 y (*.f64 z x))
(*.f64 (+.f64 y (*.f64 x z)) 1)
(+.f64 y (*.f64 z x))
(*.f64 1 (+.f64 y (*.f64 x z)))
(+.f64 y (*.f64 z x))
(*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 1/2))
(+.f64 y (*.f64 z x))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 x (*.f64 z 1/2))))
(+.f64 y (*.f64 z x))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 1/2)
(+.f64 y (*.f64 z x))
(*.f64 4 (/.f64 (+.f64 y (*.f64 x z)) 4))
(+.f64 y (*.f64 z x))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 1/4)
(+.f64 y (*.f64 z x))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 x z)) 2))
(+.f64 y (*.f64 z x))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (+.f64 y y)))
(+.f64 y (*.f64 z x))
(*.f64 (*.f64 (+.f64 y (*.f64 x z)) 1/2) 2)
(+.f64 y (*.f64 z x))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 x z)) 4))
(+.f64 y (*.f64 z x))
(*.f64 (/.f64 (+.f64 y (*.f64 x z)) 4) 4)
(+.f64 y (*.f64 z x))
(/.f64 (+.f64 y (*.f64 x z)) 1)
(+.f64 y (*.f64 z x))
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 2) 2)
(+.f64 y (*.f64 z x))
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 4) 4)
(+.f64 y (*.f64 z x))
(/.f64 (*.f64 (+.f64 y (*.f64 x z)) 8) 8)
(+.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)) 16)
(+.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) 32)
(+.f64 y (*.f64 z x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 x z)) 8)))) 64)
(+.f64 y (*.f64 z x))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 7 computations (69.6% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

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

simplify1.1s (12.2%)

Algorithm
egg-herbie
Rules
12292×rational.json-simplify-44
3928×rational.json-simplify-35
1676×rational.json-simplify-2
1370×rational.json-simplify-1
846×rational.json-simplify-41
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0941591
11921457
23961121
312341121
423481121
535271121
643021121
744751121
845901121
946851121
1047751121
1148651121
1250871121
1351901121
1453031121
1554041121
1654961121
1755881121
1855881121
1955881121
2055881121
2156801121
2257721121
2358641121
2459561121
2560481121
2661401121
2762321121
2863241121
2964161121
3065081121
3166001121
3266921121
3367841121
3468761121
3569681121
3669681121
Stop Event
node limit
Counts
67 → 44
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(*.f64 1 (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 2 (*.f64 x (/.f64 (+.f64 z (neg.f64 y)) 2)))
(*.f64 2 (+.f64 (*.f64 (*.f64 x z) 1/2) (*.f64 y (*.f64 x -1/2))))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x -1/2)) (*.f64 (*.f64 x z) 1/2)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 z (neg.f64 y)) 1/2))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (*.f64 (neg.f64 y) 1/2)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (/.f64 y -2)))
(*.f64 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))) 1/2)
(*.f64 4 (/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4))
(*.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 1/4)
(*.f64 (+.f64 z (neg.f64 y)) x)
(*.f64 (*.f64 2 (+.f64 z (neg.f64 y))) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 x (*.f64 y -2))))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y -2)) (*.f64 x (+.f64 z z))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y -2) (+.f64 z z)))
(*.f64 (*.f64 x (/.f64 (+.f64 z (neg.f64 y)) 2)) 2)
(*.f64 (*.f64 (+.f64 z (neg.f64 y)) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4))
(*.f64 (/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 4)
(/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(/.f64 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8))) 32)
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (*.f64 x (+.f64 z (neg.f64 y))) 0)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1 (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 2 (*.f64 x (/.f64 (+.f64 z (neg.f64 y)) 2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 2 (+.f64 (*.f64 (*.f64 x z) 1/2) (*.f64 y (*.f64 x -1/2))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 2 (+.f64 (*.f64 y (*.f64 x -1/2)) (*.f64 (*.f64 x z) 1/2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 z (neg.f64 y)) 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (*.f64 y -1/2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (*.f64 (neg.f64 y) 1/2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (+.f64 (*.f64 z 1/2) (/.f64 y -2)))
(*.f64 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))) 1/2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 4 (/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 1/4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (neg.f64 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 2 (+.f64 z (neg.f64 y))) (*.f64 x 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/2 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 x (*.f64 y -2))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y -2)) (*.f64 x (+.f64 z z))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y -2) (+.f64 z z)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x (/.f64 (+.f64 z (neg.f64 y)) 2)) 2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 (+.f64 z (neg.f64 y)) 1/2) (+.f64 x x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (+.f64 z (neg.f64 y))) 1)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 x x) (+.f64 z (neg.f64 y))) 2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 4) 4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8) 8)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) 16)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8)) (*.f64 2 (*.f64 (*.f64 x (+.f64 z (neg.f64 y))) 8))) 32)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))

eval23.0ms (0.2%)

Compiler

Compiled 1445 to 568 computations (60.7% saved)

prune24.0ms (0.3%)

Pruning

10 alts after pruning (6 fresh and 4 done)

PrunedKeptTotal
New1446150
Fresh000
Picked011
Done235
Total14610156
Error
0.0b
Counts
156 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
29.2b
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
21.4b
(+.f64 y (*.f64 y (neg.f64 x)))
12.2b
(+.f64 y (*.f64 x z))
29.2b
(*.f64 (-.f64 z y) x)
41.0b
(*.f64 z x)
21.4b
(*.f64 y (-.f64 1 x))
50.2b
(*.f64 y (neg.f64 x))
33.4b
y
Compiler

Compiled 125 to 83 computations (33.6% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
2 → 51
Calls

18 calls:

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

rewrite82.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
0832
17932
221732
347032
499132
5222932
6482632
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 z y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 z y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 z y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 z y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 z y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 z y) x) (*.f64 (-.f64 z y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 z y) x) (*.f64 (-.f64 z y) x))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 z y) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (-.f64 z y) (+.f64 x x)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (-.f64 z y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 y (*.f64 (-.f64 z y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 y (*.f64 (-.f64 z y) x)) (+.f64 y (*.f64 (-.f64 z y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 y (*.f64 (-.f64 z y) x)) (+.f64 y (*.f64 (-.f64 z y) x)))))))

simplify422.0ms (4.6%)

Algorithm
egg-herbie
Rules
4036×rational.json-simplify-41
2706×rational.json-simplify-35
1494×rational.json-simplify-2
608×rational.json-simplify-1
464×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0901734
11951650
24701488
311291444
421841444
527881444
631151444
733711444
835311444
936631444
1037901444
1139171444
1242121444
1342351444
1442751444
1542941444
1643211444
1743441444
1844791444
1946091444
2078521444
Stop Event
node limit
Counts
84 → 64
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
y
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) 0)
(+.f64 0 (*.f64 (-.f64 z y) x))
(+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))
(-.f64 (*.f64 (-.f64 z y) x) 0)
(/.f64 (*.f64 (-.f64 z y) x) 1)
(/.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 z y) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)))) 64)
(-.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)
(*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(*.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))
(*.f64 2 (+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 z y) (*.f64 x 1/2))))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 z y) (+.f64 x x)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (-.f64 z y) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(*.f64 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)
Outputs
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
y
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(+.f64 (*.f64 (-.f64 z y) x) 0)
(*.f64 x (-.f64 z y))
(+.f64 0 (*.f64 (-.f64 z y) x))
(*.f64 x (-.f64 z y))
(+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))
(*.f64 x (-.f64 z y))
(-.f64 (*.f64 (-.f64 z y) x) 0)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) x) 1)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (*.f64 (-.f64 z y) x) 8) 8)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)) 16)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) 32)
(*.f64 x (-.f64 z y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 z y) x) 8)))) 64)
(*.f64 x (-.f64 z y))
(-.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 2 (+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 y 1/2)))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 (-.f64 z y) (*.f64 x 1/2))))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 4 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 z y) (+.f64 x x)) (+.f64 y y)))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (-.f64 z y) (+.f64 x x))))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)
(+.f64 y (*.f64 x (-.f64 z y)))

localize5.0ms (0%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize494.0ms (5.4%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite104.0ms (1.1%)

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

Useful iterations: 0 (0.0ms)

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

simplify1.3s (14.5%)

Algorithm
egg-herbie
Rules
5704×rational.json-simplify-35
2278×rational.json-simplify-2
1094×rational.json-simplify-53
722×rational.json-simplify-1
672×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042341
1101319
2212319
3452319
41722319
53283319
64229319
74631319
84828319
95030319
105043319
115403319
125407319
135477319
145554319
155760319
165987319
176187319
186377319
196567319
206757319
216947319
226947319
237004319
247007319
257011319
267011319
277202319
287393319
297584319
307775319
317966319
Stop Event
node limit
Counts
23 → 21
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(+.f64 0 (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) y)) 2)
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 -2 (*.f64 (+.f64 x -1) y)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)))) 64)
(*.f64 y (-.f64 1 x))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 6 computations (64.7% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite149.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
1568×bool.json-1
1568×bool.json-2
1514×rational.json-1
1514×rational.json-2
1514×rational.json-3
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0817
18317
223917
353813
4120513
5274113
6585013
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 y (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (-.f64 1 x)) (*.f64 y (-.f64 1 x)))))))

simplify364.0ms (4%)

Algorithm
egg-herbie
Rules
2084×rational.json-simplify-2
1702×rational.json-simplify-35
1572×rational.json-simplify-1
1128×rational.json-simplify-48
1032×rational.json-simplify-53
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0831101
1170973
2373973
31177773
42225773
52992773
63669773
73885773
84058773
94219773
104485773
114843773
125532773
136436773
146760773
157315773
167480773
177587773
Stop Event
node limit
Counts
57 → 45
Calls
Call 1
Inputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))
(*.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))
(*.f64 (-.f64 1 x) y)
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))
(*.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
Outputs
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 -1 x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1 (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 2 (+.f64 (*.f64 y 1/2) (*.f64 y (/.f64 x -2))))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 1/2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (/.f64 (-.f64 1 x) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 1/2 (/.f64 x -2)))
(*.f64 2 (+.f64 (*.f64 y (/.f64 x -2)) (*.f64 y 1/2)))
(*.f64 2 (*.f64 y (+.f64 (/.f64 x -2) 1/2)))
(*.f64 y (*.f64 (+.f64 (/.f64 x -2) 1/2) 2))
(*.f64 y (*.f64 2 (+.f64 (/.f64 x -2) 1/2)))
(*.f64 (+.f64 y y) (+.f64 (/.f64 x -2) 1/2))
(*.f64 (-.f64 1 x) y)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (/.f64 (*.f64 y (-.f64 1 x)) 4))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 1/4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (*.f64 (*.f64 y (-.f64 1 x)) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 x -2)) (+.f64 y y)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 y (*.f64 x -2))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (+.f64 (*.f64 x -2) 2))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (+.f64 2 (*.f64 x -2)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (*.f64 y (*.f64 (-.f64 1 x) 4)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (-.f64 1 x) 2) (+.f64 y y))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (*.f64 y (-.f64 1 x)) 4) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 2) 2)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (*.f64 y (-.f64 1 x)) 8) 8)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) 16)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8)) (*.f64 2 (*.f64 (*.f64 y (-.f64 1 x)) 8))) 32)
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))

eval25.0ms (0.3%)

Compiler

Compiled 1365 to 696 computations (49% saved)

prune21.0ms (0.2%)

Pruning

10 alts after pruning (2 fresh and 8 done)

PrunedKeptTotal
New1501151
Fresh011
Picked101
Done088
Total15110161
Error
0.0b
Counts
161 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(-.f64 y (*.f64 y x))
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
29.2b
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
12.2b
(+.f64 y (*.f64 x z))
29.2b
(*.f64 (-.f64 z y) x)
41.0b
(*.f64 z x)
21.4b
(*.f64 y (-.f64 1 x))
50.2b
(*.f64 y (neg.f64 x))
33.4b
y
Compiler

Compiled 82 to 54 computations (34.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite71.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

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

simplify240.0ms (2.6%)

Algorithm
egg-herbie
Rules
2562×rational.json-simplify-2
2086×rational.json-simplify-35
1062×rational.json-simplify-1
1034×rational.json-simplify-51
776×rational.json-simplify-52
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01201019
12571013
25471007
313791007
425301007
539481007
653211007
763081007
869381007
971811007
1073791007
1175651007
Stop Event
node limit
Counts
75 → 64
Calls
Call 1
Inputs
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 (-.f64 y (*.f64 y x)) 0)
(+.f64 0 (-.f64 y (*.f64 y x)))
(+.f64 1 (+.f64 (-.f64 y (*.f64 y x)) -1))
(+.f64 (neg.f64 (*.f64 y x)) y)
(+.f64 -1 (-.f64 (+.f64 y 1) (*.f64 y x)))
(+.f64 (-.f64 (+.f64 y 1) (*.f64 y x)) -1)
(+.f64 (*.f64 y 1/2) (-.f64 (*.f64 y 1/2) (*.f64 y x)))
(+.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) (*.f64 y (/.f64 (-.f64 1 x) 2)))
(+.f64 (-.f64 1 (*.f64 y x)) (+.f64 y -1))
(+.f64 -2 (+.f64 (-.f64 y (*.f64 y x)) 2))
(+.f64 (+.f64 y 1) (+.f64 (neg.f64 (*.f64 y x)) -1))
(+.f64 (+.f64 (-.f64 y (*.f64 y x)) 2) -2)
(*.f64 y (-.f64 1 x))
(*.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 1 (-.f64 y (*.f64 y x)))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 1/2)
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 (+.f64 y y) (-.f64 1/2 (*.f64 x 1/2)))
(*.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 4 (/.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 4 (-.f64 (/.f64 y 4) (/.f64 (*.f64 y x) 4)))
(*.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 1/4)
(*.f64 (neg.f64 y) (+.f64 x -1))
(*.f64 (+.f64 x -1) (neg.f64 y))
(*.f64 (-.f64 1 x) y)
(*.f64 -1 (-.f64 (*.f64 y x) y))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 (+.f64 y y) (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 (*.f64 y 1/2) (-.f64 2 (+.f64 x x)))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 1/4 (-.f64 (*.f64 y 4) (*.f64 y (*.f64 x 4))))
(*.f64 (/.f64 (-.f64 y (*.f64 y x)) 4) 4)
(/.f64 (-.f64 y (*.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 2)
(/.f64 (-.f64 (*.f64 y x) y) -1)
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 4)
(/.f64 (*.f64 y (*.f64 2 (+.f64 x -1))) -2)
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 8) 8)
(/.f64 (*.f64 (-.f64 (*.f64 y x) y) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) y) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4))) 8)
(neg.f64 (-.f64 (*.f64 y x) y))
Outputs
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 y (*.f64 y x)) 0)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 0 (-.f64 y (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 1 (+.f64 (-.f64 y (*.f64 y x)) -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (neg.f64 (*.f64 y x)) y)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 -1 (-.f64 (+.f64 y 1) (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 (+.f64 y 1) (*.f64 y x)) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (*.f64 y 1/2) (-.f64 (*.f64 y 1/2) (*.f64 y x)))
(+.f64 (*.f64 y 1/2) (*.f64 y (-.f64 1/2 x)))
(*.f64 y (+.f64 1/2 (-.f64 1/2 x)))
(+.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (-.f64 1 (*.f64 y x)) (+.f64 y -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 -2 (+.f64 (-.f64 y (*.f64 y x)) 2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (+.f64 y 1) (+.f64 (neg.f64 (*.f64 y x)) -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(+.f64 (+.f64 (-.f64 y (*.f64 y x)) 2) -2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1 (-.f64 y (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 2 (*.f64 y (/.f64 (-.f64 1 x) 2)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 1/2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (*.f64 (-.f64 1 x) 1/2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 y y) (-.f64 1/2 (*.f64 x 1/2)))
(*.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (/.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 4 (-.f64 (/.f64 y 4) (/.f64 (*.f64 y x) 4)))
(*.f64 4 (-.f64 (/.f64 y 4) (*.f64 x (/.f64 y 4))))
(*.f64 4 (-.f64 (/.f64 y 4) (*.f64 y (/.f64 x 4))))
(*.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 1/4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (neg.f64 y) (+.f64 x -1))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (+.f64 x -1) (neg.f64 y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (-.f64 1 x) y)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 y x) y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 x)) (*.f64 y 1/2))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 y y) (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (*.f64 2 (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 y 1/2) (-.f64 2 (+.f64 x x)))
(*.f64 1/2 (*.f64 y (-.f64 2 (+.f64 x x))))
(*.f64 y (*.f64 1/2 (-.f64 2 (+.f64 x x))))
(*.f64 (*.f64 y (/.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 x) 1/2) (+.f64 y y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (*.f64 (-.f64 y (*.f64 y x)) 4))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 y 4) (*.f64 y (*.f64 x 4))))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(*.f64 (/.f64 (-.f64 y (*.f64 y x)) 4) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (-.f64 y (*.f64 y x)) 1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (+.f64 y y) (-.f64 1 x)) 2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (-.f64 (*.f64 y x) y) -1)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 4) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 y (*.f64 2 (+.f64 x -1))) -2)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 y (*.f64 y x)) 8) 8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 y x) y) 4) -4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)) 16)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 y x) y) 4)) -8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) 32)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) 4)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 y (*.f64 y x)) 8)))) 64)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 y x) y) 4))) 8)
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))
(neg.f64 (-.f64 (*.f64 y x) y))
(*.f64 y (-.f64 1 x))
(-.f64 y (*.f64 y x))

eval11.0ms (0.1%)

Compiler

Compiled 560 to 301 computations (46.3% saved)

prune58.0ms (0.6%)

Pruning

10 alts after pruning (1 fresh and 9 done)

PrunedKeptTotal
New64064
Fresh011
Picked011
Done088
Total641074
Error
0.0b
Counts
74 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
21.4b
(-.f64 y (*.f64 y x))
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
29.2b
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
12.2b
(+.f64 y (*.f64 x z))
29.2b
(*.f64 (-.f64 z y) x)
41.0b
(*.f64 z x)
21.4b
(*.f64 y (-.f64 1 x))
50.2b
(*.f64 y (neg.f64 x))
33.4b
y
Compiler

Compiled 82 to 54 computations (34.1% saved)

regimes33.0ms (0.4%)

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

4 calls:

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

Compiled 99 to 43 computations (56.6% saved)

regimes23.0ms (0.3%)

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

3 calls:

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

Compiled 78 to 31 computations (60.3% saved)

regimes177.0ms (1.9%)

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

3 calls:

143.0ms
y
16.0ms
x
15.0ms
z
Results
ErrorSegmentsBranch
0.7b3x
6.3b3y
5.2b3z
Compiler

Compiled 55 to 28 computations (49.1% saved)

bsearch62.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
10.0ms
2.391228311773719e-5
0.0001811043898030428
52.0ms
-363.13681862622144
-8.810884392679543e-13
Results
59.0ms256×body256valid
Compiler

Compiled 306 to 205 computations (33% saved)

regimes128.0ms (1.4%)

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

3 calls:

88.0ms
x
27.0ms
z
12.0ms
y
Results
ErrorSegmentsBranch
11.2b3x
10.6b3y
11.8b5z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch99.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
81.0ms
1.936529178348183e-161
1.6377621794341261e-153
17.0ms
-7.050002815634069e-14
-4.118788611373112e-20
Results
96.0ms288×body256valid
Compiler

Compiled 342 to 247 computations (27.8% saved)

regimes41.0ms (0.4%)

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

3 calls:

17.0ms
z
11.0ms
x
11.0ms
y
Results
ErrorSegmentsBranch
20.2b3x
12.7b3y
12.6b5z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch58.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
3.234922463260962e+73
5.295571301083286e+91
15.0ms
6.178159011596343e+50
1.8664793347688735e+54
14.0ms
4.514528403605137e+29
2.397698387892191e+31
10.0ms
-6.5269247189011654e+63
-2.829387511388722e+63
Results
50.0ms480×body256valid
1.0ms12×body256infinite
Compiler

Compiled 498 to 373 computations (25.1% saved)

regimes52.0ms (0.6%)

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

3 calls:

21.0ms
z
16.0ms
y
14.0ms
x
Results
ErrorSegmentsBranch
20.7b4x
20.8b5y
23.7b5z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch40.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
3.334380048346979e-16
1.1963530928801275e-10
9.0ms
-4.014132783569396e-88
-1.068705579656116e-88
14.0ms
-560800670435597600.0
-468185776154845.06
Results
35.0ms352×body256valid
0.0msbody256infinite
Compiler

Compiled 306 to 227 computations (25.8% saved)

regimes35.0ms (0.4%)

Accuracy

Total -39.5b remaining (-176%)

Threshold costs -39.5b (-176%)

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

3 calls:

16.0ms
z
9.0ms
x
9.0ms
y
Results
ErrorSegmentsBranch
23.0b3x
22.5b3y
23.7b5z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch35.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
1.936529178348183e-161
1.6377621794341261e-153
19.0ms
-7.050002815634069e-14
-4.118788611373112e-20
Results
32.0ms288×body256valid
Compiler

Compiled 234 to 175 computations (25.2% saved)

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
061322
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
(+.f64 (*.f64 (-.f64 z y) x) y)
(if (<=.f64 x -1) (*.f64 (-.f64 z y) x) (if (<=.f64 x 6640827866535439/36893488147419103232) (+.f64 y (*.f64 x z)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 y -602134035108409/316912650057057350374175801344) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 3019169939857233/241533595188578646543459493183249209018682958106652187416077203215719946393097526533512110411370161122653976001968886073585317416315186728483931792091692546793561300926464) (*.f64 (-.f64 z y) x) (*.f64 y (-.f64 1 x))))
(if (<=.f64 z -5400000000000000348970524623998210023016365739452293857530609664) (*.f64 z x) (if (<=.f64 z 17999999999999999794973293674496) (*.f64 y (-.f64 1 x)) (if (<=.f64 z 410000000000000018488236889046921436810213425682579456) (*.f64 z x) (if (<=.f64 z 59999999999999997804407793785319445266162859351641406762082183060562519009257324544) (*.f64 y (-.f64 1 x)) (*.f64 z x)))))
(if (<=.f64 x -1220000000000000) (*.f64 y (neg.f64 x)) (if (<=.f64 x -7167183174968973/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (*.f64 z x) (if (<=.f64 x 3590026113927603/618970019642690137449562112) y (*.f64 z x))))
(if (<=.f64 y -6646139978924579/10384593717069655257060992658440192) y (if (<=.f64 y 5738065314176025/989321605892418136242010084078588760140525396404847359656252224371588900426127468681265604244972179958390685704064557357405460137227004839870184620407572671666427088594796544) (*.f64 z x) y))
y
Outputs
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
(+.f64 (*.f64 (-.f64 z y) x) y)
(if (<=.f64 x -1) (*.f64 (-.f64 z y) x) (if (<=.f64 x 6640827866535439/36893488147419103232) (+.f64 y (*.f64 x z)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 y -602134035108409/316912650057057350374175801344) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 3019169939857233/241533595188578646543459493183249209018682958106652187416077203215719946393097526533512110411370161122653976001968886073585317416315186728483931792091692546793561300926464) (*.f64 (-.f64 z y) x) (*.f64 y (-.f64 1 x))))
(if (<=.f64 z -5400000000000000348970524623998210023016365739452293857530609664) (*.f64 z x) (if (<=.f64 z 17999999999999999794973293674496) (*.f64 y (-.f64 1 x)) (if (<=.f64 z 410000000000000018488236889046921436810213425682579456) (*.f64 z x) (if (<=.f64 z 59999999999999997804407793785319445266162859351641406762082183060562519009257324544) (*.f64 y (-.f64 1 x)) (*.f64 z x)))))
(if (<=.f64 x -1220000000000000) (*.f64 y (neg.f64 x)) (if (<=.f64 x -7167183174968973/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (*.f64 z x) (if (<=.f64 x 3590026113927603/618970019642690137449562112) y (*.f64 z x))))
(if (<=.f64 y -6646139978924579/10384593717069655257060992658440192) y (if (<=.f64 y 5738065314176025/989321605892418136242010084078588760140525396404847359656252224371588900426127468681265604244972179958390685704064557357405460137227004839870184620407572671666427088594796544) (*.f64 z x) y))
y
Compiler

Compiled 158 to 94 computations (40.5% saved)

soundness0.0ms (0%)

end58.0ms (0.6%)

Compiler

Compiled 137 to 66 computations (51.8% saved)

Profiling

Loading profile data...