DADiSP supports operations on both real and complex matrices. All calculations are performed with double precision floating point arithmetic.
The *^ operator or the MMULT function perform matrix multiplication. The MMULT function has the following format:
matrix1 is a matrix with dimension m1 x n1.
matrix2 is a matrix with dimension m2 x n2.
The number of columns in matrix1 (n1) must equal the number of rows in matrix2 (m2). the resultant matrix will have dimensions of (m1 x n2).
A *^ x is equivalent to mmult(A, x).
The \^ operator or the MDIV function will solve a matrix system. If A, b, and x are matrices, such that A *^ x = b, then A \^ b returns the matrix x.
A \^ b is equivalent to mdiv(A, b).
For A \^ b, where A is square, the system is solved using LU decomposition. This is usually numerically more stable than directly calculating the inverse matrix, i.e.
x = inv(A) *^ b.
If matrix A is not square, the system is considered a least squares problem and is solved by QR decomposition. The resulting matrix is the best solution in the least squares sense.