PURPOSE
Multiply a group of vectors {Y} by the transpose of a group of vectors {X} and store the results in matrix [F] according to the FMS Parameter IACCUM[F] = [F] - {X}T{Y}, IACCUM = -1, [F] = {X}T{Y}, IACCUM = 0, (default) [F] = [F] + {X}T{Y}, IACCUM = +1,
SYNOPSIS
CALL RSDVVM (LUX, LUY, F, NUMXY)
CALL RNDVVM (LUX, LUY, F, NUMX, NUMY)
CALL CHDVVM (LUX, LUY, F, NUMXY)
CALL CSDVVM (LUX, LUY, F, NUMXY)
CALL CNDVVM (LUX, LUY, F, NUMX, NUMY)
INPUT PARAMETERS
- LUX(25) = Integer array.
File attributes for the {X} vectors. - LUY(25) = Integer array.
File attributes for the {Y} vectors. This parameter can be the same as LUX to compute [F]={X}T{X}. - NUMXY = Integer. (RSDVVM, CHDVVM, CSDVVM only)
Number of {X} or {Y} vectors. - NUMX = Integer. (RNDVVM, CNDVVM only)
Number of {X} vectors. - NUMY = Integer. (RNDVVM, CNDVVM only)
Number of {Y} vectors.
OUTPUT PARAMETERS:
- F(NUMXY*(NUMXY+1)/2) = Real array (RSDVVM).
F(NUMX, NUMY) = Real array (RNDVVM).
F(NUMXY*(NUMXY+1)/2) = Complex array (CHDVVM, CSDVVM).
F(NUMX, NUMY) = Complex array (CNDVVM).
This array contains the matrix formed from the inner products of the {X} and {Y} vectors. For symmetric problems (RSDVVM, CHDVVM, CSDVVM) this array is stored in lower triangular form, starting from column 1 through the diagonal by increasing row number. For nonsymmetric problems (RNDVVM, CNDVVM) this array is stored in standard FORTRAN storage.
FMS PARAMETERS:
The following FMS Parameters are especially important to this routine:Parameter | Description |
---|---|
IACCUM | Product accumulation flag
= -1, [F] = [F] - {X}T{Y}, = 0, [F] = {X}T{Y}, (default) = +1, [F] = [F] + {X}T{Y}, |
IPRVV | Vectors-vectors multiply print code |
DESCRIPTION:
This subroutine forms a matrix Fij from the inner products of vectors {X}i and {Y}j . The vector groups {X} and {Y} are supplied on files LUX and LUY. The matrix [F] is formed and left in memory.For symmetric problems, only the lower triangle is computed. Data is stored in a packed triangular format similar to submatrix type 4 described in the call to FMSOS. The calculation performed is equivalent to the following FORTRAN statements:
L = 0 DO I = 1,NUMXY DO J = l,I L = L + 1 F(L) = 0. DO K = 1,NUMEQ F(L) = F(L) + X(K,I)*Y(K,J) END DO END DO END DOIn general, the inner products of {X} and {Y} vectors do not produce a symmetric matrix [F]. However, if the {Y} vectors were obtained from the matrix- vectors multiply operation {Y}=[A]{X} and [A] is a symmetric matrix, then [F] is symmetric.
For nonsymmetric problems, [F] may have nonsymmetric values as well as a different number of rows and columns. The storage used for [F] is the standard FORTRAN storage for F(NUMX, NUMY). The calculation performed is equivalent to the following FORTRAN statements:
DO I = 1,NUMX DO J = 1,NUMY F(I,J) = 0 . DO K = 1,NUMEQ F(I,J) = F(I,J) + X(K,I)*Y(K,J) END DO END DO END DOThis vectors-vectors multiply calculation is frequently used with the matrix-vectors multiply calculation for computing quadratic forms and projecting the matrix [A] into a subspace. The data structure used provides the maximum speed when several {X} and {Y} vectors are processed in parallel.
The array [F] must be aligned on a natural address boundary.