def pow(mat, p, target=None):
  """
  If p is a scalar, compute the 'p'th power of each element of the matrix mat,
  otherwise raise each element of the matrix mat to the power given by the
  corresponding element of the matrix p.
  """

  if not target:
    target = mat

  if isinstance(p, EigenMatrix):
    err_code = _eigenmat.apply_pow_matrix(mat.p_mat, p.p_mat, target.p_mat)
  elif isinstance(p, (int, float)):
    err_code = _eigenmat.apply_pow(mat.p_mat, ct.c_float(p), target.p_mat)
  else:
    raise ValueError, "Value must be of type EigenMatrix, int, or float."

  if err_code:
    raise generate_exception(err_code)

  return target

  If p is a scalar, compute the 'p'th power of each element of the matrix mat,
  otherwise raise each element of the matrix mat to the power given by the
  corresponding element of the matrix p.
  
eigenmat/eigenmat.py