'Performs element-wise shift based on corresponding elements of left
and right, storing the result in out. Positive is left shift, and
negative is right shift. Each operand is assumed to be the same shape
(or broadcastable as such).
Arguments:
a (Tensor, numeric): left-hand side operand.
b (Tensor, numeric): right-hand side operand.
value (int): shift by value or exponent
out (Tensor, optional): where the result will be stored. If out is
None, only the op-tree will be returned.
Returns:
OpTreeNode: the resulting op-tree'

def shift(self, a, b, value=True, out=None):

    return OpTreeNode.build('shift', a, b, value=value, out=out)
