@staticmethod
def backward(ctx, grad_output):
    (shape_x, shape_y) = ctx.saved_tensors
    return (unbroadcast(grad_output, shape_x), unbroadcast((- grad_output), shape_y))
@staticmethod
def backward(ctx, grad_output):
    (shape_x, shape_y) = ctx.saved_tensors
    return (unbroadcast(grad_output, shape_x), unbroadcast((- grad_output), shape_y))