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

LUC(25) = Integer array.
Vector or matrix file attributes for the output array [C]. 
LUD(25) = Integer array.
Vector or matrix file attributes for the input array [D].
This array is used to initialize the output array [C] when IACCUM is 1 or 1.
This parameter must be the same type (matrix, vector) and size as LUC.
This parameter may be the same as LUC. 
IACCUM = Integer.
Determines if the matrix product of [A] and [B] is subtracted, stored into or added to [C].
This value overrides the FMS Parameter IACCUM.
Possible values are 1, 0 and 1. 
TRANSA = Character*1.
Determines if the Vector file {A} is transposed.
Possible values are 'N' and 'T'.
NOTE: TRANSA is always 'N' when [A] is a matrix or submatrix file. 
LUA(25) = Integer array.
Vector, matrix or submatrix file attributes for the input array [A]. 
LUB(25) = Integer array.
Vector file attributes for the input array {B}.
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  Matrixvectors multiply print code 
IPRVV  Vectorsvectors 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} 
 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 [0A]. The default value of MMKA is 0.
EXAMPLE_15 illustrates how to use this subroutine and the FMS Parameters MMROW, MMCOL and MMKA.