docs: public Frame mult(Frame y) {
      int xrows = (int)_x.numRows();
      int xcols =      _x.numCols();
      int yrows = (int) y.numRows();
      int ycols =       y.numCols();
      if(xcols != yrows)
        throw new IllegalArgumentException("Matrices are not compatible for multiplication: ["+xrows+"x"+xcols+"] * ["+yrows+"x"+ycols+"]. Requires [n x m] * [m x p]");
  
      Vec[] x_vecs = _x.vecs();
      Vec[] y_vecs =  y.vecs();
      for(int k = 0; k < xcols; k++) {
        if(x_vecs[k].isEnum())
          throw new IllegalArgumentException("Multiplication not meaningful for factor column "+k);
      }
      for(int j = 0; j < ycols; j++) {
        if(y_vecs[j].isEnum())
          throw new IllegalArgumentException("Multiplication not meaningful for factor column "+j);
      }
  
      Vec[] output = new Vec[ycols];
      for(int j = 0; j < ycols; j++)
        output[j] = Vec.makeSeq(xrows);
  
      for(int i = 0; i < xrows; i++) {
        for(int j = 0; j < ycols; j++) {
          Vec yvec = y_vecs[j];
          double d = 0;
          for(int k = 0; k < xcols; k++)
            d += x_vecs[k].at(i) * yvec.at(k);
          output[j].set(i, d);
        }
      }
      return new Frame(y._names,output);
    }