1DORMTR(1)                LAPACK routine (version 3.2)                DORMTR(1)
2
3
4

NAME

6       DORMTR  - overwrites the general real M-by-N matrix C with   SIDE = 'L'
7       SIDE = 'R' TRANS = 'N'
8

SYNOPSIS

10       SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,  WORK,
11                          LWORK, INFO )
12
13           CHARACTER      SIDE, TRANS, UPLO
14
15           INTEGER        INFO, LDA, LDC, LWORK, M, N
16
17           DOUBLE         PRECISION  A( LDA, * ), C( LDC, * ), TAU( * ), WORK(
18                          * )
19

PURPOSE

21       DORMTR overwrites the general real M-by-N matrix C with  TRANS  =  'T':
22       Q**T * C       C * Q**T
23       where  Q is a real orthogonal matrix of order nq, with nq = m if SIDE =
24       'L' and nq = n if SIDE = 'R'. Q is defined as the product of nq-1  ele‐
25       mentary reflectors, as returned by DSYTRD:
26       if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1);
27       if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1).
28

ARGUMENTS

30       SIDE    (input) CHARACTER*1
31               = 'L': apply Q or Q**T from the Left;
32               = 'R': apply Q or Q**T from the Right.
33
34       UPLO    (input) CHARACTER*1
35               =  'U': Upper triangle of A contains elementary reflectors from
36               DSYTRD; = 'L': Lower triangle of A contains elementary  reflec‐
37               tors from DSYTRD.
38
39       TRANS   (input) CHARACTER*1
40               = 'N':  No transpose, apply Q;
41               = 'T':  Transpose, apply Q**T.
42
43       M       (input) INTEGER
44               The number of rows of the matrix C. M >= 0.
45
46       N       (input) INTEGER
47               The number of columns of the matrix C. N >= 0.
48
49       A       (input) DOUBLE PRECISION array, dimension
50               (LDA,M)  if  SIDE = 'L' (LDA,N) if SIDE = 'R' The vectors which
51               define the elementary reflectors, as returned by DSYTRD.
52
53       LDA     (input) INTEGER
54               The leading dimension of the array A.  LDA >= max(1,M) if  SIDE
55               = 'L'; LDA >= max(1,N) if SIDE = 'R'.
56
57       TAU     (input) DOUBLE PRECISION array, dimension
58               (M-1) if SIDE = 'L' (N-1) if SIDE = 'R' TAU(i) must contain the
59               scalar factor of the elementary reflector H(i), as returned  by
60               DSYTRD.
61
62       C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
63               On  entry,  the  M-by-N matrix C.  On exit, C is overwritten by
64               Q*C or Q**T*C or C*Q**T or C*Q.
65
66       LDC     (input) INTEGER
67               The leading dimension of the array C. LDC >= max(1,M).
68
69       WORK      (workspace/output)   DOUBLE   PRECISION   array,    dimension
70       (MAX(1,LWORK))
71               On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
72
73       LWORK   (input) INTEGER
74               The  dimension  of  the  array  WORK.   If SIDE = 'L', LWORK >=
75               max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For  optimum  per‐
76               formance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if SIDE
77               = 'R', where NB is the optimal blocksize.  If LWORK = -1,  then
78               a  workspace  query is assumed; the routine only calculates the
79               optimal size of the WORK array, returns this value as the first
80               entry  of the WORK array, and no error message related to LWORK
81               is issued by XERBLA.
82
83       INFO    (output) INTEGER
84               = 0:  successful exit
85               < 0:  if INFO = -i, the i-th argument had an illegal value
86
87
88
89 LAPACK routine (version 3.2)    November 2008                       DORMTR(1)
Impressum