File: dlaqr5

package info (click to toggle)
ruby-lapack 1.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 28,552 kB
  • sloc: ansic: 191,612; ruby: 3,934; makefile: 8
file content (230 lines) | stat: -rwxr-xr-x 7,661 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
--- 
:name: dlaqr5
:md5sum: 7e0db3e70152db066243f2fdafb92b99
:category: :subroutine
:arguments: 
- wantt: 
    :type: logical
    :intent: input
- wantz: 
    :type: logical
    :intent: input
- kacc22: 
    :type: integer
    :intent: input
- n: 
    :type: integer
    :intent: input
- ktop: 
    :type: integer
    :intent: input
- kbot: 
    :type: integer
    :intent: input
- nshfts: 
    :type: integer
    :intent: input
- sr: 
    :type: doublereal
    :intent: input/output
    :dims: 
    - nshfts
- si: 
    :type: doublereal
    :intent: input/output
    :dims: 
    - nshfts
- h: 
    :type: doublereal
    :intent: input/output
    :dims: 
    - ldh
    - n
- ldh: 
    :type: integer
    :intent: input
- iloz: 
    :type: integer
    :intent: input
- ihiz: 
    :type: integer
    :intent: input
- z: 
    :type: doublereal
    :intent: input/output
    :dims: 
    - "wantz ? ldz : 0"
    - "wantz ? ihiz : 0"
- ldz: 
    :type: integer
    :intent: input
- v: 
    :type: doublereal
    :intent: workspace
    :dims: 
    - ldv
    - nshfts/2
- ldv: 
    :type: integer
    :intent: input
- u: 
    :type: doublereal
    :intent: workspace
    :dims: 
    - ldu
    - 3*nshfts-3
- ldu: 
    :type: integer
    :intent: input
- nv: 
    :type: integer
    :intent: input
- wv: 
    :type: doublereal
    :intent: workspace
    :dims: 
    - ldwv
    - 3*nshfts-3
- ldwv: 
    :type: integer
    :intent: input
- nh: 
    :type: integer
    :intent: input
- wh: 
    :type: doublereal
    :intent: workspace
    :dims: 
    - ldwh
    - MAX(1,nh)
- ldwh: 
    :type: integer
    :intent: input
:substitutions: 
  ldwh: 3*nshfts-3
  ldz: n
  ldwv: nv
  ldu: 3*nshfts-3
  ldv: "3"
