@staticmethod
def backward(ctx, grad_output):
    (x, y) = ctx.saved_tensors
    return (unbroadcast(((y * (x ** (y - 1.0))) * grad_output), x.shape), unbroadcast((((x ** y) * np.log(x)) * grad_output), y.shape))
@staticmethod
def backward(ctx, grad_output):
    (x, y) = ctx.saved_tensors
    return (unbroadcast(((y * (x ** (y - 1.0))) * grad_output), x.shape), unbroadcast((((x ** y) * np.log(x)) * grad_output), y.shape))