original_docstring:  batch direct product
      Not to be confused with Exterior product.
  
      :param x: batch times n
      :param y: batch times n
      :return: batch dimension
      
docstring: batch direct product
  Not to be confused with Exterior product.
docstring_tokens: batch direct product Not to be confused with Exterior product .
code: def bdot(x, y):
      """ batch direct product
      Not to be confused with Exterior product.
  
      :param x: batch times n
      :param y: batch times n
      :return: batch dimension
      """
      assert x.shape[0] == y.shape[0]
      assert x.shape[1] == y.shape[1]
      xT = F.expand_dims(x, 1)
      y = F.expand_dims(y, 2)
      res = F.squeeze(F.squeeze(xT @ y, axis=1), axis=1)
      return res
code_tokens: def bdot ( x , y ) : assert x . shape [ 0 ] == y . shape [ 0 ] assert x . shape [ 1 ] == y . shape [ 1 ] xT = F . expand_dims ( x , 1 ) y = F . expand_dims ( y , 2 ) res = F . squeeze ( F . squeeze ( xT @ y , axis = 1 ) , axis = 1 ) return res
short_docstring: batch direct product
  Not to be confused with Exterior product.
short_docstring_tokens: batch direct product Not to be confused with Exterior product .
comment: """ batch direct product
      Not to be confused with Exterior product.
  
      :param x: batch times n
      :param y: batch times n
      :return: batch dimension
      """