Skip to content

Commit 46dd9bd

Browse files
committed
Adding documentation to my new functions
1 parent 2b21ac7 commit 46dd9bd

File tree

4 files changed

+720
-4
lines changed

4 files changed

+720
-4
lines changed

SRC/clarfb0c2.f

Lines changed: 182 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,183 @@
1+
*> \brief \b CLARFB0C2 applies a block reflector or its conjugate-transpose
2+
* to a rectangular matrix with a 0 block while constructing the explicit Q
3+
* factor
4+
*
5+
* =========== DOCUMENTATION ===========
6+
*
7+
* Online html documentation available at
8+
* http://www.netlib.org/lapack/explore-html/
9+
*
10+
*
11+
* Definition:
12+
* ===========
13+
*
14+
* SUBROUTINE CLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
15+
* $ K, V, LDV, T, LDT, C, LDC)
16+
* ! Scalar arguments
17+
* INTEGER M, N, K, LDV, LDC, LDT
18+
* CHARACTER SIDE, TRANS, DIRECT, STOREV
19+
* ! True means that we are assuming C2 is the identity matrix
20+
* ! and thus don't reference whatever is present in C2
21+
* ! at the beginning.
22+
* LOGICAL C2I
23+
* ! Array arguments
24+
* COMPLEX V(LDV,*), C(LDC,*), T(LDT,*)
25+
*
26+
*
27+
*> \par Purpose:
28+
* =============
29+
*>
30+
*> \verbatim
31+
*>
32+
*> CLARFB0C2 applies a real block reflector H or its transpose H**H to a
33+
*> complex m by n matrix C with a 0 block, while computing the explicit Q factor
34+
*> \endverbatim
35+
*
36+
* Arguments:
37+
* ==========
38+
*
39+
*> \param[in] C2I
40+
*> \verbatim
41+
*> C2I is LOGICAL
42+
*> = .TRUE.: Assume the nonzero block of C is the identity matrix
43+
*> = .FALSE.: Use existing data in the nonzero block of C
44+
*> \endverbatim
45+
*>
46+
*> \param[in] SIDE
47+
*> \verbatim
48+
*> SIDE is CHARACTER*1
49+
*> = 'L': apply H or H**H from the Left
50+
*> = 'R': apply H or H**H from the Right
51+
*> \endverbatim
52+
*>
53+
*> \param[in] TRANS
54+
*> \verbatim
55+
*> TRANS is CHARACTER*1
56+
*> = 'N': apply H (No transpose)
57+
*> = 'C': apply H**H (Conjugate transpose)
58+
*> \endverbatim
59+
*>
60+
*> \param[in] DIRECT
61+
*> \verbatim
62+
*> DIRECT is CHARACTER*1
63+
*> Indicates how H is formed from a product of elementary
64+
*> reflectors
65+
*> = 'F': H = H(1) H(2) . . . H(k) (Forward)
66+
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
67+
*> \endverbatim
68+
*>
69+
*> \param[in] STOREV
70+
*> \verbatim
71+
*> STOREV is CHARACTER*1
72+
*> Indicates how the vectors which define the elementary
73+
*> reflectors are stored:
74+
*> = 'C': Columnwise
75+
*> = 'R': Rowwise
76+
*> \endverbatim
77+
*>
78+
*> \param[in] M
79+
*> \verbatim
80+
*> M is INTEGER
81+
*> The number of rows of the matrix C.
82+
*> \endverbatim
83+
*>
84+
*> \param[in] N
85+
*> \verbatim
86+
*> N is INTEGER
87+
*> The number of columns of the matrix C.
88+
*> \endverbatim
89+
*>
90+
*> \param[in] K
91+
*> \verbatim
92+
*> K is INTEGER
93+
*> The order of the matrix T (= the number of elementary
94+
*> reflectors whose product defines the block reflector).
95+
*> If SIDE = 'L', M >= K >= 0;
96+
*> if SIDE = 'R', N >= K >= 0.
97+
*> \endverbatim
98+
*>
99+
*> \param[in] V
100+
*> \verbatim
101+
*> V is COMPLEX array, dimension
102+
*> (LDV,K) if STOREV = 'C'
103+
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
104+
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
105+
*> See Further Details.
106+
*> \endverbatim
107+
*>
108+
*> \param[in] LDV
109+
*> \verbatim
110+
*> LDV is INTEGER
111+
*> The leading dimension of the array V.
112+
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
113+
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
114+
*> if STOREV = 'R', LDV >= K.
115+
*> \endverbatim
116+
*>
117+
*> \param[in] T
118+
*> \verbatim
119+
*> T is COMPLEX array, dimension (LDT,K)
120+
*> The triangular K-by-K matrix T in the representation of the
121+
*> block reflector.
122+
*> \endverbatim
123+
*>
124+
*> \param[in] LDT
125+
*> \verbatim
126+
*> LDT is INTEGER
127+
*> The leading dimension of the array T. LDT >= K.
128+
*> \endverbatim
129+
*>
130+
*> \param[in,out] C
131+
*> \verbatim
132+
*> C is COMPLEX array, dimension (LDC,N)
133+
*> On entry, the M-by-N matrix C.
134+
*> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H.
135+
*> \endverbatim
136+
*>
137+
*> \param[in] LDC
138+
*> \verbatim
139+
*> LDC is INTEGER
140+
*> The leading dimension of the array C. LDC >= max(1,M).
141+
*> \endverbatim
142+
*
143+
* Authors:
144+
* ========
145+
*
146+
*> \author Univ. of Tennessee
147+
*> \author Univ. of California Berkeley
148+
*> \author Univ. of Colorado Denver
149+
*> \author NAG Ltd.
150+
*
151+
*> \ingroup larfb
152+
*
153+
*> \par Further Details:
154+
* =====================
155+
*>
156+
*> \verbatim
157+
*>
158+
*> The shape of the matrix V and the storage of the vectors which define
159+
*> the H(i) is best illustrated by the following example with n = 5 and
160+
*> k = 3. The triangular part of V (including its diagonal) is not
161+
*> referenced.
162+
*>
163+
*> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
164+
*>
165+
*> V = ( 1 ) V = ( 1 v1 v1 v1 v1 )
166+
*> ( v1 1 ) ( 1 v2 v2 v2 )
167+
*> ( v1 v2 1 ) ( 1 v3 v3 )
168+
*> ( v1 v2 v3 )
169+
*> ( v1 v2 v3 )
170+
*>
171+
*> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
172+
*>
173+
*> V = ( v1 v2 v3 ) V = ( v1 v1 1 )
174+
*> ( v1 v2 v3 ) ( v2 v2 v2 1 )
175+
*> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 )
176+
*> ( 1 v3 )
177+
*> ( 1 )
178+
*> \endverbatim
179+
*>
180+
* =====================================================================
1181
SUBROUTINE CLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
2182
$ K, V, LDV, T, LDT, C, LDC)
3183
! Scalar arguments
@@ -9,7 +189,7 @@ SUBROUTINE CLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
9189
LOGICAL C2I
10190
11191
! Array arguments
12-
COMPLEX*8 V(LDV,*), C(LDC,*), T(LDT,*)
192+
COMPLEX V(LDV,*), C(LDC,*), T(LDT,*)
13193
! Local scalars
14194
LOGICAL QR, LQ, QL, DIRF, COLV, SIDEL, SIDER,
15195
$ TRANST
@@ -22,7 +202,7 @@ SUBROUTINE CLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
22202
! External Subroutines
23203
EXTERNAL CGEMM, CTRMM
24204
! Parameters
25-
COMPLEX*8 ONE, ZERO, NEG_ONE
205+
COMPLEX ONE, ZERO, NEG_ONE
26206
PARAMETER(ONE=(1.0E+0, 0.0E+0),
27207
$ ZERO = (0.0E+0, 0.0E+0),
28208
$ NEG_ONE = (-1.0E+0, 0.0E+0))