:fortran_help: "      SUBROUTINE DLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV, LDWV, NH, WH, LDWH )\n\n\
  *     This auxiliary subroutine called by DLAQR0 performs a\n\
  *     single small-bulge multi-shift QR sweep.\n\
  *\n\n\
  *      WANTT  (input) logical scalar\n\
  *             WANTT = .true. if the quasi-triangular Schur factor\n\
  *             is being computed.  WANTT is set to .false. otherwise.\n\
  *\n\
  *      WANTZ  (input) logical scalar\n\
  *             WANTZ = .true. if the orthogonal Schur factor is being\n\
  *             computed.  WANTZ is set to .false. otherwise.\n\
  *\n\
  *      KACC22 (input) integer with value 0, 1, or 2.\n\
  *             Specifies the computation mode of far-from-diagonal\n\
  *             orthogonal updates.\n\
  *        = 0: DLAQR5 does not accumulate reflections and does not\n\
  *             use matrix-matrix multiply to update far-from-diagonal\n\
  *             matrix entries.\n\
  *        = 1: DLAQR5 accumulates reflections and uses matrix-matrix\n\
  *             multiply to update the far-from-diagonal matrix entries.\n\
  *        = 2: DLAQR5 accumulates reflections, uses matrix-matrix\n\
  *             multiply to update the far-from-diagonal matrix entries,\n\
  *             and takes advantage of 2-by-2 block structure during\n\
  *             matrix multiplies.\n\
  *\n\
  *      N      (input) integer scalar\n\
  *             N is the order of the Hessenberg matrix H upon which this\n\
  *             subroutine operates.\n\
  *\n\
  *      KTOP   (input) integer scalar\n\
  *      KBOT   (input) integer scalar\n\
  *             These are the first and last rows and columns of an\n\
  *             isolated diagonal block upon which the QR sweep is to be\n\
  *             applied. It is assumed without a check that\n\
  *                       either KTOP = 1  or   H(KTOP,KTOP-1) = 0\n\
  *             and\n\
  *                       either KBOT = N  or   H(KBOT+1,KBOT) = 0.\n\
  *\n\
  *      NSHFTS (input) integer scalar\n\
  *             NSHFTS gives the number of simultaneous shifts.  NSHFTS\n\
  *             must be positive and even.\n\
  *\n\
  *      SR     (input/output) DOUBLE PRECISION array of size (NSHFTS)\n\
  *      SI     (input/output) DOUBLE PRECISION array of size (NSHFTS)\n\
  *             SR contains the real parts and SI contains the imaginary\n\
  *             parts of the NSHFTS shifts of origin that define the\n\
  *             multi-shift QR sweep.  On output SR and SI may be\n\
  *             reordered.\n\
  *\n\
  *      H      (input/output) DOUBLE PRECISION array of size (LDH,N)\n\
  *             On input H contains a Hessenberg matrix.  On output a\n\
  *             multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied\n\
  *             to the isolated diagonal block in rows and columns KTOP\n\
  *             through KBOT.\n\
  *\n\
  *      LDH    (input) integer scalar\n\
  *             LDH is the leading dimension of H just as declared in the\n\
  *             calling procedure.  LDH.GE.MAX(1,N).\n\
  *\n\
  *      ILOZ   (input) INTEGER\n\
  *      IHIZ   (input) INTEGER\n\
  *             Specify the rows of Z to which transformations must be\n\
  *             applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N\n\
  *\n\
  *      Z      (input/output) DOUBLE PRECISION array of size (LDZ,IHI)\n\
  *             If WANTZ = .TRUE., then the QR Sweep orthogonal\n\
  *             similarity transformation is accumulated into\n\
  *             Z(ILOZ:IHIZ,ILO:IHI) from the right.\n\
  *             If WANTZ = .FALSE., then Z is unreferenced.\n\
  *\n\
  *      LDZ    (input) integer scalar\n\
  *             LDA is the leading dimension of Z just as declared in\n\
  *             the calling procedure. LDZ.GE.N.\n\
  *\n\
  *      V      (workspace) DOUBLE PRECISION array of size (LDV,NSHFTS/2)\n\
  *\n\
  *      LDV    (input) integer scalar\n\
  *             LDV is the leading dimension of V as declared in the\n\
  *             calling procedure.  LDV.GE.3.\n\
  *\n\
  *      U      (workspace) DOUBLE PRECISION array of size\n\
  *             (LDU,3*NSHFTS-3)\n\
  *\n\
  *      LDU    (input) integer scalar\n\
  *             LDU is the leading dimension of U just as declared in the\n\
  *             in the calling subroutine.  LDU.GE.3*NSHFTS-3.\n\
  *\n\
  *      NH     (input) integer scalar\n\
  *             NH is the number of columns in array WH available for\n\
  *             workspace. NH.GE.1.\n\
  *\n\
  *      WH     (workspace) DOUBLE PRECISION array of size (LDWH,NH)\n\
  *\n\
  *      LDWH   (input) integer scalar\n\
  *             Leading dimension of WH just as declared in the\n\
  *             calling procedure.  LDWH.GE.3*NSHFTS-3.\n\
  *\n\
  *      NV     (input) integer scalar\n\
  *             NV is the number of rows in WV agailable for workspace.\n\
  *             NV.GE.1.\n\
  *\n\
  *      WV     (workspace) DOUBLE PRECISION array of size\n\
  *             (LDWV,3*NSHFTS-3)\n\
  *\n\
  *      LDWV   (input) integer scalar\n\
  *             LDWV is the leading dimension of WV as declared in the\n\
  *             in the calling subroutine.  LDWV.GE.NV.\n\
  *\n\n\
  *     ================================================================\n\
  *     Based on contributions by\n\
  *        Karen Braman and Ralph Byers, Department of Mathematics,\n\
  *        University of Kansas, USA\n\
  *\n\
  *     ================================================================\n\
  *     Reference:\n\
  *\n\
  *     K. Braman, R. Byers and R. Mathias, The Multi-Shift QR\n\
  *     Algorithm Part I: Maintaining Well Focused Shifts, and\n\
  *     Level 3 Performance, SIAM Journal of Matrix Analysis,\n\
  *     volume 23, pages 929--947, 2002.\n\
  *\n\
  *     ================================================================\n"