Subarrays of Vectors and Matrices

Next: Evaluation of Expressions Up: C-XSC Previous: Standard Data Types

# Subarrays of Vectors and Matrices

Table 3: Predefined Relational Operators

C-XSC provides a special notation to manipulate subarrays of vectors and matrices. Subarrays are arbitrary rectangular parts of arrays. All predefined operators may also use subarrays as operands. A subarray of a matrix or vector is accessed using the `()`-operator or the `[]`-operator. The `()`-operator specifies a subarray of an object of the same type as the original object. For example, if `A` is a real nxn-matrix, then `A(i,i)` is the left upper ixi submatrix. Note that parentheses in the declaration of a dynamic vector or matrix do not specify a subarray, but define the index ranges of the object to be allocated. The `[]`-operator generates a subarray of a ``lower'' type. For example, if `A` is a nxn rmatrix, then `A[i]` is the i-th row of `A` of type rvector and `A[i][j]` is the (i,j)-th element of `A` of type real.

Both types of subarray access may also be combined, for example: `A[k](i,j)` is a subvector from index i to index j of the k-th row vector of the matrix `A`.

The use of subarrays is illustrated in the following example describing the LU-factorization of a nxn-matrix `A`:

```for (j=1; j<=n-1; j++) {
for (k=j+1; k<=n; k++) {
A[k][j]      = A[k][j] / A[j][j];
A[k](j+1,n)  = A[k](j+1,n) - A[k][j] * A[j](j+1,n);
}
}```

This example demonstrates two important features of C-XSC. First, we save one loop by using the subarray notation. This reduces program complexity. Second, the program fragment above is independent of the type of matrix `A` (either rmatrix, imatrix, cmatrix or cimatrix), since all arithmetic operators are suitably predefined in the mathematical sense.

Andreas Wiethoff
Wed Mar 29 13:50:24 MET DST 1995