def test_numbers(): x = ScalarSymbol('x', 'real') y = ScalarSymbol('x', 'int') for expr in [x + 1, x - 1, x * 1, x + y, x - y, x / y, x * y + x + y, x**y, x**2, 2**x, x % 5, -x, sin(x), cos(x ** 2), exp(log(y))]: assert expr.dshape == dshape('real') assert eval(str(expr)) == expr assert (-y).dshape == dshape('int')
def test_arithmetic_dshape_inference(): x = ScalarSymbol('x', 'int') y = ScalarSymbol('y', 'int') assert (x + y).dshape == dshape('int')
def test_neg_dshape_unsigned(): y = ScalarSymbol('x', 'uint32') assert (-y).dshape == dshape('int32')
def test_relationals(): x = ScalarSymbol('x', 'real') for expr in [x < 1, x > 1, x == 1, x != 1, x <= 1, x >= 1, ~x]: assert expr.dshape == dshape('bool') assert eval(str(expr)) == expr
def test_scalar_name_dtype(): x = ScalarSymbol('x', 'int64') assert x.name == 'x' assert x.dtype == dshape('int64')