docs: def superMDS(X0, N, d, **kwargs):
      """ Find the set of points from an edge kernel.
      """
      Om = kwargs.get('Om', None)
      dm = kwargs.get('dm', None)
      if Om is not None and dm is not None:
          KE = kwargs.get('KE', None)
          if KE is not None:
              print('superMDS: KE and Om, dm given. Continuing with Om, dm')
          factor, u = eigendecomp(Om, d)
          uhat = u[:, :d]
          lambdahat = np.diag(factor[:d])
          diag_dm = np.diag(dm)
          Vhat = np.dot(diag_dm, np.dot(uhat, lambdahat))
      elif Om is None or dm is None:
          KE = kwargs.get('KE', None)
          if KE is None:
              raise NameError('Either KE or Om and dm have to be given.')
          factor, u = eigendecomp(KE, d)
          lambda_ = np.diag(factor)
          Vhat = np.dot(u, lambda_)[:, :d]
  
      C_inv = -np.eye(N)
      C_inv[0, 0] = 1.0
      C_inv[:, 0] = 1.0
      b = np.zeros((C_inv.shape[1], d))
      b[0, :] = X0
      b[1:, :] = Vhat[:N - 1, :]
      Xhat = np.dot(C_inv, b)
      return Xhat, Vhat