dopmtr (l)  Linux Man Pages
dopmtr: overwrites the general real MbyN matrix C with SIDE = aqLaq SIDE = aqRaq TRANS = aqNaq
NAME
DOPMTR  overwrites the general real MbyN matrix C with SIDE = aqLaq SIDE = aqRaq TRANS = aqNaqSYNOPSIS
 SUBROUTINE DOPMTR(
 SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO )
 CHARACTER SIDE, TRANS, UPLO
 INTEGER INFO, LDC, M, N
 DOUBLE PRECISION AP( * ), C( LDC, * ), TAU( * ), WORK( * )
PURPOSE
DOPMTR overwrites the general real MbyN matrix C with TRANS = aqTaq: Q**T * C C * Q**Twhere Q is a real orthogonal matrix of order nq, with nq = m if SIDE = aqLaq and nq = n if SIDE = aqRaq. Q is defined as the product of nq1 elementary reflectors, as returned by DSPTRD using packed storage:
if UPLO = aqUaq, Q = H(nq1) . . . H(2) H(1);
if UPLO = aqLaq, Q = H(1) H(2) . . . H(nq1).
ARGUMENTS
 SIDE (input) CHARACTER*1

= aqLaq: apply Q or Q**T from the Left;
= aqRaq: apply Q or Q**T from the Right.  UPLO (input) CHARACTER*1

= aqUaq: Upper triangular packed storage used in previous call to DSPTRD; = aqLaq: Lower triangular packed storage used in previous call to DSPTRD.  TRANS (input) CHARACTER*1

= aqNaq: No transpose, apply Q;
= aqTaq: Transpose, apply Q**T.  M (input) INTEGER
 The number of rows of the matrix C. M >= 0.
 N (input) INTEGER
 The number of columns of the matrix C. N >= 0.
 AP (input) DOUBLE PRECISION array, dimension
 (M*(M+1)/2) if SIDE = aqLaq (N*(N+1)/2) if SIDE = aqRaq The vectors which define the elementary reflectors, as returned by DSPTRD. AP is modified by the routine but restored on exit.
 TAU (input) DOUBLE PRECISION array, dimension (M1) if SIDE = aqLaq
 or (N1) if SIDE = aqRaq TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by DSPTRD.
 C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
 On entry, the MbyN matrix C. On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
 LDC (input) INTEGER
 The leading dimension of the array C. LDC >= max(1,M).
 WORK (workspace) DOUBLE PRECISION array, dimension
 (N) if SIDE = aqLaq (M) if SIDE = aqRaq
 INFO (output) INTEGER

= 0: successful exit
< 0: if INFO = i, the ith argument had an illegal value