This section is not so much devoted to operations of high numerical sophistication and complexity, but rather collects all routines that compute something out of several elements of one or several matrices.
We start with some easy routines that are available for (almost) all classes. Thereby we will use A,B to denote matrices, e will denote the column vector of all ones, e' its transpose, all of appropriate size. Some of the methods are also available as methods without arguments, some only as friends.
- trace(A): the sum of the elements on the main diagonal of A
- ip(A,B): inner product of A and B, ip(A,B)=trace(transpose(B)*A)=sum a_ij*b_ij
- norm2(A): Euclidean norm of a Matrix = sqrt(ip(A,A))
- sumrows(A): sum up all rows of A giving the row vector e'*A
- sumcols(A): sum up all columns of A giving the column vector A*e
- sum(A): sum upp all elements of A giving the scalar e'*A*e
- scaling routines for rows/columns depending on the matrix class
In addition to these simple routines, the appropriate classes will offer some more sophisticated routines as well (unfortunately only few and most certainly improvable), e.g.,
- Matrix: routines for solving triangular systems, Householder QR factorization, least squares and nonnegative least squares computations.
- Symmatrix: eigenvalue factorization (based on an adapted old f2c translation of eispack), Cholesky factorization and solver, LDL factorizaton and solver for positive definite matrices only.
For the computation of a few extremal eigenvalues for large scale structured symmetric matrices some separate tools (see page Lanczos Interface and Classes) are available.