[C] = [D] - [A]T{B}, IACCUM = -1, TRANSA='T'
[C] = [D] - [A] {B}, IACCUM = -1, TRANSA='N'
[C] = [A]T{B}, IACCUM = 0, TRANSA='T'
[C] = [A] {B}, IACCUM = 0, TRANSA='N'
[C] = [D] + [A]T{B}, IACCUM = +1, TRANSA='T'
[C] = [D] + [A] {B}, IACCUM = +1, TRANSA='N'
CALL FMSMM (LUC, LUD, IACCUM, TRANSA, LUA, LUB)
| Parameter | Description |
|---|---|
| MMROW | Starting row in [C] to store the product of [A] and [B]. Default value = 0 |
| MMCOL | Starting column in [C] to store the product of [A] and [B]. Default value = 0 |
| MMKA | Number of [0] columns to add to the beginning of [A] Default value = 0 |
| IPRMV | Matrix-vectors multiply print code |
| IPRVV | Vectors-vectors multiply print code |
| CASE | LUC and LUD | IACCUM | TRANSA | LUA | LUB | Compute | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Vector File | -1 0 1 |
'N' | Matrix File | Vector File |
{C} = {D} - [A]{B}
{C} = [A]{B}
{C} = {D} + [A]{B} |
The calculation proceeds in two steps. First, the output array [C] is initialized to the input array [D] when IACCUM is -1 or 1. When IACCUM=0, [C] is initialized to [0].
The matrix product [A][B] or [A]T[B] is then subtracted from [C], stored into [C] or added to [C], according to the value of IACCUM (-1, 0, or 1). The matrix [A] may be transposed (TRANSA='T') or not (TRANSA='N').
Normally the product of [A] and [B] is stored in [C] starting at the first row and column of matrix [C]. However, the FMS Parameters MMROW and MMCOL may be used to shift the storage to start at C(1+MMROW,1+MMCOL). The default values of MMROW and MMCOL are 0. This option only applies when [C] is a matrix file in block or slab format.
If any part of the product of [A] and [B], including any shifting by MMROW and MMCOL, falls outside of the matrix [C], those values are not computed. If the product of [A] and [B] is smaller than [C], only the appropriate terms in [C] are modified.
The FMS Parameter MMKA may be used to shift the matrix [A] by adding MMKA columns of zero's. The shifted matrix [A] then becomes [0|A]. The default value of MMKA is 0.
EXAMPLE_15 illustrates how to use this subroutine and the FMS Parameters MMROW, MMCOL and MMKA.