<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def power(base, exp):
 """Returns result of first array elements raised to powers from second array, element-wise with broadcasting. Equivalent to ``base ** exp`` and ``mx.nd.broadcast_power(lhs, rhs)``. .. note:: If the corresponding dimensions of two arrays have the same size or one of them has size 1, then the arrays are broadcastable to a common shape. Parameters base : scalar or NDArray The base array exp : scalar or NDArray The exponent array. If ``base.shape != exp.shape``, they must be broadcastable to a common shape. Returns -------- NDArray The bases in x raised to the exponents in y. Examples -------- array([[ 2., 2., 2.], [ 2., 2., 2.]], dtype=float32) array([[ 1.], [ 2.]], dtype=float32) array([[ 1.], [ 2.]], dtype=float32) array([[ 4., 4., 4.], [ 4., 4., 4.]], dtype=float32) array([[ 2., 2., 2.], [ 4., 4., 4.]], dtype=float32) array([[ 2., 2., 2.], [ 4., 4., 4.]], dtype=float32) array([[ 1.], [ 4.]], dtype=float32) """

    # pylint: disable= no-member, protected-access
    return _ufunc_helper(
        base,
        exp,
        op.broadcast_power,
        operator.pow,
        _internal._power_scalar,
        _internal._rpower_scalar)