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

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:

  1. First, the {X} vectors are scaled by the diagonals on file LUA(2) to obtain the following:

    {Y} = [D]{X}

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

The matrix-vectors calculation can be used to check the solution of the system of equations

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