code: def _unscaled_dist(self, X, X2=None):
          
          #X, = self._slice_X(X)
          if X2 is None:
              Xsq = np.sum(np.square(X),1)
              r2 = -2.*tdot(X) + (Xsq[:,None] + Xsq[None,:])
              util.diag.view(r2)[:,]= 0. # force diagnoal to be zero: sometime numerically a little negative
              r2 = np.clip(r2, 0, np.inf)
              return np.sqrt(r2)
          else:
              #X2, = self._slice_X(X2)
              X1sq = np.sum(np.square(X),1)
              X2sq = np.sum(np.square(X2),1)
              r2 = -2.*np.dot(X, X2.T) + (X1sq[:,None] + X2sq[None,:])
              r2 = np.clip(r2, 0, np.inf)
              return np.sqrt(r2)
docs: Compute the Euclidean distance between each row of X and X2, or between
          each pair of rows of X if X2 is None.