4 Reviewed-by: Sébastien Villemot <sebastien@debian.org>
5 Last-Update: 2014-08-07
12 MNTHR = ILAENV( 6,
'CGESVD', JOBU
13 * Compute space needed
for CGEQRF
14 - CALL CGEQRF( M,
N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
16 + CALL CGEQRF( M,
N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
17 + LWORK_CGEQRF=CDUM(1)
18 * Compute space needed
for CUNGQR
19 - CALL CUNGQR( M,
N,
N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
20 - LWORK_CUNGQR_N=DUM(1)
21 - CALL CUNGQR( M, M,
N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
22 - LWORK_CUNGQR_M=DUM(1)
23 + CALL CUNGQR( M,
N,
N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
24 + LWORK_CUNGQR_N=CDUM(1)
25 + CALL CUNGQR( M, M,
N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
26 + LWORK_CUNGQR_M=CDUM(1)
27 * Compute space needed
for CGEBRD
28 - CALL CGEBRD(
N,
N,
A,
LDA, S, DUM(1), DUM(1),
29 - $ DUM(1), DUM(1), -1, IERR )
31 + CALL CGEBRD(
N,
N,
A,
LDA, S, DUM(1), CDUM(1),
32 + $ CDUM(1), CDUM(1), -1, IERR )
33 + LWORK_CGEBRD=CDUM(1)
34 * Compute space needed
for CUNGBR
35 - CALL CUNGBR(
'P',
N,
N,
N,
A,
LDA, DUM(1),
36 - $ DUM(1), -1, IERR )
37 - LWORK_CUNGBR_P=DUM(1)
38 - CALL CUNGBR(
'Q',
N,
N,
N,
A,
LDA, DUM(1),
39 - $ DUM(1), -1, IERR )
40 - LWORK_CUNGBR_Q=DUM(1)
41 + CALL CUNGBR(
'P',
N,
N,
N,
A,
LDA, CDUM(1),
42 + $ CDUM(1), -1, IERR )
43 + LWORK_CUNGBR_P=CDUM(1)
44 + CALL CUNGBR(
'Q',
N,
N,
N,
A,
LDA, CDUM(1),
45 + $ CDUM(1), -1, IERR )
46 + LWORK_CUNGBR_Q=CDUM(1)
48 MNTHR = ILAENV( 6,
'CGESVD', JOBU
52 * Path 10 (M at least
N, but not much larger)
54 - CALL CGEBRD( M, N,
A,
LDA, S, DUM(1), DUM(1),
55 - $ DUM(1), DUM(1), -1, IERR )
57 + CALL CGEBRD( M, N,
A,
LDA, S, DUM(1), CDUM(1),
58 + $ CDUM(1), CDUM(1), -1, IERR )
59 + LWORK_CGEBRD=CDUM(1)
60 MAXWRK = 2*N + LWORK_CGEBRD
61 IF( WNTUS .OR. WNTUO ) THEN
62 - CALL CUNGBR(
'Q', M, N, N,
A,
LDA, DUM(1),
63 - $ DUM(1), -1, IERR )
64 - LWORK_CUNGBR_Q=DUM(1)
65 + CALL CUNGBR(
'Q', M, N, N,
A,
LDA, CDUM(1),
66 + $ CDUM(1), -1, IERR )
67 + LWORK_CUNGBR_Q=CDUM(1)
68 MAXWRK =
MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
71 - CALL CUNGBR(
'Q', M, M, N,
A,
LDA, DUM(1),
72 - $ DUM(1), -1, IERR )
73 - LWORK_CUNGBR_Q=DUM(1)
74 + CALL CUNGBR(
'Q', M, M, N,
A,
LDA, CDUM(1),
75 + $ CDUM(1), -1, IERR )
76 + LWORK_CUNGBR_Q=CDUM(1)
77 MAXWRK =
MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
82 MNTHR = ILAENV( 6,
'CGESVD', JOBU
83 * Compute space needed
for CGELQF
84 - CALL CGELQF( M, N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
86 + CALL CGELQF( M, N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
87 + LWORK_CGELQF=CDUM(1)
88 * Compute space needed
for CUNGLQ
89 - CALL CUNGLQ( N, N, M, DUM(1), N, DUM(1), DUM(1), -1, IERR )
90 - LWORK_CUNGLQ_N=DUM(1)
91 - CALL CUNGLQ( M, N, M,
A,
LDA, DUM(1), DUM(1), -1, IERR )
92 - LWORK_CUNGLQ_M=DUM(1)
93 + CALL CUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1,
95 + LWORK_CUNGLQ_N=CDUM(1)
96 + CALL CUNGLQ( M, N, M,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
97 + LWORK_CUNGLQ_M=CDUM(1)
98 * Compute space needed
for CGEBRD
99 - CALL CGEBRD( M, M,
A,
LDA, S, DUM(1), DUM(1),
100 - $ DUM(1), DUM(1), -1, IERR )
101 - LWORK_CGEBRD=DUM(1)
102 + CALL CGEBRD( M, M,
A,
LDA, S, DUM(1), CDUM(1),
103 + $ CDUM(1), CDUM(1), -1, IERR )
104 + LWORK_CGEBRD=CDUM(1)
105 * Compute space needed
for CUNGBR P
106 - CALL CUNGBR(
'P', M, M, M,
A, N, DUM(1),
107 - $ DUM(1), -1, IERR )
108 - LWORK_CUNGBR_P=DUM(1)
109 + CALL CUNGBR(
'P', M, M, M,
A, N, CDUM(1),
110 + $ CDUM(1), -1, IERR )
111 + LWORK_CUNGBR_P=CDUM(1)
112 * Compute space needed
for CUNGBR Q
113 - CALL CUNGBR(
'Q', M, M, M,
A, N, DUM(1),
114 - $ DUM(1), -1, IERR )
115 - LWORK_CUNGBR_Q=DUM(1)
116 + CALL CUNGBR(
'Q', M, M, M,
A, N, CDUM(1),
117 + $ CDUM(1), -1, IERR )
118 + LWORK_CUNGBR_Q=CDUM(1)
119 IF( N.GE.MNTHR ) THEN
122 @@ -593,21 +594,21 @@
124 * Path 10t(N greater than M, but not much larger)
126 - CALL CGEBRD( M, N,
A,
LDA, S, DUM(1), DUM(1),
127 - $ DUM(1), DUM(1), -1, IERR )
128 - LWORK_CGEBRD=DUM(1)
129 + CALL CGEBRD( M, N,
A,
LDA, S, DUM(1), CDUM(1),
130 + $ CDUM(1), CDUM(1), -1, IERR )
131 + LWORK_CGEBRD=CDUM(1)
132 MAXWRK = 2*M + LWORK_CGEBRD
133 IF( WNTVS .OR. WNTVO ) THEN
134 * Compute space needed
for CUNGBR P
135 - CALL CUNGBR(
'P', M, N, M,
A, N, DUM(1),
136 - $ DUM(1), -1, IERR )
137 - LWORK_CUNGBR_P=DUM(1)
138 + CALL CUNGBR(
'P', M, N, M,
A, N, CDUM(1),
139 + $ CDUM(1), -1, IERR )
140 + LWORK_CUNGBR_P=CDUM(1)
141 MAXWRK =
MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
144 - CALL CUNGBR(
'P', N, N, M,
A, N, DUM(1),
145 - $ DUM(1), -1, IERR )
146 - LWORK_CUNGBR_P=DUM(1)
147 + CALL CUNGBR(
'P', N, N, M,
A, N, CDUM(1),
148 + $ CDUM(1), -1, IERR )
149 + LWORK_CUNGBR_P=CDUM(1)
150 MAXWRK =
MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
152 IF( .NOT.WNTUN ) THEN
155 @@ -321,24 +321,24 @@
157 MNTHR = ILAENV( 6,
'ZGESVD', JOBU
158 * Compute space needed
for ZGEQRF
159 - CALL ZGEQRF( M, N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
160 - LWORK_ZGEQRF=DUM(1)
161 + CALL ZGEQRF( M, N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
162 + LWORK_ZGEQRF=CDUM(1)
163 * Compute space needed
for ZUNGQR
164 - CALL ZUNGQR( M, N, N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
165 - LWORK_ZUNGQR_N=DUM(1)
166 - CALL ZUNGQR( M, M, N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
167 - LWORK_ZUNGQR_M=DUM(1)
168 + CALL ZUNGQR( M, N, N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
169 + LWORK_ZUNGQR_N=CDUM(1)
170 + CALL ZUNGQR( M, M, N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
171 + LWORK_ZUNGQR_M=CDUM(1)
172 * Compute space needed
for ZGEBRD
173 - CALL ZGEBRD( N, N,
A,
LDA, S, DUM(1), DUM(1),
174 - $ DUM(1), DUM(1), -1, IERR )
175 - LWORK_ZGEBRD=DUM(1)
176 + CALL ZGEBRD( N, N,
A,
LDA, S, DUM(1), CDUM(1),
177 + $ CDUM(1), CDUM(1), -1, IERR )
178 + LWORK_ZGEBRD=CDUM(1)
179 * Compute space needed
for ZUNGBR
180 - CALL ZUNGBR(
'P', N, N, N,
A,
LDA, DUM(1),
181 - $ DUM(1), -1, IERR )
182 - LWORK_ZUNGBR_P=DUM(1)
183 - CALL ZUNGBR(
'Q', N, N, N,
A,
LDA, DUM(1),
184 - $ DUM(1), -1, IERR )
185 - LWORK_ZUNGBR_Q=DUM(1)
186 + CALL ZUNGBR(
'P', N, N, N,
A,
LDA, CDUM(1),
187 + $ CDUM(1), -1, IERR )
188 + LWORK_ZUNGBR_P=CDUM(1)
189 + CALL ZUNGBR(
'Q', N, N, N,
A,
LDA, CDUM(1),
190 + $ CDUM(1), -1, IERR )
191 + LWORK_ZUNGBR_Q=CDUM(1)
193 IF( M.GE.MNTHR ) THEN
195 @@ -443,20 +443,20 @@
197 * Path 10 (M at least N, but not much larger)
199 - CALL ZGEBRD( M, N,
A,
LDA, S, DUM(1), DUM(1),
200 - $ DUM(1), DUM(1), -1, IERR )
201 - LWORK_ZGEBRD=DUM(1)
202 + CALL ZGEBRD( M, N,
A,
LDA, S, DUM(1), CDUM(1),
203 + $ CDUM(1), CDUM(1), -1, IERR )
204 + LWORK_ZGEBRD=CDUM(1)
205 MAXWRK = 2*N + LWORK_ZGEBRD
206 IF( WNTUS .OR. WNTUO ) THEN
207 - CALL ZUNGBR(
'Q', M, N, N,
A,
LDA, DUM(1),
208 - $ DUM(1), -1, IERR )
209 - LWORK_ZUNGBR_Q=DUM(1)
210 + CALL ZUNGBR(
'Q', M, N, N,
A,
LDA, CDUM(1),
211 + $ CDUM(1), -1, IERR )
212 + LWORK_ZUNGBR_Q=CDUM(1)
213 MAXWRK =
MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )
216 - CALL ZUNGBR(
'Q', M, M, N,
A,
LDA, DUM(1),
217 - $ DUM(1), -1, IERR )
218 - LWORK_ZUNGBR_Q=DUM(1)
219 + CALL ZUNGBR(
'Q', M, M, N,
A,
LDA, CDUM(1),
220 + $ CDUM(1), -1, IERR )
221 + LWORK_ZUNGBR_Q=CDUM(1)
222 MAXWRK =
MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )
224 IF( .NOT.WNTVN ) THEN
225 @@ -470,25 +470,26 @@
227 MNTHR = ILAENV( 6,
'ZGESVD', JOBU
228 * Compute space needed
for ZGELQF
229 - CALL ZGELQF( M, N,
A,
LDA, DUM(1), DUM(1), -1, IERR )
230 - LWORK_ZGELQF=DUM(1)
231 + CALL ZGELQF( M, N,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
232 + LWORK_ZGELQF=CDUM(1)
233 * Compute space needed
for ZUNGLQ
234 - CALL ZUNGLQ( N, N, M, DUM(1), N, DUM(1), DUM(1), -1, IERR )
235 - LWORK_ZUNGLQ_N=DUM(1)
236 - CALL ZUNGLQ( M, N, M,
A,
LDA, DUM(1), DUM(1), -1, IERR )
237 - LWORK_ZUNGLQ_M=DUM(1)
238 + CALL ZUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1,
240 + LWORK_ZUNGLQ_N=CDUM(1)
241 + CALL ZUNGLQ( M, N, M,
A,
LDA, CDUM(1), CDUM(1), -1, IERR )
242 + LWORK_ZUNGLQ_M=CDUM(1)
243 * Compute space needed
for ZGEBRD
244 - CALL ZGEBRD( M, M,
A,
LDA, S, DUM(1), DUM(1),
245 - $ DUM(1), DUM(1), -1, IERR )
246 - LWORK_ZGEBRD=DUM(1)
247 + CALL ZGEBRD( M, M,
A,
LDA, S, DUM(1), CDUM(1),
248 + $ CDUM(1), CDUM(1), -1, IERR )
249 + LWORK_ZGEBRD=CDUM(1)
250 * Compute space needed
for ZUNGBR P
251 - CALL ZUNGBR(
'P', M, M, M,
A, N, DUM(1),
252 - $ DUM(1), -1, IERR )
253 - LWORK_ZUNGBR_P=DUM(1)
254 + CALL ZUNGBR(
'P', M, M, M,
A, N, CDUM(1),
255 + $ CDUM(1), -1, IERR )
256 + LWORK_ZUNGBR_P=CDUM(1)
257 * Compute space needed
for ZUNGBR Q
258 - CALL ZUNGBR(
'Q', M, M, M,
A, N, DUM(1),
259 - $ DUM(1), -1, IERR )
260 - LWORK_ZUNGBR_Q=DUM(1)
261 + CALL ZUNGBR(
'Q', M, M, M,
A, N, CDUM(1),
262 + $ CDUM(1), -1, IERR )
263 + LWORK_ZUNGBR_Q=CDUM(1)
264 IF( N.GE.MNTHR ) THEN
267 @@ -592,21 +593,21 @@
269 * Path 10t(N greater than M, but not much larger)
271 - CALL ZGEBRD( M, N,
A,
LDA, S, DUM(1), DUM(1),
272 - $ DUM(1), DUM(1), -1, IERR )
273 - LWORK_ZGEBRD=DUM(1)
274 + CALL ZGEBRD( M, N,
A,
LDA, S, DUM(1), CDUM(1),
275 + $ CDUM(1), CDUM(1), -1, IERR )
276 + LWORK_ZGEBRD=CDUM(1)
277 MAXWRK = 2*M + LWORK_ZGEBRD
278 IF( WNTVS .OR. WNTVO ) THEN
279 * Compute space needed
for ZUNGBR P
280 - CALL ZUNGBR(
'P', M, N, M,
A, N, DUM(1),
281 - $ DUM(1), -1, IERR )
282 - LWORK_ZUNGBR_P=DUM(1)
283 + CALL ZUNGBR(
'P', M, N, M,
A, N, CDUM(1),
284 + $ CDUM(1), -1, IERR )
285 + LWORK_ZUNGBR_P=CDUM(1)
286 MAXWRK =
MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )
289 - CALL ZUNGBR(
'P', N, N, M,
A, N, DUM(1),
290 - $ DUM(1), -1, IERR )
291 - LWORK_ZUNGBR_P=DUM(1)
292 + CALL ZUNGBR(
'P', N, N, M,
A, N, CDUM(1),
293 + $ CDUM(1), -1, IERR )
294 + LWORK_ZUNGBR_P=CDUM(1)
295 MAXWRK =
MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )
297 IF( .NOT.WNTUN ) THEN
Description IF(SN.NE.ZERO) THEN IF(CS.NE.ZERO) THEN ISUPPZ(2 *M-1)
adapt the repackaging code *Remove recursive patch Replace it by the frecursive flag to as recommended by upstream for fixing *debian no changes needed *Ship lapacke PDF in liblapack doc *doxygen exclude binary objects patch
subroutine cgesvd(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, INFO)
CGESVD computes the singular value decomposition (SVD) for GE matrices
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real * A(3, 3)
subroutine zgesvd(JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, LWORK, RWORK, INFO)
ZGESVD computes the singular value decomposition (SVD) for GE matrices
Choosing ILP64 Data Model To choose ILP64 data use the following const float *The purpose and format of these predicate functions are described in the LAPACK documentation This interface passes the pointer to the corresponding LAPACK routine as it is Be cautious with return values of the logical type if you link against LAPACK compiled with Fortran compiler Whereas all non zero values are treated as TRUE some Fortran compilers may rely on a certain TRUE so you will have to use the same TRUE value in the predicate function to be consistent with LAPACK implementation Implementation Details The current C interface implementation consists of wrappers to LAPACK routines The row major matrices are transposed on entry to and on exit from the LAPACK if needed Top level interfaces additionally allocate deallocate working space on entry to and on exit from the LAPACK routine Because of possible additional a routine called with this interface may require more memory space and run slower than the corresponding LAPACK routine Disclaimer and Legal Information INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH EXPRESS OR BY ESTOPPEL OR TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT EXCEPT AS PROVIDED IN INTEL S TERMS AND CONDITIONS OF SALE FOR SUCH INTEL ASSUMES NO LIABILITY AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED RELATING TO SALE AND OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR OR INFRINGEMENT OF ANY COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT UNLESS OTHERWISE AGREED IN WRITING BY THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR Intel may make changes to specifications and product descriptions at any without notice Designers must not rely on the absence or characteristics of any features or instructions marked reserved or undefined Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them The information here is subject to change without notice Do not finalize a design with this information The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications Current characterized errata are available on request Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order Copies of documents which have an order number and are referenced in this or other Intel may be obtained by or go to http