DADiSP organizes tables into multiple columns. A column of data always has some "overhead" associated with it to keep track of metadata such as column headers, column units, column sample rates, etc. The number of columns is limited at some point by the amount of memory available on your computer.
Data rows require no metadata and only use the memory space of the data itself. This space is automatically swapped to disk as it grows. Thus, the number of rows per column is essentially unlimited regardless of the amount of memory available.
Consider a table of ten thousand columns of ten rows each. Operating on this table (taking its square root, for example) is relatively slow and might be precluded by memory limitations. Operating on its transpose, which involves only ten columns, is significantly faster and takes advantage of disk resources rather than causing memory shortages. Use the SETBUFSIZE function to set the size of the number buffer and better utilize memory.
The following is a partial table of DADiSP functions provided explicitly for matrices. For more details, please refer to the DADiSP Function Reference Manual.
Function 
Description 
Calculates the Cholesky factorization of a square matrix. 

Calculates the determinant of the matrix. 

Calculates the matrix diagonal 

Calculates the Eigenvalues and Eigenvectors of a square matrix. 

Calculates the Hessenberg form of the matrix. 

Calculates the matrix inner (or "dot") product. 

Produces the inverse of the matrix. 

Calculates the LU decomposition of a square matrix. 

Divides two matrices. 

Multiplies two matrices. 

Calculates the QR decomposition of a square or rectangular matrix. 

Calculates the Schur form of a matrix. 

Calculates the Singular Value Decomposition of a matrix. 

Calculates the Schur form of a matrix to produce a unitary matrix. 