docs: def vector_perp(v):
      """Return vectors perpendicular to 2-dimensional vectors.
      If an input vector has components (x, y), the output vector has
      components (x, -y).
  
      Parameters
      ----------
      v: array, shape (a1, a2, ..., 2)
  
      Returns
      -------
      v_perp: array, shape of v
      """
      if v.shape[-1] != 2:
          raise Exception('Can only define a unique perpendicular vector in 2d')
      v_perp = np.empty_like(v)
      v_perp[..., 0] = v[:, 1]
      v_perp[..., 1] = -v[:, 0]
      return v_perp