PURPOSE
Multiply a group of vectors {X} by a matrix [A] and place the results in vectors {Y}, according to the FMS Parameter IACCUM{Y} = {Z} - [A]{X}, IACCUM = -1, {Y} = [A]{X}, IACCUM = 0, (default) {Y} = {Z} + [A]{X}, IACCUM = +1,
SYNOPSIS
CALL RSDMVM (LUA, LUX, LUY, NUMVEC, LUZ)
CALL RNDMVM (LUA, LUX, LUY, NUMVEC, LUZ)
CALL CHDMVM (LUA, LUX, LUY, NUMVEC, LUZ)
CALL CSDMVM (LUA, LUX, LUY, NUMVEC, LUZ)
CALL CNDMVM (LUA, LUX, LUY, NUMVEC, LUZ)
INPUT PARAMETERS
- LUA(25) = Integer array.
File attributes for matrix [A]. - LUX(25) = Integer array.
File attributes for the file containing {X} vectors. - LUY(25) = Integer array.
File attributes for the file where the {Y} vectors are to be written. This parameter may be the same as LUX to overlay the {Y} vectors on the {X} vectors. - NUMVEC = Integer.
Number of vectors to multiply. - LUZ(25) = Integer array.
File attributes for the file containing {Z} vectors. This parameter is only used if the FMS Parameter IACCUM is set to a nonzero value. This parameter may be the same as LUY to accumulate the results in {Y}.
OUTPUT PARAMETERS:
None.FMS PARAMETERS:
The following FMS Parameters are especially important to this routine:Parameter | Description |
---|---|
IACCUM | Product accumulation flag
= -1, {Y} = {Z} - {X}T[F] = 0, {Y} = {X}T[F] (default) = +1, {Y} = {Z} - {X}T[F] |
IPRMV | Matrix-vectors multiply print code |
DESCRIPTION:
This subroutine multiplies a group of vectors {X} stored on file LUX by a matrix stored in FMS format on file LUA. The resulting vectors {Y} are written to file LUY, which can be the same as file LUX.The calculation proceeds in two steps:
-
First, the
{X} vectors are scaled by the diagonals on
file LUA(2) to obtain the following:
{Y} = [D]{X}
-
For symmetric problems, the second step consists of computing
the following:
{Y} = {Y} + [AL]{X} + [AL] T {X}
while for nonsymmetric problems the following two calculations are performed:
{Y} = {Y} + [AL]{X}
{Y} = {Y} + [AU]{X}
[A]{X} = {B}
or as the first step in projecting a matrix [A] into a subspace [A*],
[A*] = {X} T [A]{X}
The data structures used are designed to obtain maximum performance when several {X} vectors are processed in parallel.