PURPOSE

Perform one of the matrix multiply operations
[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'

SYNOPSIS

CALL FMSMM (LUC, LUD, IACCUM, TRANSA, LUA, LUB)

INPUT PARAMETERS

OUTPUT PARAMETERS:

None.

FMS PARAMETERS:

The following FMS Parameters are especially important to this routine:
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

DESCRIPTION:

This subroutine performs one of the following multiply operations:

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}
2 Vector File -1
0
1
'N' Submatrix File Vector File
{C} = {D} - [Si]{B}
{C} =       [Si]{B}
{C} = {D} + [Si]{B}
3 Vector File -1
0
1
'N' Vector File Vector File
{C} = {D} - {A}{B}
{C} =       {A}{B}
{C} = {D} + {A}{B}
4 Vector File -1
0
1
'T' Vector File Vector File
{C} = {D} - {A}T{B}
{C} =       {A}T{B}
{C} = {D} + {A}T{B}
5 Matrix File -1
0
1
'T' Vector File Vector File
[C] = [D] - {A}T{B}
[C] =       {A}T{B}
[C] = [D] + {A}T{B}
The calculation proceeds in two steps:
  1. 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].
  2. 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.