=========================
Coordinate (Coord) Format
=========================

This standard data format consists of the following data:

.. code-block:: Fortran

   integer           :: m     ! number of rows (unsymmetric only)
   integer           :: n     ! number of columns
   integer           :: ne    ! number of entries in matrix (may have type long)
   integer, size(ne) :: row   ! row indices
   integer, size(ne) :: col   ! column indices
   real,    size(ne) :: val   ! 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
:math:`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 :doc:`CSC format<csc_format>`, you
may need to use routines from the :f:mod:`spral_matrix_util` package to convert
data from Coordinate to CSC format.

To illustrate the Coordinate format, the matrix

.. math::

   \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)

is described by the following data:

.. code-block:: fortran

   n = 5
   ne = 9
   row(1:9) = (/ 1,   2,   3,   4,   3,   5,   4,   5,   5 /)
   col(1:9) = (/ 1,   1,   2,   1,   3,   3,   4,   4,   5 /)
   val(1:9) = (/ 1.1, 2.2, 4.4, 3.3, 5.5, 6.6, 7.7, 8.8, 9.9 /)
