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 | 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} |
- 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.