The matrices x and y will be interpreted as
  collections of row vectors. They must have the same number of rows.
The command sumouter computes the sum of the outer
  products of corresponding row vectors, weighted by the entries of w:
  $$
    M = \sum_i w_i x_i y_i^\top
  $$
  where the sum is over all rows of x 
  (after removing any rows containing NA or other non-finite
  values).
  If w is missing, the weights will be taken as 1.
  The result is a \(p \times q\) matrix where
  p = ncol(x) and q = ncol(y).
  
The command quadform evaluates the quadratic form, defined by
  the matrix v, for each of the row vectors of x:
 $$ 
   y_i = x_i V x_i^\top
  $$
  The result y is a numeric vector of length n where
  n = nrow(x). If x[i,] contains NA or
  other non-finite values, then y[i] = NA.
The command bilinearform evaluates the more general bilinear
  form defined by the matrix v. Here x and y must
  be matrices of the same dimensions. For each row vector of
  x and corresponding row vector of y, the bilinear form is
 $$ 
   z_i = x_i V y_i^\top
  $$
  The result z is a numeric vector of length n where
  n = nrow(x). If x[i,] or y[i,] contains NA or
  other non-finite values, then z[i] = NA.