def test_reduce_syntactic_sugar(): x = Stack("i", (Number(1), Number(2), Number(3))) expected = Number(1 + 2 + 3) assert x.reduce(ops.add) is expected assert x.reduce(ops.add, "i") is expected assert x.reduce(ops.add, {"i"}) is expected assert x.reduce(ops.add, frozenset(["i"])) is expected
def test_stack_subs(): x = Variable('x', reals()) y = Variable('y', reals()) z = Variable('z', reals()) j = Variable('j', bint(3)) f = Stack('i', (Number(0), x, y * z)) check_funsor(f, { 'i': bint(3), 'x': reals(), 'y': reals(), 'z': reals() }, reals()) assert f(i=Number(0, 3)) is Number(0) assert f(i=Number(1, 3)) is x assert f(i=Number(2, 3)) is y * z assert f(i=j) is Stack('j', (Number(0), x, y * z)) assert f(i='j') is Stack('j', (Number(0), x, y * z)) assert f.reduce(ops.add, 'i') is Number(0) + x + (y * z) assert f(x=0) is Stack('i', (Number(0), Number(0), y * z)) assert f(y=x) is Stack('i', (Number(0), x, x * z)) assert f(x=0, y=x) is Stack('i', (Number(0), Number(0), x * z)) assert f(x=0, y=x, i=Number(2, 3)) is x * z assert f(x=0, i=j) is Stack('j', (Number(0), Number(0), y * z)) assert f(x=0, i='j') is Stack('j', (Number(0), Number(0), y * z))
def test_stack_simple(): x = Number(0.) y = Number(1.) z = Number(4.) xyz = Stack('i', (x, y, z)) check_funsor(xyz, {'i': bint(3)}, reals()) assert xyz(i=Number(0, 3)) is x assert xyz(i=Number(1, 3)) is y assert xyz(i=Number(2, 3)) is z assert xyz.reduce(ops.add, 'i') == 5.
def test_reduce_syntactic_sugar(): i = Variable("i", Bint[3]) x = Stack("i", (Number(1), Number(2), Number(3))) expected = Number(1 + 2 + 3) assert x.reduce(ops.add) is expected assert x.reduce(ops.add, "i") is expected assert x.reduce(ops.add, {"i"}) is expected assert x.reduce(ops.add, frozenset(["i"])) is expected assert x.reduce(ops.add, i) is expected assert x.reduce(ops.add, {i}) is expected assert x.reduce(ops.add, frozenset([i])) is expected
def test_quote(interp): with interpretation(interp): x = Variable('x', bint(8)) check_quote(x) y = Variable('y', reals(8, 3, 3)) check_quote(y) check_quote(y[x]) z = Stack('i', (Number(0), Variable('z', reals()))) check_quote(z) check_quote(z(i=0)) check_quote(z(i=Slice('i', 0, 1, 1, 2))) check_quote(z.reduce(ops.add, 'i')) check_quote(Cat('i', (z, z, z))) check_quote(Lambda(Variable('i', bint(2)), z))
def test_stack_subs(): x = Variable('x', Real) y = Variable('y', Real) z = Variable('z', Real) j = Variable('j', Bint[3]) f = Stack('i', (Number(0), x, y * z)) check_funsor(f, {'i': Bint[3], 'x': Real, 'y': Real, 'z': Real}, Real) assert f(i=Number(0, 3)) is Number(0) assert f(i=Number(1, 3)) is x assert f(i=Number(2, 3)) is y * z assert f(i=j) is Stack('j', (Number(0), x, y * z)) assert f(i='j') is Stack('j', (Number(0), x, y * z)) assert f.reduce(ops.add, 'i') is Number(0) + x + (y * z) assert f(x=0) is Stack('i', (Number(0), Number(0), y * z)) assert f(y=x) is Stack('i', (Number(0), x, x * z)) assert f(x=0, y=x) is Stack('i', (Number(0), Number(0), x * z)) assert f(x=0, y=x, i=Number(2, 3)) is x * z assert f(x=0, i=j) is Stack('j', (Number(0), Number(0), y * z)) assert f(x=0, i='j') is Stack('j', (Number(0), Number(0), y * z))