Coordinate (Coord) FormatΒΆ

This standard data format consists of the following data:

int    m;         /* number of rows (unsymmetric only) */
int    n;         /* number of columns */
int    ne;        /* number of entries in matrix (may have type long) */
int    row[ne];   /* row indices */
int    col[ne];   /* column indices */
double val[ne];   /* numerical values */

The arrays should be set such that the k-th entry is in row row[k] and column col[k] with value val[k]. Entries that are zero, including those on the diagonal, need not be specified.

For symmetric matrices, only the lower or upper triangular entries of \(A\) should be supplied. For unsymmetric matrices, all entries in the matrix should be supplied. Duplicate entries will be summed and out-of-range entries will be ignored.

Some SPRAL routines offer only input in CSC format, you may need to use routines from the MATRIX_UTIL - Matrix utilities package to convert data from Coordinate to CSC format.

To illustrate the Coordinate format, the matrix

\[\begin{split}\left( \begin{array}{ccccc} 1.1 & 2.2 & & 3.3 & \\ 2.2 & & 4.4 & & \\ & 4.4 & 5.5 & & 6.6 \\ 3.3 & & & 7.7 & 8.8 \\ & & 6.6 & 8.8 & 9.9 \end{array} \right)\end{split}\]

is described by the following data:

int    n     = 5;
int    ne    = 9;
int    row[] = { 1,   2,   3,   4,   3,   5,   4,   5,   5 };
int    col[] = { 1,   1,   2,   1,   3,   3,   4,   4,   5 };
double val[] = { 1.1, 2.2, 4.4, 3.3, 5.5, 6.6, 7.7, 8.8, 9.9 };