code: def euclidean_distances(a, b, squared=False, to_numpy=True):
      
  
      a, b = to_gpu(a, b)
  
      a2 = np.sum(np.square(a), 1)
      b2 = np.sum(np.square(b), 1)
  
      c = -2 * np.dot(a, b.T)
      c += a2[:, None]
      c += b2[None, :]
  
      if not squared:
          np.sqrt(c, out=c)
      if to_numpy:
          return to_np(c)
      else:
          return c
docs: Compute the pairwise euclidean distance between matrices a and b.
  
      If the input matrix are in numpy format, they will be uploaded to the
      GPU first which can incur significant time overhead.
  
      Parameters
      ----------
      a : np.ndarray (n, f)
          first matrix
      b : np.ndarray (m, f)
          second matrix
      to_numpy : boolean, optional (default True)
          If true convert back the GPU array result to numpy format.
      squared : boolean, optional (default False)
          if True, return squared euclidean distance matrix
  
      Returns
      -------
      c : (n x m) np.ndarray or cupy.ndarray
          pairwise euclidean distance distance matrix