def _get_type(self): if util.any_of(self.args, ir.FloatingValue): if util.any_of(self.args, ir.DoubleValue): return 'double' else: return 'float' elif util.all_of(self.args, ir.IntegerValue): return self._get_int_type() elif util.any_of(self.args, ir.DecimalValue): return _decimal_promoted_type(self.args) else: raise NotImplementedError
def _get_type(self): if util.any_of(self.args, ir.FloatingValue): if util.any_of(self.args, ir.DoubleValue): return 'double' else: return 'float' elif util.all_of(self.args, ir.IntegerValue): return self._get_int_type() elif util.any_of(self.args, ir.DecimalValue): return _decimal_promoted_type(self.args) else: raise NotImplementedError
def _get_type(self): if util.any_of(self.args, ir.FloatingValue): if util.any_of(self.args, ir.DoubleValue): return 'double' else: return 'float' elif util.any_of(self.args, ir.DecimalValue): return _decimal_promoted_type(self.args) elif util.all_of(self.args, ir.IntegerValue): return 'double' else: raise NotImplementedError( 'Operands {}, {} not supported for binary operation {}'.format( type(self.left).__name__, type(self.right).__name__, self.op.__name__))
def _get_type(self): rval = self.args[1].op() if util.any_of(self.args, ir.FloatingValue): if util.any_of(self.args, ir.DoubleValue): return 'double' else: return 'float' elif util.any_of(self.args, ir.DecimalValue): return _decimal_promoted_type(self.args) elif isinstance(rval, ir.Literal) and rval.value < 0: return 'double' elif util.all_of(self.args, ir.IntegerValue): return self._get_int_type() else: raise NotImplementedError
def _get_type(self): rval = self.args[1].op() if util.any_of(self.args, ir.FloatingValue): if util.any_of(self.args, ir.DoubleValue): return 'double' else: return 'float' elif util.any_of(self.args, ir.DecimalValue): return _decimal_promoted_type(self.args) elif isinstance(rval, ir.Literal) and rval.value < 0: return 'double' elif util.all_of(self.args, ir.IntegerValue): return self._get_int_type() else: raise NotImplementedError
def _floor_divide(t, expr): op = expr.op() left, right = op.args if util.any_of(op.args, ir.FloatingValue): new_expr = expr.floor() return t.translate(new_expr) return fixed_arity(lambda x, y: x / y, 2)(t, expr)
def _floor_divide(t, expr): op = expr.op() left, right = op.args if util.any_of(op.args, ir.FloatingValue): new_expr = expr.floor() return t.translate(new_expr) return fixed_arity(lambda x, y: x / y, 2)(t, expr)
def shape_like(arg, dtype=None): if util.is_iterable(arg): datatype = dtype or highest_precedence_dtype(arg) columnar = util.any_of(arg, ir.AnyColumn) else: datatype = dtype or arg.type() columnar = isinstance(arg, ir.AnyColumn) dtype = dt.dtype(datatype) if columnar: return dtype.column_type() else: return dtype.scalar_type()
def shape_like(arg, dtype=None): if isinstance(arg, (tuple, list, ir.ListExpr)): datatype = dtype or highest_precedence_dtype(arg) columnar = util.any_of(arg, ir.AnyColumn) else: datatype = dtype or arg.type() columnar = isinstance(arg, ir.AnyColumn) dtype = dt.dtype(datatype) if columnar: return dtype.column_type() else: return dtype.scalar_type()
def shape_like(arg, dtype=None): if isinstance(arg, (tuple, list, ir.ListExpr)): datatype = dtype or highest_precedence_dtype(arg) columnar = util.any_of(arg, ir.AnyColumn) else: datatype = dtype or arg.type() columnar = isinstance(arg, ir.AnyColumn) dtype = dt.dtype(datatype) if columnar: return dtype.column_type() else: return dtype.scalar_type()
def _get_int_type(self): deps = [x.op() for x in self.args] if util.all_of(deps, ir.Literal): return _smallest_int_containing([self.op(deps[0].value, deps[1].value)]) elif util.any_of(deps, ir.Literal): if isinstance(deps[0], ir.Literal): val = deps[0].value atype = self.args[1].type() else: val = deps[1].value atype = self.args[0].type() return _int_one_literal_promotion(atype, val, self.op) else: return _int_bounds_promotion(self.left.type(), self.right.type(), self.op)
def _get_int_type(self): deps = [x.op() for x in self.args] if util.all_of(deps, ir.Literal): return _smallest_int_containing( [self.op(deps[0].value, deps[1].value)]) elif util.any_of(deps, ir.Literal): if isinstance(deps[0], ir.Literal): val = deps[0].value atype = self.args[1].type() else: val = deps[1].value atype = self.args[0].type() return _int_one_literal_promotion(atype, val, self.op) else: return _int_bounds_promotion(self.left.type(), self.right.type(), self.op)
def shape_like_args(args, out_type): if util.any_of(args, ir.ArrayExpr): return ir.array_type(out_type) else: return ir.scalar_type(out_type)
def _check_compatibility(self): if (util.any_of(self.args, ir.StringValue) and not util.all_of(self.args, ir.StringValue)): raise TypeError('String and non-string incompatible')
def shape_like_args(args, out_type): out_type = dt.validate_type(out_type) if util.any_of(args, ir.ColumnExpr): return out_type.array_type() else: return out_type.scalar_type()
def _check_compatibility(self): if (util.any_of(self.args, ir.StringValue) and not util.all_of(self.args, ir.StringValue)): raise TypeError('String and non-string incompatible')
def shape_like_args(args, out_type): out_type = dt.validate_type(out_type) if util.any_of(args, ir.ArrayExpr): return out_type.array_type() else: return out_type.scalar_type()