示例#1
0
def test_pow(x, y):
    expr = expression.OpExpression(expression.OptionalArgOps.POW_2, 2, x, y,
                                   None)
    assert codegen.compile(expr)() == x**y

    expr = expression.OpExpression(expression.OptionalArgOps.POW_3, 3, x, y,
                                   1024)
    assert codegen.compile(expr)() == pow(x, y, 1024)
示例#2
0
def test_round(x, n):
    expr = expression.OpExpression(expression.OptionalArgOps.ROUND_1, 1, x,
                                   None, None)
    assert codegen.compile(expr)() == round(x)

    expr = expression.OpExpression(expression.OptionalArgOps.ROUND_2, 2, x, n,
                                   None)
    assert codegen.compile(expr)() == round(x, n)
示例#3
0
 def __round__(self, ndigits=None):
     if ndigits is None:
         return LambdaDSL(
             expression.OpExpression(expression.OptionalArgOps.ROUND_1, 1,
                                     get_expr(self), None, None))
     return LambdaDSL(
         expression.OpExpression(expression.OptionalArgOps.ROUND_2, 2,
                                 get_expr(self), get_expr(ndigits), None))
示例#4
0
 def __pow__(self, other, modulo=None):
     if modulo is None:
         return LambdaDSL(
             expression.OpExpression(expression.OptionalArgOps.POW_2, 2,
                                     get_expr(self), get_expr(other), None))
     return LambdaDSL(
         expression.OpExpression(expression.OptionalArgOps.POW_3, 3,
                                 get_expr(self), get_expr(other),
                                 get_expr(modulo)))
示例#5
0
def test_exprs(op, x: int, y: int):
    expr = expression.OpExpression(op, op.value.num_args, x, y, None)
    elambda = interpret.to_lambda(expr)

    hypothesis.assume(not capture_exception(elambda))

    clambda = codegen.compile(expr)
    hypothesis.note(clambda.code)
    assert elambda() == clambda()
示例#6
0
 def __ceil__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.CEIL, 1,
                                 get_expr(self), None, None))
示例#7
0
 def __floor__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.FLOOR, 1,
                                 get_expr(self), None, None))
示例#8
0
 def __truediv__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.TRUEDIV, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#9
0
 def __sub__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.SUB, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#10
0
def logical_or(expr1, expr2, *exprs):
    if not exprs:
        return LambdaDSL(
            expression.OpExpression(expression.SpecialOps.LOGICAL_OR, 2,
                                    get_expr(expr1), get_expr(expr2), None))
    return logical_or(expr1, logical_or(expr2, *exprs))
示例#11
0
 def __pos__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.POSITIVE, 1,
                                 get_expr(self), None, None))
示例#12
0
 def __ne__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ComparisonOps.NE, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#13
0
 def __rxor__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.RXOR, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#14
0
 def __rrshift__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.RRSHIFT, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#15
0
 def __rdivmod__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.RDIVMOD, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#16
0
def not_contains(container, item):
    return LambdaDSL(
        expression.OpExpression(expression.SpecialOps.NOT_CONTAINS, 2,
                                get_expr(container), get_expr(item), None))
示例#17
0
 def __neg__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.NEGATIVE, 1,
                                 get_expr(self), None, None))
示例#18
0
def logical_not(expr):
    return LambdaDSL(
        expression.OpExpression(expression.SpecialOps.LOGICAL_NOT, 1,
                                get_expr(expr), None, None))
示例#19
0
 def __abs__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.ABS, 1, get_expr(self),
                                 None, None))
示例#20
0
 def __matmul__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.MATMUL, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#21
0
 def __invert__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.INVERT, 1,
                                 get_expr(self), None, None))
示例#22
0
 def __floordiv__(self, arg0):
     return LambdaDSL(
         expression.OpExpression(expression.ArithmeticOps.FLOORDIV, 2,
                                 get_expr(self), get_expr(arg0), None))
示例#23
0
 def __trunc__(self, ):
     return LambdaDSL(
         expression.OpExpression(expression.UnaryOps.TRUNC, 1,
                                 get_expr(self), None, None))