1DORMTR(1) LAPACK routine (version 3.2) DORMTR(1)
2
3
4
6 DORMTR - overwrites the general real M-by-N matrix C with SIDE = 'L'
7 SIDE = 'R' TRANS = 'N'
8
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
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
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)