docs: function(matrix) {
      var M = matrix.elements || matrix;
      if (typeof(M[0][0]) == 'undefined') { M = Matrix.create(M).elements; }
      var T = this.dup(), cols = T.elements[0].length;
      var ni = T.elements.length, ki = ni, i, nj, kj = M[0].length, j;
      if (ni != M.length) { return null; }
      do { i = ki - ni;
        nj = kj;
        do { j = kj - nj;
          T.elements[i][cols + j] = M[i][j];
        } while (--nj);
      } while (--ni);
      return T;
    }