SRC/dlarfb0c2.f

Lines changed: 179 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,182 @@
1+
*> \brief \b DLARFB0C2 applies a block reflector or its transpose to a
2+
* rectangular matrix with a 0 block while constructing the explicit Q factor
3+
*
4+
* =========== DOCUMENTATION ===========
5+
*
6+
* Online html documentation available at
7+
* http://www.netlib.org/lapack/explore-html/
8+
*
9+
*
10+
* Definition:
11+
* ===========
12+
*
13+
* SUBROUTINE DLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
14+
* $ K, V, LDV, T, LDT, C, LDC)
15+
* ! Scalar arguments
16+
* INTEGER M, N, K, LDV, LDC, LDT
17+
* CHARACTER SIDE, TRANS, DIRECT, STOREV
18+
* ! True means that we are assuming C2 is the identity matrix
19+
* ! and thus don't reference whatever is present in C2
20+
* ! at the beginning.
21+
* LOGICAL C2I
22+
* ! Array arguments
23+
* DOUBLE PRECISION V(LDV,*), C(LDC,*), T(LDT,*)
24+
*
25+
*
26+
*> \par Purpose:
27+
* =============
28+
*>
29+
*> \verbatim
30+
*>
31+
*> DLARFB0C2 applies a real block reflector H or its transpose H**T to a
32+
*> real m by n matrix C with a 0 block, while computing the explicit Q factor
33+
*> \endverbatim
34+
*
35+
* Arguments:
36+
* ==========
37+
*
38+
*> \param[in] C2I
39+
*> \verbatim
40+
*> C2I is LOGICAL
41+
*> = .TRUE.: Assume the nonzero block of C is the identity matrix
42+
*> = .FALSE.: Use existing data in the nonzero block of C
43+
*> \endverbatim
44+
*>
45+
*> \param[in] SIDE
46+
*> \verbatim
47+
*> SIDE is CHARACTER*1
48+
*> = 'L': apply H or H**T from the Left
49+
*> = 'R': apply H or H**T from the Right
50+
*> \endverbatim
51+
*>
52+
*> \param[in] TRANS
53+
*> \verbatim
54+
*> TRANS is CHARACTER*1
55+
*> = 'N': apply H (No transpose)
56+
*> = 'T': apply H**T (Transpose)
57+
*> \endverbatim
58+
*>
59+
*> \param[in] DIRECT
60+
*> \verbatim
61+
*> DIRECT is CHARACTER*1
62+
*> Indicates how H is formed from a product of elementary
63+
*> reflectors
64+
*> = 'F': H = H(1) H(2) . . . H(k) (Forward)
65+
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
66+
*> \endverbatim
67+
*>
68+
*> \param[in] STOREV
69+
*> \verbatim
70+
*> STOREV is CHARACTER*1
71+
*> Indicates how the vectors which define the elementary
72+
*> reflectors are stored:
73+
*> = 'C': Columnwise
74+
*> = 'R': Rowwise
75+
*> \endverbatim
76+
*>
77+
*> \param[in] M
78+
*> \verbatim
79+
*> M is INTEGER
80+
*> The number of rows of the matrix C.
81+
*> \endverbatim
82+
*>
83+
*> \param[in] N
84+
*> \verbatim
85+
*> N is INTEGER
86+
*> The number of columns of the matrix C.
87+
*> \endverbatim
88+
*>
89+
*> \param[in] K
90+
*> \verbatim
91+
*> K is INTEGER
92+
*> The order of the matrix T (= the number of elementary
93+
*> reflectors whose product defines the block reflector).
94+
*> If SIDE = 'L', M >= K >= 0;
95+
*> if SIDE = 'R', N >= K >= 0.
96+
*> \endverbatim
97+
*>
98+
*> \param[in] V
99+
*> \verbatim
100+
*> V is DOUBLE PRECISION array, dimension
101+
*> (LDV,K) if STOREV = 'C'
102+
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
103+
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
104+
*> The matrix V. See Further Details.
105+
*> \endverbatim
106+
*>
107+
*> \param[in] LDV
108+
*> \verbatim
109+
*> LDV is INTEGER
110+
*> The leading dimension of the array V.
111+
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
112+
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
113+
*> if STOREV = 'R', LDV >= K.
114+
*> \endverbatim
115+
*>
116+
*> \param[in] T
117+
*> \verbatim
118+
*> T is DOUBLE PRECISION array, dimension (LDT,K)
119+
*> The triangular k by k matrix T in the representation of the
120+
*> block reflector.
121+
*> \endverbatim
122+
*>
123+
*> \param[in] LDT
124+
*> \verbatim
125+
*> LDT is INTEGER
126+
*> The leading dimension of the array T. LDT >= K.
127+
*> \endverbatim
128+
*>
129+
*> \param[in,out] C
130+
*> \verbatim
131+
*> C is DOUBLE PRECISION array, dimension (LDC,N)
132+
*> On entry, the m by n matrix C.
133+
*> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T.
134+
*> \endverbatim
135+
*>
136+
*> \param[in] LDC
137+
*> \verbatim
138+
*> LDC is INTEGER
139+
*> The leading dimension of the array C. LDC >= max(1,M).
140+
*> \endverbatim
141+
*
142+
* Authors:
143+
* ========
144+
*
145+
*> \author Univ. of Tennessee
146+
*> \author Univ. of California Berkeley
147+
*> \author Univ. of Colorado Denver
148+
*> \author NAG Ltd.
149+
*
150+
*> \ingroup larfb
151+
*
152+
*> \par Further Details:
153+
* =====================
154+
*>
155+
*> \verbatim
156+
*>
157+
*> The shape of the matrix V and the storage of the vectors which define
158+
*> the H(i) is best illustrated by the following example with n = 5 and
159+
*> k = 3. The triangular part of V (including its diagonal) is not
160+
*> referenced.
161+
*>
162+
*> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
163+
*>
164+
*> V = ( 1 ) V = ( 1 v1 v1 v1 v1 )
165+
*> ( v1 1 ) ( 1 v2 v2 v2 )
166+
*> ( v1 v2 1 ) ( 1 v3 v3 )
167+
*> ( v1 v2 v3 )
168+
*> ( v1 v2 v3 )
169+
*>
170+
*> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
171+
*>
172+
*> V = ( v1 v2 v3 ) V = ( v1 v1 1 )
173+
*> ( v1 v2 v3 ) ( v2 v2 v2 1 )
174+
*> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 )
175+
*> ( 1 v3 )
176+
*> ( 1 )
177+
*> \endverbatim
178+
*>
179+
* =====================================================================
1180
SUBROUTINE DLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
2181
$ K, V, LDV, T, LDT, C, LDC)
3182
! Scalar arguments
@@ -7,7 +186,6 @@ SUBROUTINE DLARFB0C2(C2I, SIDE, TRANS, DIRECT, STOREV, M, N,
7186
! and thus don't reference whatever is present in C2
8187
! at the beginning.
9188
LOGICAL C2I
10-
11189
! Array arguments
12190
DOUBLE PRECISION V(LDV,*), C(LDC,*), T(LDT,*)
13191
! Local scalars

0 commit comments

Comments
 (0)