CXXR (C++ R) API
Lapack.h
1 /*CXXR $Id: Lapack.h 1348 2013-02-25 17:49:03Z arr $
2  *CXXR
3  *CXXR This file is part of CXXR, a project to refactor the R interpreter
4  *CXXR into C++. It may consist in whole or in part of program code and
5  *CXXR documentation taken from the R project itself, incorporated into
6  *CXXR CXXR (and possibly MODIFIED) under the terms of the GNU General Public
7  *CXXR Licence.
8  *CXXR
9  *CXXR CXXR is Copyright (C) 2008-13 Andrew R. Runnalls, subject to such other
10  *CXXR copyrights and copyright restrictions as may be stated below.
11  *CXXR
12  *CXXR CXXR is not part of the R project, and bugs and other issues should
13  *CXXR not be reported via r-bugs or other R project channels; instead refer
14  *CXXR to the CXXR website.
15  *CXXR */
16 
17 /*
18  * R : A Computer Language for Statistical Data Analysis
19  * Copyright (C) 2003-8 The R Core Team.
20  * Copyright (C) 2008 The R Foundation
21  *
22  * This program is free software; you can redistribute it and/or modify
23  * it under the terms of the GNU Lesser General Public License as published by
24  * the Free Software Foundation; either version 2.1 of the License, or
25  * (at your option) any later version.
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  *
32  * You should have received a copy of the GNU Lesser General Public License
33  * along with this program; if not, a copy is available at
34  * http://www.r-project.org/Licenses/
35  */
36 
37 #ifndef R_LAPACK_H
38 #define R_LAPACK_H
39 /* C declarations of BLAS routines. R packages that use these should have */
40 /* src/Makevars declare PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) */
41 
42 #include <R_ext/RS.h> /* for F77_... */
43 #include <R_ext/Complex.h> /* for Rcomplex */
44 #include <R_ext/BLAS.h>
45 
46 /*
47  LAPACK function names are [zds]<name>(), where d denotes the real
48  version of the function, z the complex version and
49  s the symmetric (and real) version. Only the d<name> functions are
50  documented.
51 */
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 #ifndef La_extern
58 #define La_extern extern
59 #endif
60 
61 /* Utilities for Lapack-using packages : */
62 
63 /* matrix norms: converting typstr[] to one of {'M', 'O', 'I', 'F'}
64  * or signal error(): */
65 La_extern char La_norm_type(const char *typstr);
66 
67 /* matrix (reciprocal) condition numbers: convert typstr[] to 'O'(ne) or 'I'(nf)
68  * or signal error(): */
69 La_extern char La_rcond_type(const char *typstr);
70 
71 
72 
73 /* Selected Double Precision Lapack Routines
74  ========
75  */
76 
77 /* Double precision BiDiagonal matrices */
78 
79 /* DBDSQR - compute the singular value decomposition (SVD) of a real */
80 /* N-by-N (upper or lower) bidiagonal matrix B */
81 La_extern void
82 F77_NAME(dbdsqr)(const char* uplo, const int* n, const int* ncvt,
83  const int* nru, const int* ncc, double* d, double* e,
84  double* vt, const int* ldvt, double* u, const int* ldu,
85  double* c, const int* ldc, double* work, int* info);
86 /* DDISNA - compute the reciprocal condition numbers for the */
87 /* eigenvectors of a real symmetric or complex Hermitian matrix or */
88 /* for the left or right singular vectors of a general m-by-n */
89 /* matrix */
90 La_extern void
91 F77_NAME(ddisna)(const char* job, const int* m, const int* n,
92  double* d, double* sep, int* info);
93 
94 /* Double precision General Banded matrices */
95 
96 /* DGBBRD - reduce a real general m-by-n band matrix A to upper */
97 /* bidiagonal form B by an orthogonal transformation */
98 La_extern void
99 F77_NAME(dgbbrd)(const char* vect, const int* m, const int* n,
100  const int* ncc, const int* kl, const int* ku,
101  double* ab, const int* ldab,
102  double* d, double* e, double* q,
103  const int* ldq, double* pt, const int* ldpt,
104  double* c, const int* ldc,
105  double* work, int* info);
106 /* DGBCON - estimate the reciprocal of the condition number of a */
107 /* real general band matrix A, in either the 1-norm or the */
108 /* infinity-norm */
109 La_extern void
110 F77_NAME(dgbcon)(const char* norm, const int* n, const int* kl,
111  const int* ku, double* ab, const int* ldab,
112  int* ipiv, const double* anorm, double* rcond,
113  double* work, int* iwork, int* info);
114 /* DGBEQU - compute row and column scalings intended to equilibrate */
115 /* an M-by-N band matrix A and reduce its condition number */
116 La_extern void
117 F77_NAME(dgbequ)(const int* m, const int* n, const int* kl, const int* ku,
118  double* ab, const int* ldab, double* r, double* c,
119  double* rowcnd, double* colcnd, double* amax, int* info);
120 /* DGBRFS - improve the computed solution to a system of linear */
121 /* equations when the coefficient matrix is banded, and provides */
122 /* error bounds and backward error estimates for the solution */
123 La_extern void
124 F77_NAME(dgbrfs)(const char* trans, const int* n, const int* kl,
125  const int* ku, const int* nrhs, double* ab,
126  const int* ldab, double* afb, const int* ldafb,
127  int* ipiv, double* b, const int* ldb,
128  double* x, const int* ldx, double* ferr, double* berr,
129  double* work, int* iwork, int* info);
130 /* DGBSV - compute the solution to a real system of linear */
131 /* equations A * X = B, where A is a band matrix of order N with */
132 /* KL subdiagonals and KU superdiagonals, and X and B are */
133 /* N-by-NRHS matrices */
134 La_extern void
135 F77_NAME(dgbsv)(const int* n, const int* kl,const int* ku,
136  const int* nrhs, double* ab, const int* ldab,
137  int* ipiv, double* b, const int* ldb, int* info);
138 /* DGBSVX - use the LU factorization to compute the solution to a */
139 /* real system of linear equations A * X = B or A**T * X = B */
140 La_extern void
141 F77_NAME(dgbsvx)(const int* fact, const char* trans,
142  const int* n, const int* kl,const int* ku,
143  const int* nrhs, double* ab, const int* ldab,
144  double* afb, const int* ldafb, int* ipiv,
145  const char* equed, double* r, double* c,
146  double* b, const int* ldb,
147  double* x, const int* ldx,
148  double* rcond, double* ferr, double* berr,
149  double* work, int* iwork, int* info);
150 /* DGBTF2 - compute an LU factorization of a real m-by-n band */
151 /* matrix A using partial pivoting with row interchanges */
152 La_extern void
153 F77_NAME(dgbtf2)(const int* m, const int* n, const int* kl,const int* ku,
154  double* ab, const int* ldab, int* ipiv, int* info);
155 /* DGBTRF - compute an LU factorization of a real m-by-n band */
156 /* matrix A using partial pivoting with row interchanges */
157 La_extern void
158 F77_NAME(dgbtrf)(const int* m, const int* n, const int* kl,const int* ku,
159  double* ab, const int* ldab, int* ipiv, int* info);
160 /* DGBTRS - solve a system of linear equations A * X = B or */
161 /* A' * X = B with a general band matrix A using the LU */
162 /* factorization computed by DGBTRF */
163 La_extern void
164 F77_NAME(dgbtrs)(const char* trans, const int* n,
165  const int* kl, const int* ku, const int* nrhs,
166  const double* ab, const int* ldab, const int* ipiv,
167  double* b, const int* ldb, int* info);
168 
169 /* Double precision GEneral matrices */
170 
171 /* DGEBAK - form the right or left eigenvectors of a real general */
172 /* matrix by backward transformation on the computed eigenvectors */
173 /* of the balanced matrix output by DGEBAL */
174 La_extern void
175 F77_NAME(dgebak)(const char* job, const char* side, const int* n,
176  const int* ilo, const int* ihi, double* scale,
177  const int* m, double* v, const int* ldv, int* info);
178 /* DGEBAL - balance a general real matrix A */
179 La_extern void
180 F77_NAME(dgebal)(const char* job, const int* n, double* a, const int* lda,
181  int* ilo, int* ihi, double* scale, int* info);
182 /* DGEBD2 - reduce a real general m by n matrix A to upper or */
183 /* lower bidiagonal form B by an orthogonal transformation */
184 La_extern void
185 F77_NAME(dgebd2)(const int* m, const int* n, double* a, const int* lda,
186  double* d, double* e, double* tauq, double* taup,
187  double* work, int* info);
188 /* DGEBRD - reduce a general real M-by-N matrix A to upper or */
189 /* lower bidiagonal form B by an orthogonal transformation */
190 La_extern void
191 F77_NAME(dgebrd)(const int* m, const int* n, double* a, const int* lda,
192  double* d, double* e, double* tauq, double* taup,
193  double* work, const int* lwork, int* info);
194 /* DGECON - estimate the reciprocal of the condition number of a */
195 /* general real matrix A, in either the 1-norm or the */
196 /* infinity-norm, using the LU factorization computed by DGETRF */
197 La_extern void
198 F77_NAME(dgecon)(const char* norm, const int* n,
199  const double* a, const int* lda,
200  const double* anorm, double* rcond,
201  double* work, int* iwork, int* info);
202 /* DGEEQU - compute row and column scalings intended to equilibrate */
203 /* an M-by-N matrix A and reduce its condition number */
204 La_extern void
205 F77_NAME(dgeequ)(const int* m, const int* n, double* a, const int* lda,
206  double* r, double* c, double* rowcnd, double* colcnd,
207  double* amax, int* info);
208 /* DGEES - compute for an N-by-N real nonsymmetric matrix A, the */
209 /* eigenvalues, the real Schur form T, and, optionally, the matrix */
210 /* of Schur vectors Z */
211 La_extern void
212 F77_NAME(dgees)(const char* jobvs, const char* sort,
213  int (*select)(const double*, const double*),
214  const int* n, double* a, const int* lda,
215  int* sdim, double* wr, double* wi,
216  double* vs, const int* ldvs,
217  double* work, const int* lwork, int* bwork, int* info);
218 /* DGEESX - compute for an N-by-N real nonsymmetric matrix A, the */
219 /* eigenvalues, the real Schur form T, and, optionally, the matrix */
220 /* of Schur vectors Z */
221 La_extern void
222 F77_NAME(dgeesx)(const char* jobvs, const char* sort,
223  int (*select)(const double*, const double*),
224  const char* sense, const int* n, double* a,
225  const int* lda, int* sdim, double* wr, double* wi,
226  double* vs, const int* ldvs, double* rconde,
227  double* rcondv, double* work, const int* lwork,
228  int* iwork, const int* liwork, int* bwork, int* info);
229 /* DGEEV - compute for an N-by-N real nonsymmetric matrix A, the */
230 /* eigenvalues and, optionally, the left and/or right eigenvectors */
231 La_extern void
232 F77_NAME(dgeev)(const char* jobvl, const char* jobvr,
233  const int* n, double* a, const int* lda,
234  double* wr, double* wi, double* vl, const int* ldvl,
235  double* vr, const int* ldvr,
236  double* work, const int* lwork, int* info);
237 /* DGEEVX - compute for an N-by-N real nonsymmetric matrix A, the */
238 /* eigenvalues and, optionally, the left and/or right eigenvectors */
239 La_extern void
240 F77_NAME(dgeevx)(const char* balanc, const char* jobvl, const char* jobvr,
241  const char* sense, const int* n, double* a, const int* lda,
242  double* wr, double* wi, double* vl, const int* ldvl,
243  double* vr, const int* ldvr, int* ilo, int* ihi,
244  double* scale, double* abnrm, double* rconde, double* rcondv,
245  double* work, const int* lwork, int* iwork, int* info);
246 /* DGEGV - compute for a pair of n-by-n real nonsymmetric */
247 /* matrices A and B, the generalized eigenvalues (alphar +/- */
248 /* alphai*i, beta);, and optionally, the left and/or right */
249 /* generalized eigenvectors (VL and VR); */
250 La_extern void
251 F77_NAME(dgegv)(const char* jobvl, const char* jobvr,
252  const int* n, double* a, const int* lda,
253  double* b, const int* ldb,
254  double* alphar, double* alphai,
255  const double* beta, double* vl, const int* ldvl,
256  double* vr, const int* ldvr,
257  double* work, const int* lwork, int* info);
258 /* DGEHD2 - reduce a real general matrix A to upper Hessenberg */
259 /* form H by an orthogonal similarity transformation */
260 La_extern void
261 F77_NAME(dgehd2)(const int* n, const int* ilo, const int* ihi,
262  double* a, const int* lda, double* tau,
263  double* work, int* info);
264 /* DGEHRD - reduce a real general matrix A to upper Hessenberg */
265 /* form H by an orthogonal similarity transformation */
266 La_extern void
267 F77_NAME(dgehrd)(const int* n, const int* ilo, const int* ihi,
268  double* a, const int* lda, double* tau,
269  double* work, const int* lwork, int* info);
270 /* DGELQ2 - compute an LQ factorization of a real m by n matrix A */
271 La_extern void
272 F77_NAME(dgelq2)(const int* m, const int* n,
273  double* a, const int* lda, double* tau,
274  double* work, int* info);
275 /* DGELQF - compute an LQ factorization of a real M-by-N matrix A */
276 La_extern void
277 F77_NAME(dgelqf)(const int* m, const int* n,
278  double* a, const int* lda, double* tau,
279  double* work, const int* lwork, int* info);
280 /* DGELS - solve overdetermined or underdetermined real linear */
281 /* systems involving an M-by-N matrix A, or its transpose, using a */
282 /* QR or LQ factorization of A */
283 La_extern void
284 F77_NAME(dgels)(const char* trans, const int* m, const int* n,
285  const int* nrhs, double* a, const int* lda,
286  double* b, const int* ldb,
287  double* work, const int* lwork, int* info);
288 /* DGELSS - compute the minimum norm solution to a real linear */
289 /* least squares problem */
290 La_extern void
291 F77_NAME(dgelss)(const int* m, const int* n, const int* nrhs,
292  double* a, const int* lda, double* b, const int* ldb,
293  double* s, double* rcond, int* rank,
294  double* work, const int* lwork, int* info);
295 /* DGELSY - compute the minimum-norm solution to a real linear */
296 /* least squares problem */
297 La_extern void
298 F77_NAME(dgelsy)(const int* m, const int* n, const int* nrhs,
299  double* a, const int* lda, double* b, const int* ldb,
300  int* jpvt, const double* rcond, int* rank,
301  double* work, const int* lwork, int* info);
302 /* DGEQL2 - compute a QL factorization of a real m by n matrix A */
303 La_extern void
304 F77_NAME(dgeql2)(const int* m, const int* n, double* a, const int* lda,
305  double* tau, double* work, int* info);
306 /* DGEQLF - compute a QL factorization of a real M-by-N matrix A */
307 La_extern void
308 F77_NAME(dgeqlf)(const int* m, const int* n,
309  double* a, const int* lda, double* tau,
310  double* work, const int* lwork, int* info);
311 /* DGEQP3 - compute a QR factorization with column pivoting of a */
312 /* real M-by-N matrix A using level 3 BLAS */
313 La_extern void
314 F77_NAME(dgeqp3)(const int* m, const int* n, double* a, const int* lda,
315  int* jpvt, double* tau, double* work, const int* lwork,
316  int* info);
317 /* DGEQPF - compute a QR factorization with column pivoting of a */
318 /* real M-by-N matrix A */
319 La_extern void
320 F77_NAME(dgeqpf)(const int* m, const int* n, double* a, const int* lda,
321  int* jpvt, double* tau, double* work, int* info);
322 /* DGEQR2 - compute a QR factorization of a real m by n matrix A */
323 La_extern void
324 F77_NAME(dgeqr2)(const int* m, const int* n, double* a, const int* lda,
325  double* tau, double* work, int* info);
326 /* DGEQRF - compute a QR factorization of a real M-by-N matrix A */
327 La_extern void
328 F77_NAME(dgeqrf)(const int* m, const int* n, double* a, const int* lda,
329  double* tau, double* work, const int* lwork, int* info);
330 /* DGERFS - improve the computed solution to a system of linear */
331 /* equations and provides error bounds and backward error */
332 /* estimates for the solution */
333 La_extern void
334 F77_NAME(dgerfs)(const char* trans, const int* n, const int* nrhs,
335  double* a, const int* lda, double* af, const int* ldaf,
336  int* ipiv, double* b, const int* ldb,
337  double* x, const int* ldx, double* ferr, double* berr,
338  double* work, int* iwork, int* info);
339 /* DGERQ2 - compute an RQ factorization of a real m by n matrix A */
340 La_extern void
341 F77_NAME(dgerq2)(const int* m, const int* n, double* a, const int* lda,
342  double* tau, double* work, int* info);
343 /* DGERQF - compute an RQ factorization of a real M-by-N matrix A */
344 La_extern void
345 F77_NAME(dgerqf)(const int* m, const int* n, double* a, const int* lda,
346  double* tau, double* work, const int* lwork, int* info);
347 /* DGESV - compute the solution to a real system of linear */
348 /* equations A * X = B, */
349 La_extern void
350 F77_NAME(dgesv)(const int* n, const int* nrhs, double* a, const int* lda,
351  int* ipiv, double* b, const int* ldb, int* info);
352 /* DGESVD - compute the singular value decomposition (SVD); of a */
353 /* real M-by-N matrix A, optionally computing the left and/or */
354 /* right singular vectors */
355 La_extern void
356 F77_NAME(dgesvd)(const char* jobu, const char* jobvt, const int* m,
357  const int* n, double* a, const int* lda, double* s,
358  double* u, const int* ldu, double* vt, const int* ldvt,
359  double* work, const int* lwork, int* info);
360 /* DGESVX - use the LU factorization to compute the solution to a */
361 /* real system of linear equations A * X = B, */
362 La_extern void
363 F77_NAME(dgesvx)(const int* fact, const char* trans, const int* n,
364  const int* nrhs, double* a, const int* lda,
365  double* af, const int* ldaf, int* ipiv,
366  char *equed, double* r, double* c,
367  double* b, const int* ldb,
368  double* x, const int* ldx,
369  double* rcond, double* ferr, double* berr,
370  double* work, int* iwork, int* info);
371 /* DGETF2 - compute an LU factorization of a general m-by-n */
372 /* matrix A using partial pivoting with row interchanges */
373 La_extern void
374 F77_NAME(dgetf2)(const int* m, const int* n, double* a, const int* lda,
375  int* ipiv, int* info);
376 /* DGETRF - compute an LU factorization of a general M-by-N */
377 /* matrix A using partial pivoting with row interchanges */
378 La_extern void
379 F77_NAME(dgetrf)(const int* m, const int* n, double* a, const int* lda,
380  int* ipiv, int* info);
381 /* DGETRI - compute the inverse of a matrix using the LU */
382 /* factorization computed by DGETRF */
383 La_extern void
384 F77_NAME(dgetri)(const int* n, double* a, const int* lda,
385  int* ipiv, double* work, const int* lwork, int* info);
386 /* DGETRS - solve a system of linear equations A * X = B or A' * */
387 /* X = B with a general N-by-N matrix A using the LU factorization */
388 /* computed by DGETRF */
389 La_extern void
390 F77_NAME(dgetrs)(const char* trans, const int* n, const int* nrhs,
391  const double* a, const int* lda, const int* ipiv,
392  double* b, const int* ldb, int* info);
393 
394 /* Double precision General matrices Generalized problems */
395 
396 /* DGGBAK - form the right or left eigenvectors of a real */
397 /* generalized eigenvalue problem A*x = lambda*B*x, by backward */
398 /* transformation on the computed eigenvectors of the balanced */
399 /* pair of matrices output by DGGBAL */
400 La_extern void
401 F77_NAME(dggbak)(const char* job, const char* side,
402  const int* n, const int* ilo, const int* ihi,
403  double* lscale, double* rscale, const int* m,
404  double* v, const int* ldv, int* info);
405 /* DGGBAL - balance a pair of general real matrices (A,B); */
406 La_extern void
407 F77_NAME(dggbal)(const char* job, const int* n, double* a, const int* lda,
408  double* b, const int* ldb, int* ilo, int* ihi,
409  double* lscale, double* rscale, double* work, int* info);
410 /* DGGES - compute for a pair of N-by-N real nonsymmetric */
411 /* matrices A, B the generalized eigenvalues, the generalized */
412 /* real Schur form (S,T), optionally, the left and/or right matrices */
413 /* of Schur vectors (VSL and VSR)*/
414 La_extern void
415 F77_NAME(dgges)(const char* jobvsl, const char* jobvsr, const char* sort,
416  int (*delztg)(double*, double*, double*),
417  const int* n, double* a, const int* lda,
418  double* b, const int* ldb, double* alphar,
419  double* alphai, const double* beta,
420  double* vsl, const int* ldvsl,
421  double* vsr, const int* ldvsr,
422  double* work, const int* lwork, int* bwork, int* info);
423 
424 /* DGGGLM - solve a general Gauss-Markov linear model (GLM) problem */
425 La_extern void
426 F77_NAME(dggglm)(const int* n, const int* m, const int* p,
427  double* a, const int* lda, double* b, const int* ldb,
428  double* d, double* x, double* y,
429  double* work, const int* lwork, int* info);
430 /* DGGHRD - reduce a pair of real matrices (A,B); to generalized */
431 /* upper Hessenberg form using orthogonal transformations, where A */
432 /* is a general matrix and B is upper triangular */
433 La_extern void
434 F77_NAME(dgghrd)(const char* compq, const char* compz, const int* n,
435  const int* ilo, const int* ihi, double* a, const int* lda,
436  double* b, const int* ldb, double* q, const int* ldq,
437  double* z, const int* ldz, int* info);
438 /* DGGLSE - solve the linear equality-constrained least squares */
439 /* (LSE) problem */
440 La_extern void
441 F77_NAME(dgglse)(const int* m, const int* n, const int* p,
442  double* a, const int* lda,
443  double* b, const int* ldb,
444  double* c, double* d, double* x,
445  double* work, const int* lwork, int* info);
446 /* DGGQRF - compute a generalized QR factorization of an N-by-M */
447 /* matrix A and an N-by-P matrix B */
448 La_extern void
449 F77_NAME(dggqrf)(const int* n, const int* m, const int* p,
450  double* a, const int* lda, double* taua,
451  double* b, const int* ldb, double* taub,
452  double* work, const int* lwork, int* info);
453 /* DGGRQF - compute a generalized RQ factorization of an M-by-N */
454 /* matrix A and a P-by-N matrix B */
455 La_extern void
456 F77_NAME(dggrqf)(const int* m, const int* p, const int* n,
457  double* a, const int* lda, double* taua,
458  double* b, const int* ldb, double* taub,
459  double* work, const int* lwork, int* info);
460 /* DGGSVD - compute the generalized singular value decomposition */
461 /* (GSVD) of an M-by-N real matrix A and P-by-N real matrix B */
462 La_extern void
463 F77_NAME(dggsvd)(const char* jobu, const char* jobv, const char* jobq,
464  const int* m, const int* n, const int* p,
465  const int* k, const int* l,
466  double* a, const int* lda,
467  double* b, const int* ldb,
468  const double* alpha, const double* beta,
469  double* u, const int* ldu,
470  double* v, const int* ldv,
471  double* q, const int* ldq,
472  double* work, int* iwork, int* info);
473 
474 /* Double precision General Tridiagonal matrices */
475 
476 /* DGTCON - estimate the reciprocal of the condition number of a real */
477 /* tridiagonal matrix A using the LU factorization as computed by DGTTRF */
478 La_extern void
479 F77_NAME(dgtcon)(const char* norm, const int* n, double* dl, double* d,
480  double* du, double* du2, int* ipiv, const double* anorm,
481  double* rcond, double* work, int* iwork, int* info);
482 /* DGTRFS - improve the computed solution to a system of linear equations */
483 /* when the coefficient matrix is tridiagonal, and provides error bounds */
484 /* and backward error estimates for the solution */
485 La_extern void
486 F77_NAME(dgtrfs)(const char* trans, const int* n, const int* nrhs,
487  double* dl, double* d, double* du, double* dlf,
488  double* df, double* duf, double* du2,
489  int* ipiv, double* b, const int* ldb,
490  double* x, const int* ldx,
491  double* ferr, double* berr,
492  double* work, int* iwork, int* info);
493 /* DGTSV - solve the equation A*X = B, */
494 La_extern void
495 F77_NAME(dgtsv)(const int* n, const int* nrhs,
496  double* dl, double* d, double* du,
497  double* b, const int* ldb, int* info);
498 /* DGTSVX - use the LU factorization to compute the solution to a */
499 /* real system of linear equations A * X = B or A**T * X = B, */
500 La_extern void
501 F77_NAME(dgtsvx)(const int* fact, const char* trans,
502  const int* n, const int* nrhs,
503  double* dl, double* d, double* du,
504  double* dlf, double* df, double* duf,
505  double* du2, int* ipiv,
506  double* b, const int* ldb,
507  double* x, const int* ldx,
508  double* rcond, double* ferr, double* berr,
509  double* work, int* iwork, int* info);
510 /* DGTTRF - compute an LU factorization of a real tridiagonal matrix */
511 /* A using elimination with partial pivoting and row interchanges */
512 La_extern void
513 F77_NAME(dgttrf)(const int* n, double* dl, double* d,
514  double* du, double* du2, int* ipiv, int* info);
515 /* DGTTRS - solve one of the systems of equations A*X = B or */
516 /* A'*X = B, */
517 La_extern void
518 F77_NAME(dgttrs)(const char* trans, const int* n, const int* nrhs,
519  double* dl, double* d, double* du, double* du2,
520  int* ipiv, double* b, const int* ldb, int* info);
521 
522 /* Double precision Orthogonal matrices */
523 
524 /* DOPGTR - generate a real orthogonal matrix Q which is defined */
525 /* as the product of n-1 elementary reflectors H(i); of order n, */
526 /* as returned by DSPTRD using packed storage */
527 La_extern void
528 F77_NAME(dopgtr)(const char* uplo, const int* n,
529  const double* ap, const double* tau,
530  double* q, const int* ldq,
531  double* work, int* info);
532 /* DOPMTR - overwrite the general real M-by-N matrix C with */
533 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
534 La_extern void
535 F77_NAME(dopmtr)(const char* side, const char* uplo,
536  const char* trans, const int* m, const int* n,
537  const double* ap, const double* tau,
538  double* c, const int* ldc,
539  double* work, int* info);
540 /* DORG2L - generate an m by n real matrix Q with orthonormal */
541 /* columns, */
542 La_extern void
543 F77_NAME(dorg2l)(const int* m, const int* n, const int* k,
544  double* a, const int* lda,
545  const double* tau, double* work, int* info);
546 /* DORG2R - generate an m by n real matrix Q with orthonormal */
547 /* columns, */
548 La_extern void
549 F77_NAME(dorg2r)(const int* m, const int* n, const int* k,
550  double* a, const int* lda,
551  const double* tau, double* work, int* info);
552 /* DORGBR - generate one of the real orthogonal matrices Q or */
553 /* P**T determined by DGEBRD when reducing a real matrix A to */
554 /* bidiagonal form */
555 La_extern void
556 F77_NAME(dorgbr)(const char* vect, const int* m,
557  const int* n, const int* k,
558  double* a, const int* lda,
559  const double* tau, double* work,
560  const int* lwork, int* info);
561 /* DORGHR - generate a real orthogonal matrix Q which is defined */
562 /* as the product of IHI-ILO elementary reflectors of order N, as */
563 /* returned by DGEHRD */
564 La_extern void
565 F77_NAME(dorghr)(const int* n, const int* ilo, const int* ihi,
566  double* a, const int* lda, const double* tau,
567  double* work, const int* lwork, int* info);
568 /* DORGL2 - generate an m by n real matrix Q with orthonormal */
569 /* rows, */
570 La_extern void
571 F77_NAME(dorgl2)(const int* m, const int* n, const int* k,
572  double* a, const int* lda, const double* tau,
573  double* work, int* info);
574 /* DORGLQ - generate an M-by-N real matrix Q with orthonormal */
575 /* rows, */
576 La_extern void
577 F77_NAME(dorglq)(const int* m, const int* n, const int* k,
578  double* a, const int* lda,
579  const double* tau, double* work,
580  const int* lwork, int* info);
581 /* DORGQL - generate an M-by-N real matrix Q with orthonormal */
582 /* columns, */
583 La_extern void
584 F77_NAME(dorgql)(const int* m, const int* n, const int* k,
585  double* a, const int* lda,
586  const double* tau, double* work,
587  const int* lwork, int* info);
588 /* DORGQR - generate an M-by-N real matrix Q with orthonormal */
589 /* columns, */
590 La_extern void
591 F77_NAME(dorgqr)(const int* m, const int* n, const int* k,
592  double* a, const int* lda, const double* tau,
593  double* work, const int* lwork, int* info);
594 /* DORGR2 - generate an m by n real matrix Q with orthonormal */
595 /* rows, */
596 La_extern void
597 F77_NAME(dorgr2)(const int* m, const int* n, const int* k,
598  double* a, const int* lda, const double* tau,
599  double* work, int* info);
600 /* DORGRQ - generate an M-by-N real matrix Q with orthonormal rows */
601 La_extern void
602 F77_NAME(dorgrq)(const int* m, const int* n, const int* k,
603  double* a, const int* lda, const double* tau,
604  double* work, const int* lwork, int* info);
605 /* DORGTR - generate a real orthogonal matrix Q which is defined */
606 /* as the product of n-1 elementary reflectors of order const int* n, as */
607 /* returned by DSYTRD */
608 La_extern void
609 F77_NAME(dorgtr)(const char* uplo, const int* n,
610  double* a, const int* lda, const double* tau,
611  double* work, const int* lwork, int* info);
612 /* DORM2L - overwrite the general real m by n matrix C with Q * */
613 /* C if SIDE = 'L' and TRANS = 'N', or Q'* C if SIDE = 'L' and */
614 /* TRANS = 'T', or C * Q if SIDE = 'R' and TRANS = 'N', or C * */
615 /* Q' if SIDE = 'R' and TRANS = 'T', */
616 La_extern void
617 F77_NAME(dorm2l)(const char* side, const char* trans,
618  const int* m, const int* n, const int* k,
619  const double* a, const int* lda,
620  const double* tau, double* c, const int* ldc,
621  double* work, int* info);
622 /* DORM2R - overwrite the general real m by n matrix C with Q * C */
623 /* if SIDE = 'L' and TRANS = 'N', or Q'* C if SIDE = 'L' and */
624 /* TRANS = 'T', or C * Q if SIDE = 'R' and TRANS = 'N', or C * */
625 /* Q' if SIDE = 'R' and TRANS = 'T', */
626 La_extern void
627 F77_NAME(dorm2r)(const char* side, const char* trans,
628  const int* m, const int* n, const int* k,
629  const double* a, const int* lda, const double* tau,
630  double* c, const int* ldc, double* work, int* info);
631 /* DORMBR - VECT = 'Q', DORMBR overwrites the general real M-by-N */
632 /* matrix C with SIDE = 'L' SIDE = 'R' TRANS = 'N' */
633 La_extern void
634 F77_NAME(dormbr)(const char* vect, const char* side, const char* trans,
635  const int* m, const int* n, const int* k,
636  const double* a, const int* lda, const double* tau,
637  double* c, const int* ldc,
638  double* work, const int* lwork, int* info);
639 /* DORMHR - overwrite the general real M-by-N matrix C with */
640 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
641 La_extern void
642 F77_NAME(dormhr)(const char* side, const char* trans, const int* m,
643  const int* n, const int* ilo, const int* ihi,
644  const double* a, const int* lda, const double* tau,
645  double* c, const int* ldc,
646  double* work, const int* lwork, int* info);
647 /* DORML2 - overwrite the general real m by n matrix C with Q * */
648 /* C if SIDE = 'L' and TRANS = 'N', or Q'* C if SIDE = 'L' and */
649 /* TRANS = 'T', or C * Q if SIDE = 'R' and TRANS = 'N', or C * */
650 /* Q' if SIDE = 'R' and TRANS = 'T', */
651 La_extern void
652 F77_NAME(dorml2)(const char* side, const char* trans,
653  const int* m, const int* n, const int* k,
654  const double* a, const int* lda, const double* tau,
655  double* c, const int* ldc, double* work, int* info);
656 /* DORMLQ - overwrite the general real M-by-N matrix C with */
657 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
658 La_extern void
659 F77_NAME(dormlq)(const char* side, const char* trans,
660  const int* m, const int* n, const int* k,
661  const double* a, const int* lda,
662  const double* tau, double* c, const int* ldc,
663  double* work, const int* lwork, int* info);
664 /* DORMQL - overwrite the general real M-by-N matrix C with */
665 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
666 La_extern void
667 F77_NAME(dormql)(const char* side, const char* trans,
668  const int* m, const int* n, const int* k,
669  const double* a, const int* lda,
670  const double* tau, double* c, const int* ldc,
671  double* work, const int* lwork, int* info);
672 /* DORMQR - overwrite the general real M-by-N matrix C with SIDE = */
673 /* 'L' SIDE = 'R' TRANS = 'N' */
674 La_extern void
675 F77_NAME(dormqr)(const char* side, const char* trans,
676  const int* m, const int* n, const int* k,
677  const double* a, const int* lda,
678  const double* tau, double* c, const int* ldc,
679  double* work, const int* lwork, int* info);
680 /* DORMR2 - overwrite the general real m by n matrix C with Q * */
681 /* C if SIDE = 'L' and TRANS = 'N', or Q'* C if SIDE = 'L' and */
682 /* TRANS = 'T', or C * Q if SIDE = 'R' and TRANS = 'N', or C * */
683 /* Q' if SIDE = 'R' and TRANS = 'T', */
684 La_extern void
685 F77_NAME(dormr2)(const char* side, const char* trans,
686  const int* m, const int* n, const int* k,
687  const double* a, const int* lda,
688  const double* tau, double* c, const int* ldc,
689  double* work, int* info);
690 /* DORMRQ - overwrite the general real M-by-N matrix C with */
691 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
692 La_extern void
693 F77_NAME(dormrq)(const char* side, const char* trans,
694  const int* m, const int* n, const int* k,
695  const double* a, const int* lda,
696  const double* tau, double* c, const int* ldc,
697  double* work, const int* lwork, int* info);
698 /* DORMTR - overwrite the general real M-by-N matrix C with */
699 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
700 La_extern void
701 F77_NAME(dormtr)(const char* side, const char* uplo,
702  const char* trans, const int* m, const int* n,
703  const double* a, const int* lda,
704  const double* tau, double* c, const int* ldc,
705  double* work, const int* lwork, int* info);
706 
707 /* Double precision Positive definite Band matrices */
708 
709 /* DPBCON - estimate the reciprocal of the condition number (in */
710 /* the 1-norm); of a real symmetric positive definite band matrix */
711 /* using the Cholesky factorization A = U**T*U or A = L*L**T */
712 /* computed by DPBTRF */
713 La_extern void
714 F77_NAME(dpbcon)(const char* uplo, const int* n, const int* kd,
715  const double* ab, const int* ldab,
716  const double* anorm, double* rcond,
717  double* work, int* iwork, int* info);
718 /* DPBEQU - compute row and column scalings intended to */
719 /* equilibrate a symmetric positive definite band matrix A and */
720 /* reduce its condition number (with respect to the two-norm); */
721 La_extern void
722 F77_NAME(dpbequ)(const char* uplo, const int* n, const int* kd,
723  const double* ab, const int* ldab,
724  double* s, double* scond, double* amax, int* info);
725 /* DPBRFS - improve the computed solution to a system of linear */
726 /* equations when the coefficient matrix is symmetric positive */
727 /* definite and banded, and provides error bounds and backward */
728 /* error estimates for the solution */
729 La_extern void
730 F77_NAME(dpbrfs)(const char* uplo, const int* n,
731  const int* kd, const int* nrhs,
732  const double* ab, const int* ldab,
733  const double* afb, const int* ldafb,
734  const double* b, const int* ldb,
735  double* x, const int* ldx,
736  double* ferr, double* berr,
737  double* work, int* iwork, int* info);
738 /* DPBSTF - compute a split Cholesky factorization of a real */
739 /* symmetric positive definite band matrix A */
740 La_extern void
741 F77_NAME(dpbstf)(const char* uplo, const int* n, const int* kd,
742  double* ab, const int* ldab, int* info);
743 /* DPBSV - compute the solution to a real system of linear */
744 /* equations A * X = B, */
745 La_extern void
746 F77_NAME(dpbsv)(const char* uplo, const int* n,
747  const int* kd, const int* nrhs,
748  double* ab, const int* ldab,
749  double* b, const int* ldb, int* info);
750 /* DPBSVX - use the Cholesky factorization A = U**T*U or A = */
751 /* L*L**T to compute the solution to a real system of linear */
752 /* equations A * X = B, */
753 La_extern void
754 F77_NAME(dpbsvx)(const int* fact, const char* uplo, const int* n,
755  const int* kd, const int* nrhs,
756  double* ab, const int* ldab,
757  double* afb, const int* ldafb,
758  char* equed, double* s,
759  double* b, const int* ldb,
760  double* x, const int* ldx, double* rcond,
761  double* ferr, double* berr,
762  double* work, int* iwork, int* info);
763 /* DPBTF2 - compute the Cholesky factorization of a real */
764 /* symmetric positive definite band matrix A */
765 La_extern void
766 F77_NAME(dpbtf2)(const char* uplo, const int* n, const int* kd,
767  double* ab, const int* ldab, int* info);
768 /* DPBTRF - compute the Cholesky factorization of a real */
769 /* symmetric positive definite band matrix A */
770 La_extern void
771 F77_NAME(dpbtrf)(const char* uplo, const int* n, const int* kd,
772  double* ab, const int* ldab, int* info);
773 /* DPBTRS - solve a system of linear equations A*X = B with a */
774 /* symmetric positive definite band matrix A using the Cholesky */
775 /* factorization A = U**T*U or A = L*L**T computed by DPBTRF */
776 La_extern void
777 F77_NAME(dpbtrs)(const char* uplo, const int* n,
778  const int* kd, const int* nrhs,
779  const double* ab, const int* ldab,
780  double* b, const int* ldb, int* info);
781 
782 /* Double precision Positive definite matrices */
783 
784 /* DPOCON - estimate the reciprocal of the condition number (in */
785 /* the 1-norm); of a real symmetric positive definite matrix using */
786 /* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
787 /* DPOTRF */
788 La_extern void
789 F77_NAME(dpocon)(const char* uplo, const int* n,
790  const double* a, const int* lda,
791  const double* anorm, double* rcond,
792  double* work, int* iwork, int* info);
793 /* DPOEQU - compute row and column scalings intended to */
794 /* equilibrate a symmetric positive definite matrix A and reduce */
795 /* its condition number (with respect to the two-norm); */
796 La_extern void
797 F77_NAME(dpoequ)(const int* n, const double* a, const int* lda,
798  double* s, double* scond, double* amax, int* info);
799 /* DPORFS - improve the computed solution to a system of linear */
800 /* equations when the coefficient matrix is symmetric positive */
801 /* definite, */
802 La_extern void
803 F77_NAME(dporfs)(const char* uplo, const int* n, const int* nrhs,
804  const double* a, const int* lda,
805  const double* af, const int* ldaf,
806  const double* b, const int* ldb,
807  double* x, const int* ldx,
808  double* ferr, double* berr,
809  double* work, int* iwork, int* info);
810 /* DPOSV - compute the solution to a real system of linear */
811 /* equations A * X = B, */
812 La_extern void
813 F77_NAME(dposv)(const char* uplo, const int* n, const int* nrhs,
814  double* a, const int* lda,
815  double* b, const int* ldb, int* info);
816 /* DPOSVX - use the Cholesky factorization A = U**T*U or A = */
817 /* L*L**T to compute the solution to a real system of linear */
818 /* equations A * X = B, */
819 La_extern void
820 F77_NAME(dposvx)(const int* fact, const char* uplo,
821  const int* n, const int* nrhs,
822  double* a, const int* lda,
823  double* af, const int* ldaf, char* equed,
824  double* s, double* b, const int* ldb,
825  double* x, const int* ldx, double* rcond,
826  double* ferr, double* berr, double* work,
827  int* iwork, int* info);
828 /* DPOTF2 - compute the Cholesky factorization of a real */
829 /* symmetric positive definite matrix A */
830 La_extern void
831 F77_NAME(dpotf2)(const char* uplo, const int* n,
832  double* a, const int* lda, int* info);
833 /* DPOTRF - compute the Cholesky factorization of a real */
834 /* symmetric positive definite matrix A */
835 La_extern void
836 F77_NAME(dpotrf)(const char* uplo, const int* n,
837  double* a, const int* lda, int* info);
838 /* DPOTRI - compute the inverse of a real symmetric positive */
839 /* definite matrix A using the Cholesky factorization A = U**T*U */
840 /* or A = L*L**T computed by DPOTRF */
841 La_extern void
842 F77_NAME(dpotri)(const char* uplo, const int* n,
843  double* a, const int* lda, int* info);
844 /* DPOTRS - solve a system of linear equations A*X = B with a */
845 /* symmetric positive definite matrix A using the Cholesky */
846 /* factorization A = U**T*U or A = L*L**T computed by DPOTRF */
847 La_extern void
848 F77_NAME(dpotrs)(const char* uplo, const int* n,
849  const int* nrhs, const double* a, const int* lda,
850  double* b, const int* ldb, int* info);
851 /* DPPCON - estimate the reciprocal of the condition number (in */
852 /* the 1-norm); of a real symmetric positive definite packed */
853 /* matrix using the Cholesky factorization A = U**T*U or A = */
854 /* L*L**T computed by DPPTRF */
855 La_extern void
856 F77_NAME(dppcon)(const char* uplo, const int* n,
857  const double* ap, const double* anorm, double* rcond,
858  double* work, int* iwork, int* info);
859 /* DPPEQU - compute row and column scalings intended to */
860 /* equilibrate a symmetric positive definite matrix A in packed */
861 /* storage and reduce its condition number (with respect to the */
862 /* two-norm); */
863 La_extern void
864 F77_NAME(dppequ)(const char* uplo, const int* n,
865  const double* ap, double* s, double* scond,
866  double* amax, int* info);
867 
868 /* Double precision Positive definite matrices in Packed storage */
869 
870 /* DPPRFS - improve the computed solution to a system of linear */
871 /* equations when the coefficient matrix is symmetric positive */
872 /* definite and packed, and provides error bounds and backward */
873 /* error estimates for the solution */
874 La_extern void
875 F77_NAME(dpprfs)(const char* uplo, const int* n, const int* nrhs,
876  const double* ap, const double* afp,
877  const double* b, const int* ldb,
878  double* x, const int* ldx,
879  double* ferr, double* berr,
880  double* work, int* iwork, int* info);
881 /* DPPSV - compute the solution to a real system of linear */
882 /* equations A * X = B, */
883 La_extern void
884 F77_NAME(dppsv)(const char* uplo, const int* n,
885  const int* nrhs, const double* ap,
886  double* b, const int* ldb, int* info);
887 /* DPPSVX - use the Cholesky factorization A = U**T*U or A = */
888 /* L*L**T to compute the solution to a real system of linear */
889 /* equations A * X = B, */
890 La_extern void
891 F77_NAME(dppsvx)(const int* fact, const char* uplo,
892  const int* n, const int* nrhs, double* ap,
893  double* afp, char* equed, double* s,
894  double* b, const int* ldb,
895  double* x, const int* ldx,
896  double* rcond, double* ferr, double* berr,
897  double* work, int* iwork, int* info);
898 /* DPPTRF - compute the Cholesky factorization of a real */
899 /* symmetric positive definite matrix A stored in packed format */
900 La_extern void
901 F77_NAME(dpptrf)(const char* uplo, const int* n, double* ap, int* info);
902 /* DPPTRI - compute the inverse of a real symmetric positive */
903 /* definite matrix A using the Cholesky factorization A = U**T*U */
904 /* or A = L*L**T computed by DPPTRF */
905 La_extern void
906 F77_NAME(dpptri)(const char* uplo, const int* n, double* ap, int* info);
907 /* DPPTRS - solve a system of linear equations A*X = B with a */
908 /* symmetric positive definite matrix A in packed storage using */
909 /* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
910 /* DPPTRF */
911 La_extern void
912 F77_NAME(dpptrs)(const char* uplo, const int* n,
913  const int* nrhs, const double* ap,
914  double* b, const int* ldb, int* info);
915 
916 /* Double precision symmetric Positive definite Tridiagonal matrices */
917 
918 /* DPTCON - compute the reciprocal of the condition number (in */
919 /* the 1-norm); of a real symmetric positive definite tridiagonal */
920 /* matrix using the factorization A = L*D*L**T or A = U**T*D*U */
921 /* computed by DPTTRF */
922 La_extern void
923 F77_NAME(dptcon)(const int* n,
924  const double* d, const double* e,
925  const double* anorm, double* rcond,
926  double* work, int* info);
927 /* DPTEQR - compute all eigenvalues and, optionally, eigenvectors */
928 /* of a symmetric positive definite tridiagonal matrix by first */
929 /* factoring the matrix using DPTTRF, and then calling DBDSQR to */
930 /* compute the singular values of the bidiagonal factor */
931 La_extern void
932 F77_NAME(dpteqr)(const char* compz, const int* n, double* d,
933  double* e, double* z, const int* ldz,
934  double* work, int* info);
935 /* DPTRFS - improve the computed solution to a system of linear */
936 /* equations when the coefficient matrix is symmetric positive */
937 /* definite and tridiagonal, and provides error bounds and */
938 /* backward error estimates for the solution */
939 La_extern void
940 F77_NAME(dptrfs)(const int* n, const int* nrhs,
941  const double* d, const double* e,
942  const double* df, const double* ef,
943  const double* b, const int* ldb,
944  double* x, const int* ldx,
945  double* ferr, double* berr,
946  double* work, int* info);
947 /* DPTSV - compute the solution to a real system of linear */
948 /* equations A*X = B, where A is an N-by-N symmetric positive */
949 /* definite tridiagonal matrix, and X and B are N-by-NRHS matrices */
950 La_extern void
951 F77_NAME(dptsv)(const int* n, const int* nrhs, double* d,
952  double* e, double* b, const int* ldb, int* info);
953 /* DPTSVX - use the factorization A = L*D*L**T to compute the */
954 /* solution to a real system of linear equations A*X = B, where A */
955 /* is an N-by-N symmetric positive definite tridiagonal matrix and */
956 /* X and B are N-by-NRHS matrices */
957 La_extern void
958 F77_NAME(dptsvx)(const int* fact, const int* n,
959  const int* nrhs,
960  const double* d, const double* e,
961  double* df, double* ef,
962  const double* b, const int* ldb,
963  double* x, const int* ldx, double* rcond,
964  double* ferr, double* berr,
965  double* work, int* info);
966 /* DPTTRF - compute the factorization of a real symmetric */
967 /* positive definite tridiagonal matrix A */
968 La_extern void
969 F77_NAME(dpttrf)(const int* n, double* d, double* e, int* info);
970 /* DPTTRS - solve a system of linear equations A * X = B with a */
971 /* symmetric positive definite tridiagonal matrix A using the */
972 /* factorization A = L*D*L**T or A = U**T*D*U computed by DPTTRF */
973 La_extern void
974 F77_NAME(dpttrs)(const int* n, const int* nrhs,
975  const double* d, const double* e,
976  double* b, const int* ldb, int* info);
977 /* DRSCL - multiply an n-element real vector x by the real scalar */
978 /* 1/a */
979 La_extern void
980 F77_NAME(drscl)(const int* n, const double* da,
981  double* x, const int* incx);
982 
983 /* Double precision Symmetric Band matrices */
984 
985 /* DSBEV - compute all the eigenvalues and, optionally, */
986 /* eigenvectors of a real symmetric band matrix A */
987 La_extern void
988 F77_NAME(dsbev)(const char* jobz, const char* uplo,
989  const int* n, const int* kd,
990  double* ab, const int* ldab,
991  double* w, double* z, const int* ldz,
992  double* work, int* info);
993 /* DSBEVD - compute all the eigenvalues and, optionally, */
994 /* eigenvectors of a real symmetric band matrix A */
995 La_extern void
996 F77_NAME(dsbevd)(const char* jobz, const char* uplo,
997  const int* n, const int* kd,
998  double* ab, const int* ldab,
999  double* w, double* z, const int* ldz,
1000  double* work, const int* lwork,
1001  int* iwork, const int* liwork, int* info);
1002 /* DSBEVX - compute selected eigenvalues and, optionally, */
1003 /* eigenvectors of a real symmetric band matrix A */
1004 La_extern void
1005 F77_NAME(dsbevx)(const char* jobz, const char* range,
1006  const char* uplo, const int* n, const int* kd,
1007  double* ab, const int* ldab,
1008  double* q, const int* ldq,
1009  const double* vl, const double* vu,
1010  const int* il, const int* iu,
1011  const double* abstol,
1012  int* m, double* w,
1013  double* z, const int* ldz,
1014  double* work, int* iwork,
1015  int* ifail, int* info);
1016 /* DSBGST - reduce a real symmetric-definite banded generalized */
1017 /* eigenproblem A*x = lambda*B*x to standard form C*y = lambda*y, */
1018 La_extern void
1019 F77_NAME(dsbgst)(const char* vect, const char* uplo,
1020  const int* n, const int* ka, const int* kb,
1021  double* ab, const int* ldab,
1022  double* bb, const int* ldbb,
1023  double* x, const int* ldx,
1024  double* work, int* info);
1025 /* DSBGV - compute all the eigenvalues, and optionally, the */
1026 /* eigenvectors of a real generalized symmetric-definite banded */
1027 /* eigenproblem, of the form A*x=(lambda);*B*x */
1028 La_extern void
1029 F77_NAME(dsbgv)(const char* jobz, const char* uplo,
1030  const int* n, const int* ka, const int* kb,
1031  double* ab, const int* ldab,
1032  double* bb, const int* ldbb,
1033  double* w, double* z, const int* ldz,
1034  double* work, int* info);
1035 /* DSBTRD - reduce a real symmetric band matrix A to symmetric */
1036 /* tridiagonal form T by an orthogonal similarity transformation */
1037 La_extern void
1038 F77_NAME(dsbtrd)(const char* vect, const char* uplo,
1039  const int* n, const int* kd,
1040  double* ab, const int* ldab,
1041  double* d, double* e,
1042  double* q, const int* ldq,
1043  double* work, int* info);
1044 
1045 /* Double precision Symmetric Packed matrices */
1046 
1047 /* DSPCON - estimate the reciprocal of the condition number (in */
1048 /* the 1-norm); of a real symmetric packed matrix A using the */
1049 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
1050 La_extern void
1051 F77_NAME(dspcon)(const char* uplo, const int* n,
1052  const double* ap, const int* ipiv,
1053  const double* anorm, double* rcond,
1054  double* work, int* iwork, int* info);
1055 /* DSPEV - compute all the eigenvalues and, optionally, */
1056 /* eigenvectors of a real symmetric matrix A in packed storage */
1057 La_extern void
1058 F77_NAME(dspev)(const char* jobz, const char* uplo, const int* n,
1059  double* ap, double* w, double* z, const int* ldz,
1060  double* work, int* info);
1061 /* DSPEVD - compute all the eigenvalues and, optionally, */
1062 /* eigenvectors of a real symmetric matrix A in packed storage */
1063 La_extern void
1064 F77_NAME(dspevd)(const char* jobz, const char* uplo,
1065  const int* n, double* ap, double* w,
1066  double* z, const int* ldz,
1067  double* work, const int* lwork,
1068  int* iwork, const int* liwork, int* info);
1069 /* DSPEVX - compute selected eigenvalues and, optionally, */
1070 /* eigenvectors of a real symmetric matrix A in packed storage */
1071 La_extern void
1072 F77_NAME(dspevx)(const char* jobz, const char* range,
1073  const char* uplo, const int* n, double* ap,
1074  const double* vl, const double* vu,
1075  const int* il, const int* iu,
1076  const double* abstol,
1077  int* m, double* w,
1078  double* z, const int* ldz,
1079  double* work, int* iwork,
1080  int* ifail, int* info);
1081 /* DSPGST - reduce a real symmetric-definite generalized */
1082 /* eigenproblem to standard form, using packed storage */
1083 La_extern void
1084 F77_NAME(dspgst)(const int* itype, const char* uplo,
1085  const int* n, double* ap, double* bp, int* info);
1086 /* DSPGV - compute all the eigenvalues and, optionally, the */
1087 /* eigenvectors of a real generalized symmetric-definite */
1088 /* eigenproblem, of the form A*x=(lambda)*B*x, A*Bx=(lambda)*x, */
1089 /* or B*A*x=(lambda)*x */
1090 La_extern void
1091 F77_NAME(dspgv)(const int* itype, const char* jobz,
1092  const char* uplo, const int* n,
1093  double* ap, double* bp, double* w,
1094  double* z, const int* ldz,
1095  double* work, int* info);
1096 
1097 /* DSPRFS - improve the computed solution to a system of linear */
1098 /* equations when the coefficient matrix is symmetric indefinite */
1099 /* and packed, and provides error bounds and backward error */
1100 /* estimates for the solution */
1101 La_extern void
1102 F77_NAME(dsprfs)(const char* uplo, const int* n,
1103  const int* nrhs, const double* ap,
1104  const double* afp, const int* ipiv,
1105  const double* b, const int* ldb,
1106  double* x, const int* ldx,
1107  double* ferr, double* berr,
1108  double* work, int* iwork, int* info);
1109 
1110 /* DSPSV - compute the solution to a real system of linear */
1111 /* equations A * X = B, */
1112 La_extern void
1113 F77_NAME(dspsv)(const char* uplo, const int* n,
1114  const int* nrhs, double* ap, int* ipiv,
1115  double* b, const int* ldb, int* info);
1116 
1117 /* DSPSVX - use the diagonal pivoting factorization A = U*D*U**T */
1118 /* or A = L*D*L**T to compute the solution to a real system of */
1119 /* linear equations A * X = B, where A is an N-by-N symmetric */
1120 /* matrix stored in packed format and X and B are N-by-NRHS */
1121 /* matrices */
1122 La_extern void
1123 F77_NAME(dspsvx)(const int* fact, const char* uplo,
1124  const int* n, const int* nrhs,
1125  const double* ap, double* afp, int* ipiv,
1126  const double* b, const int* ldb,
1127  double* x, const int* ldx,
1128  double* rcond, double* ferr, double* berr,
1129  double* work, int* iwork, int* info);
1130 
1131 /* DSPTRD - reduce a real symmetric matrix A stored in packed */
1132 /* form to symmetric tridiagonal form T by an orthogonal */
1133 /* similarity transformation */
1134 La_extern void
1135 F77_NAME(dsptrd)(const char* uplo, const int* n,
1136  double* ap, double* d, double* e,
1137  double* tau, int* info);
1138 
1139 /* DSPTRF - compute the factorization of a real symmetric matrix */
1140 /* A stored in packed format using the Bunch-Kaufman diagonal */
1141 /* pivoting method */
1142 La_extern void
1143 F77_NAME(dsptrf)(const char* uplo, const int* n,
1144  double* ap, int* ipiv, int* info);
1145 
1146 /* DSPTRI - compute the inverse of a real symmetric indefinite */
1147 /* matrix A in packed storage using the factorization A = U*D*U**T */
1148 /* or A = L*D*L**T computed by DSPTRF */
1149 La_extern void
1150 F77_NAME(dsptri)(const char* uplo, const int* n,
1151  double* ap, const int* ipiv,
1152  double* work, int* info);
1153 
1154 /* DSPTRS - solve a system of linear equations A*X = B with a */
1155 /* real symmetric matrix A stored in packed format using the */
1156 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
1157 La_extern void
1158 F77_NAME(dsptrs)(const char* uplo, const int* n,
1159  const int* nrhs, const double* ap,
1160  const int* ipiv, double* b, const int* ldb, int* info);
1161 
1162 /* Double precision Symmetric Tridiagonal matrices */
1163 
1164 /* DSTEBZ - compute the eigenvalues of a symmetric tridiagonal */
1165 /* matrix T */
1166 La_extern void
1167 F77_NAME(dstebz)(const char* range, const char* order, const int* n,
1168  const double* vl, const double* vu,
1169  const int* il, const int* iu,
1170  const double *abstol,
1171  const double* d, const double* e,
1172  int* m, int* nsplit, double* w,
1173  int* iblock, int* isplit,
1174  double* work, int* iwork,
1175  int* info);
1176 /* DSTEDC - compute all eigenvalues and, optionally, eigenvectors */
1177 /* of a symmetric tridiagonal matrix using the divide and conquer */
1178 /* method */
1179 La_extern void
1180 F77_NAME(dstedc)(const char* compz, const int* n,
1181  double* d, double* e,
1182  double* z, const int* ldz,
1183  double* work, const int* lwork,
1184  int* iwork, const int* liwork, int* info);
1185 /* DSTEIN - compute the eigenvectors of a real symmetric */
1186 /* tridiagonal matrix T corresponding to specified eigenvalues, */
1187 /* using inverse iteration */
1188 La_extern void
1189 F77_NAME(dstein)(const int* n, const double* d, const double* e,
1190  const int* m, const double* w,
1191  const int* iblock, const int* isplit,
1192  double* z, const int* ldz,
1193  double* work, int* iwork,
1194  int* ifail, int* info);
1195 /* DSTEQR - compute all eigenvalues and, optionally, eigenvectors */
1196 /* of a symmetric tridiagonal matrix using the implicit QL or QR */
1197 /* method */
1198 La_extern void
1199 F77_NAME(dsteqr)(const char* compz, const int* n, double* d, double* e,
1200  double* z, const int* ldz, double* work, int* info);
1201 /* DSTERF - compute all eigenvalues of a symmetric tridiagonal */
1202 /* matrix using the Pal-Walker-Kahan variant of the QL or QR */
1203 /* algorithm */
1204 La_extern void
1205 F77_NAME(dsterf)(const int* n, double* d, double* e, int* info);
1206 /* DSTEV - compute all eigenvalues and, optionally, eigenvectors */
1207 /* of a real symmetric tridiagonal matrix A */
1208 La_extern void
1209 F77_NAME(dstev)(const char* jobz, const int* n,
1210  double* d, double* e,
1211  double* z, const int* ldz,
1212  double* work, int* info);
1213 /* DSTEVD - compute all eigenvalues and, optionally, eigenvectors */
1214 /* of a real symmetric tridiagonal matrix */
1215 La_extern void
1216 F77_NAME(dstevd)(const char* jobz, const int* n,
1217  double* d, double* e,
1218  double* z, const int* ldz,
1219  double* work, const int* lwork,
1220  int* iwork, const int* liwork, int* info);
1221 /* DSTEVX - compute selected eigenvalues and, optionally, */
1222 /* eigenvectors of a real symmetric tridiagonal matrix A */
1223 La_extern void
1224 F77_NAME(dstevx)(const char* jobz, const char* range,
1225  const int* n, double* d, double* e,
1226  const double* vl, const double* vu,
1227  const int* il, const int* iu,
1228  const double* abstol,
1229  int* m, double* w,
1230  double* z, const int* ldz,
1231  double* work, int* iwork,
1232  int* ifail, int* info);
1233 
1234 /* Double precision SYmmetric matrices */
1235 
1236 /* DSYCON - estimate the reciprocal of the condition number (in */
1237 /* the 1-norm); of a real symmetric matrix A using the */
1238 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSYTRF */
1239 La_extern void
1240 F77_NAME(dsycon)(const char* uplo, const int* n,
1241  const double* a, const int* lda,
1242  const int* ipiv,
1243  const double* anorm, double* rcond,
1244  double* work, int* iwork, int* info);
1245 /* DSYEV - compute all eigenvalues and, optionally, eigenvectors */
1246 /* of a real symmetric matrix A */
1247 La_extern void
1248 F77_NAME(dsyev)(const char* jobz, const char* uplo,
1249  const int* n, double* a, const int* lda,
1250  double* w, double* work, const int* lwork, int* info);
1251 /* DSYEVD - compute all eigenvalues and, optionally, eigenvectors */
1252 /* of a real symmetric matrix A */
1253 La_extern void
1254 F77_NAME(dsyevd)(const char* jobz, const char* uplo,
1255  const int* n, double* a, const int* lda,
1256  double* w, double* work, const int* lwork,
1257  int* iwork, const int* liwork, int* info);
1258 /* DSYEVX - compute selected eigenvalues and, optionally, */
1259 /* eigenvectors of a real symmetric matrix A */
1260 La_extern void
1261 F77_NAME(dsyevx)(const char* jobz, const char* range,
1262  const char* uplo, const int* n,
1263  double* a, const int* lda,
1264  const double* vl, const double* vu,
1265  const int* il, const int* iu,
1266  const double* abstol,
1267  int* m, double* w,
1268  double* z, const int* ldz,
1269  double* work, const int* lwork, int* iwork,
1270  int* ifail, int* info);
1271 /* DSYEVR - compute all eigenvalues and, optionally, eigenvectors */
1272 /* of a real symmetric matrix A */
1273 La_extern void
1274 F77_NAME(dsyevr)(const char *jobz, const char *range, const char *uplo,
1275  const int *n, double *a, const int *lda,
1276  const double *vl, const double *vu,
1277  const int *il, const int *iu,
1278  const double *abstol, int *m, double *w,
1279  double *z, const int *ldz, int *isuppz,
1280  double *work, const int *lwork,
1281  int *iwork, const int *liwork,
1282  int *info);
1283 /* DSYGS2 - reduce a real symmetric-definite generalized */
1284 /* eigenproblem to standard form */
1285 La_extern void
1286 F77_NAME(dsygs2)(const int* itype, const char* uplo,
1287  const int* n, double* a, const int* lda,
1288  const double* b, const int* ldb, int* info);
1289 /* DSYGST - reduce a real symmetric-definite generalized */
1290 /* eigenproblem to standard form */
1291 La_extern void
1292 F77_NAME(dsygst)(const int* itype, const char* uplo,
1293  const int* n, double* a, const int* lda,
1294  const double* b, const int* ldb, int* info);
1295 /* DSYGV - compute all the eigenvalues, and optionally, the */
1296 /* eigenvectors of a real generalized symmetric-definite */
1297 /* eigenproblem, of the form A*x=(lambda);*B*x, A*Bx=(lambda);*x, */
1298 /* or B*A*x=(lambda);*x */
1299 La_extern void
1300 F77_NAME(dsygv)(const int* itype, const char* jobz,
1301  const char* uplo, const int* n,
1302  double* a, const int* lda,
1303  double* b, const int* ldb,
1304  double* w, double* work, const int* lwork,
1305  int* info);
1306 /* DSYRFS - improve the computed solution to a system of linear */
1307 /* equations when the coefficient matrix is symmetric indefinite, */
1308 /* and provides error bounds and backward error estimates for the */
1309 /* solution */
1310 La_extern void
1311 F77_NAME(dsyrfs)(const char* uplo, const int* n,
1312  const int* nrhs,
1313  const double* a, const int* lda,
1314  const double* af, const int* ldaf,
1315  const int* ipiv,
1316  const double* b, const int* ldb,
1317  double* x, const int* ldx,
1318  double* ferr, double* berr,
1319  double* work, int* iwork, int* info);
1320 
1321 /* DSYSV - compute the solution to a real system of linear */
1322 /* equations A * X = B, */
1323 La_extern void
1324 F77_NAME(dsysv)(const char* uplo, const int* n,
1325  const int* nrhs,
1326  double* a, const int* lda, int* ipiv,
1327  double* b, const int* ldb,
1328  double* work, const int* lwork, int* info);
1329 
1330 /* DSYSVX - use the diagonal pivoting factorization to compute */
1331 /* the solution to a real system of linear equations A * X = B, */
1332 La_extern void
1333 F77_NAME(dsysvx)(const int* fact, const char* uplo,
1334  const int* n, const int* nrhs,
1335  const double* a, const int* lda,
1336  double* af, const int* ldaf, int* ipiv,
1337  const double* b, const int* ldb,
1338  double* x, const int* ldx, double* rcond,
1339  double* ferr, double* berr,
1340  double* work, const int* lwork,
1341  int* iwork, int* info);
1342 
1343 /* DSYTD2 - reduce a real symmetric matrix A to symmetric */
1344 /* tridiagonal form T by an orthogonal similarity transformation */
1345 La_extern void
1346 F77_NAME(dsytd2)(const char* uplo, const int* n,
1347  double* a, const int* lda,
1348  double* d, double* e, double* tau,
1349  int* info);
1350 
1351 /* DSYTF2 - compute the factorization of a real symmetric matrix */
1352 /* A using the Bunch-Kaufman diagonal pivoting method */
1353 La_extern void
1354 F77_NAME(dsytf2)(const char* uplo, const int* n,
1355  double* a, const int* lda,
1356  int* ipiv, int* info);
1357 
1358 /* DSYTRD - reduce a real symmetric matrix A to real symmetric */
1359 /* tridiagonal form T by an orthogonal similarity transformation */
1360 La_extern void
1361 F77_NAME(dsytrd)(const char* uplo, const int* n,
1362  double* a, const int* lda,
1363  double* d, double* e, double* tau,
1364  double* work, const int* lwork, int* info);
1365 
1366 /* DSYTRF - compute the factorization of a real symmetric matrix */
1367 /* A using the Bunch-Kaufman diagonal pivoting method */
1368 La_extern void
1369 F77_NAME(dsytrf)(const char* uplo, const int* n,
1370  double* a, const int* lda, int* ipiv,
1371  double* work, const int* lwork, int* info);
1372 
1373 /* DSYTRI - compute the inverse of a real symmetric indefinite */
1374 /* matrix A using the factorization A = U*D*U**T or A = L*D*L**T */
1375 /* computed by DSYTRF */
1376 La_extern void
1377 F77_NAME(dsytri)(const char* uplo, const int* n,
1378  double* a, const int* lda, const int* ipiv,
1379  double* work, int* info);
1380 
1381 /* DSYTRS - solve a system of linear equations A*X = B with a */
1382 /* real symmetric matrix A using the factorization A = U*D*U**T or */
1383 /* A = L*D*L**T computed by DSYTRF */
1384 La_extern void
1385 F77_NAME(dsytrs)(const char* uplo, const int* n,
1386  const int* nrhs,
1387  const double* a, const int* lda,
1388  const int* ipiv,
1389  double* b, const int* ldb, int* info);
1390 
1391 /* Double precision Triangular Band matrices */
1392 
1393 /* DTBCON - estimate the reciprocal of the condition number of a */
1394 /* triangular band matrix A, in either the 1-norm or the */
1395 /* infinity-norm */
1396 La_extern void
1397 F77_NAME(dtbcon)(const char* norm, const char* uplo,
1398  const char* diag, const int* n, const int* kd,
1399  const double* ab, const int* ldab,
1400  double* rcond, double* work,
1401  int* iwork, int* info);
1402 /* DTBRFS - provide error bounds and backward error estimates for */
1403 /* the solution to a system of linear equations with a triangular */
1404 /* band coefficient matrix */
1405 La_extern void
1406 F77_NAME(dtbrfs)(const char* uplo, const char* trans,
1407  const char* diag, const int* n, const int* kd,
1408  const int* nrhs,
1409  const double* ab, const int* ldab,
1410  const double* b, const int* ldb,
1411  double* x, const int* ldx,
1412  double* ferr, double* berr,
1413  double* work, int* iwork, int* info);
1414 /* DTBTRS - solve a triangular system of the form A * X = B or */
1415 /* A**T * X = B, */
1416 La_extern void
1417 F77_NAME(dtbtrs)(const char* uplo, const char* trans,
1418  const char* diag, const int* n,
1419  const int* kd, const int* nrhs,
1420  const double* ab, const int* ldab,
1421  double* b, const int* ldb, int* info);
1422 
1423 /* Double precision Triangular matrices Generalized problems */
1424 
1425 /* DTGEVC - compute some or all of the right and/or left */
1426 /* generalized eigenvectors of a pair of real upper triangular */
1427 /* matrices (A,B); */
1428 La_extern void
1429 F77_NAME(dtgevc)(const char* side, const char* howmny,
1430  const int* select, const int* n,
1431  const double* a, const int* lda,
1432  const double* b, const int* ldb,
1433  double* vl, const int* ldvl,
1434  double* vr, const int* ldvr,
1435  const int* mm, int* m, double* work, int* info);
1436 
1437 /* DTGSJA - compute the generalized singular value decomposition */
1438 /* (GSVD); of two real upper triangular (or trapezoidal); matrices */
1439 /* A and B */
1440 La_extern void
1441 F77_NAME(dtgsja)(const char* jobu, const char* jobv, const char* jobq,
1442  const int* m, const int* p, const int* n,
1443  const int* k, const int* l,
1444  double* a, const int* lda,
1445  double* b, const int* ldb,
1446  const double* tola, const double* tolb,
1447  double* alpha, double* beta,
1448  double* u, const int* ldu,
1449  double* v, const int* ldv,
1450  double* q, const int* ldq,
1451  double* work, int* ncycle, int* info);
1452 
1453 /* Double precision Triangular matrices Packed storage */
1454 
1455 /* DTPCON - estimate the reciprocal of the condition number of a */
1456 /* packed triangular matrix A, in either the 1-norm or the */
1457 /* infinity-norm */
1458 La_extern void
1459 F77_NAME(dtpcon)(const char* norm, const char* uplo,
1460  const char* diag, const int* n,
1461  const double* ap, double* rcond,
1462  double* work, int* iwork, int* info);
1463 
1464 /* DTPRFS - provide error bounds and backward error estimates for */
1465 /* the solution to a system of linear equations with a triangular */
1466 /* packed coefficient matrix */
1467 La_extern void
1468 F77_NAME(dtprfs)(const char* uplo, const char* trans,
1469  const char* diag, const int* n,
1470  const int* nrhs, const double* ap,
1471  const double* b, const int* ldb,
1472  double* x, const int* ldx,
1473  double* ferr, double* berr,
1474  double* work, int* iwork, int* info);
1475 
1476 /* Double precision TRiangular matrices */
1477 
1478 /* DTPTRI - compute the inverse of a real upper or lower */
1479 /* triangular matrix A stored in packed format */
1480 La_extern void
1481 F77_NAME(dtptri)(const char* uplo, const char* diag,
1482  const int* n, double* ap, int* info);
1483 
1484 /* DTPTRS - solve a triangular system of the form A * X = B or */
1485 /* A**T * X = B, */
1486 La_extern void
1487 F77_NAME(dtptrs)(const char* uplo, const char* trans,
1488  const char* diag, const int* n,
1489  const int* nrhs, const double* ap,
1490  double* b, const int* ldb, int* info);
1491 
1492 /* DTRCON - estimate the reciprocal of the condition number of a */
1493 /* triangular matrix A, in either the 1-norm or the infinity-norm */
1494 La_extern void
1495 F77_NAME(dtrcon)(const char* norm, const char* uplo,
1496  const char* diag, const int* n,
1497  const double* a, const int* lda,
1498  double* rcond, double* work,
1499  int* iwork, int* info);
1500 
1501 /* DTREVC - compute some or all of the right and/or left */
1502 /* eigenvectors of a real upper quasi-triangular matrix T */
1503 La_extern void
1504 F77_NAME(dtrevc)(const char* side, const char* howmny,
1505  const int* select, const int* n,
1506  const double* t, const int* ldt,
1507  double* vl, const int* ldvl,
1508  double* vr, const int* ldvr,
1509  const int* mm, int* m, double* work, int* info);
1510 
1511 /* DTREXC - reorder the real Schur factorization of a real matrix */
1512 /* A = Q*T*Q**T, so that the diagonal block of T with row index */
1513 /* IFST is moved to row ILST */
1514 La_extern void
1515 F77_NAME(dtrexc)(const char* compq, const int* n,
1516  double* t, const int* ldt,
1517  double* q, const int* ldq,
1518  int* ifst, int* ILST,
1519  double* work, int* info);
1520 
1521 /* DTRRFS - provide error bounds and backward error estimates for */
1522 /* the solution to a system of linear equations with a triangular */
1523 /* coefficient matrix */
1524 La_extern void
1525 F77_NAME(dtrrfs)(const char* uplo, const char* trans,
1526  const char* diag, const int* n, const int* nrhs,
1527  const double* a, const int* lda,
1528  const double* b, const int* ldb,
1529  double* x, const int* ldx,
1530  double* ferr, double* berr,
1531  double* work, int* iwork, int* info);
1532 
1533 /* DTRSEN - reorder the real Schur factorization of a real matrix */
1534 /* A = Q*T*Q**T, so that a selected cluster of eigenvalues appears */
1535 /* in the leading diagonal blocks of the upper quasi-triangular */
1536 /* matrix T, */
1537 La_extern void
1538 F77_NAME(dtrsen)(const char* job, const char* compq,
1539  const int* select, const int* n,
1540  double* t, const int* ldt,
1541  double* q, const int* ldq,
1542  double* wr, double* wi,
1543  int* m, double* s, double* sep,
1544  double* work, const int* lwork,
1545  int* iwork, const int* liwork, int* info);
1546 
1547 /* DTRSNA - estimate reciprocal condition numbers for specified */
1548 /* eigenvalues and/or right eigenvectors of a real upper */
1549 /* quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q */
1550 /* orthogonal); */
1551 La_extern void
1552 F77_NAME(dtrsna)(const char* job, const char* howmny,
1553  const int* select, const int* n,
1554  const double* t, const int* ldt,
1555  const double* vl, const int* ldvl,
1556  const double* vr, const int* ldvr,
1557  double* s, double* sep, const int* mm,
1558  int* m, double* work, const int* lwork,
1559  int* iwork, int* info);
1560 
1561 /* DTRSYL - solve the real Sylvester matrix equation */
1562 La_extern void
1563 F77_NAME(dtrsyl)(const char* trana, const char* tranb,
1564  const int* isgn, const int* m, const int* n,
1565  const double* a, const int* lda,
1566  const double* b, const int* ldb,
1567  double* c, const int* ldc,
1568  double* scale, int* info);
1569 
1570 /* DTRTI2 - compute the inverse of a real upper or lower */
1571 /* triangular matrix */
1572 La_extern void
1573 F77_NAME(dtrti2)(const char* uplo, const char* diag,
1574  const int* n, double* a, const int* lda,
1575  int* info);
1576 
1577 /* DTRTRI - compute the inverse of a real upper or lower */
1578 /* triangular matrix A */
1579 La_extern void
1580 F77_NAME(dtrtri)(const char* uplo, const char* diag,
1581  const int* n, double* a, const int* lda,
1582  int* info);
1583 
1584 /* DTRTRS - solve a triangular system of the form A * X = B or */
1585 /* A**T * X = B */
1586 La_extern void
1587 F77_NAME(dtrtrs)(const char* uplo, const char* trans,
1588  const char* diag, const int* n, const int* nrhs,
1589  const double* a, const int* lda,
1590  double* b, const int* ldb, int* info);
1591 
1592 /* DTZRQF - reduce the M-by-N ( M<=N ); real upper trapezoidal */
1593 /* matrix A to upper triangular form by means of orthogonal */
1594 /* transformations */
1595 La_extern void
1596 F77_NAME(dtzrqf)(const int* m, const int* n,
1597  double* a, const int* lda,
1598  double* tau, int* info);
1599 
1600 
1601 
1602 /* Double precision utilties in Lapack */
1603 /* DHGEQZ - implement a single-/double-shift version of the QZ */
1604 /* method for finding the generalized eigenvalues */
1605 /* w(j);=(ALPHAR(j); + i*ALPHAI(j););/BETAR(j); of the equation */
1606 /* det( A - w(i); B ); = 0 In addition, the pair A,B may be */
1607 /* reduced to generalized Schur form */
1608 La_extern void
1609 F77_NAME(dhgeqz)(const char* job, const char* compq, const char* compz,
1610  const int* n, const int *ILO, const int* IHI,
1611  double* a, const int* lda,
1612  double* b, const int* ldb,
1613  double* alphar, double* alphai, const double* beta,
1614  double* q, const int* ldq,
1615  double* z, const int* ldz,
1616  double* work, const int* lwork, int* info);
1617 /* DHSEIN - use inverse iteration to find specified right and/or */
1618 /* left eigenvectors of a real upper Hessenberg matrix H */
1619 La_extern void
1620 F77_NAME(dhsein)(const char* side, const char* eigsrc,
1621  const char* initv, int* select,
1622  const int* n, double* h, const int* ldh,
1623  double* wr, double* wi,
1624  double* vl, const int* ldvl,
1625  double* vr, const int* ldvr,
1626  const int* mm, int* m, double* work,
1627  int* ifaill, int* ifailr, int* info);
1628 /* DHSEQR - compute the eigenvalues of a real upper Hessenberg */
1629 /* matrix H and, optionally, the matrices T and Z from the Schur */
1630 /* decomposition H = Z T Z**T, where T is an upper */
1631 /* quasi-triangular matrix (the Schur form);, and Z is the */
1632 /* orthogonal matrix of Schur vectors */
1633 La_extern void
1634 F77_NAME(dhseqr)(const char* job, const char* compz, const int* n,
1635  const int* ilo, const int* ihi,
1636  double* h, const int* ldh,
1637  double* wr, double* wi,
1638  double* z, const int* ldz,
1639  double* work, const int* lwork, int* info);
1640 /* DLABAD - take as input the values computed by SLAMCH for */
1641 /* underflow and overflow, and returns the square root of each of */
1642 /* these values if the log of LARGE is sufficiently large */
1643 La_extern void
1644 F77_NAME(dlabad)(double* small, double* large);
1645 /* DLABRD - reduce the first NB rows and columns of a real */
1646 /* general m by n matrix A to upper or lower bidiagonal form by an */
1647 /* orthogonal transformation Q' * A * P, and returns the matrices */
1648 /* X and Y which are needed to apply the transformation to the */
1649 /* unreduced part of A */
1650 La_extern void
1651 F77_NAME(dlabrd)(const int* m, const int* n, const int* nb,
1652  double* a, const int* lda, double* d, double* e,
1653  double* tauq, double* taup,
1654  double* x, const int* ldx, double* y, const int* ldy);
1655 /* DLACON - estimate the 1-norm of a square, real matrix A */
1656 La_extern void
1657 F77_NAME(dlacon)(const int* n, double* v, double* x,
1658  int* isgn, double* est, int* kase);
1659 /* DLACPY - copy all or part of a two-dimensional matrix A to */
1660 /* another matrix B */
1661 La_extern void
1662 F77_NAME(dlacpy)(const char* uplo, const int* m, const int* n,
1663  const double* a, const int* lda,
1664  double* b, const int* ldb);
1665 /* DLADIV - perform complex division in real arithmetic */
1666 La_extern void
1667 F77_NAME(dladiv)(const double* a, const double* b,
1668  const double* c, const double* d,
1669  double* p, double* q);
1670 /* DLAE2 - compute the eigenvalues of a 2-by-2 symmetric matrix [ A B ] */
1671 /* [ B C ] */
1672 La_extern void
1673 F77_NAME(dlae2)(const double* a, const double* b, const double* c,
1674  double* rt1, double* rt2);
1675 /* DLAEBZ - contain the iteration loops which compute and use the */
1676 /* function N(w);, which is the count of eigenvalues of a */
1677 /* symmetric tridiagonal matrix T less than or equal to its */
1678 /* argument w */
1679 La_extern void
1680 F77_NAME(dlaebz)(const int* ijob, const int* nitmax, const int* n,
1681  const int* mmax, const int* minp, const int* nbmin,
1682  const double* abstol, const double* reltol,
1683  const double* pivmin, double* d, double* e,
1684  double* e2, int* nval, double* ab, double* c,
1685  int* mout, int* nab, double* work, int* iwork,
1686  int* info);
1687 /* DLAED0 - compute all eigenvalues and corresponding */
1688 /* eigenvectors of a symmetric tridiagonal matrix using the divide */
1689 /* and conquer method */
1690 La_extern void
1691 F77_NAME(dlaed0)(const int* icompq, const int* qsiz, const int* n,
1692  double* d, double* e, double* q, const int* ldq,
1693  double* qstore, const int* ldqs,
1694  double* work, int* iwork, int* info);
1695 /* DLAED1 - compute the updated eigensystem of a diagonal matrix */
1696 /* after modification by a rank-one symmetric matrix */
1697 La_extern void
1698 F77_NAME(dlaed1)(const int* n, double* d, double* q, const int* ldq,
1699  int* indxq, const double* rho, const int* cutpnt,
1700  double* work, int* iwork, int* info);
1701 /* DLAED2 - merge the two sets of eigenvalues together into a */
1702 /* single sorted set */
1703 La_extern void
1704 F77_NAME(dlaed2)(const int* k, const int* n, double* d,
1705  double* q, const int* ldq, int* indxq,
1706  double* rho, const int* cutpnt, double* z,
1707  double* dlamda, double* q2, const int *ldq2,
1708  int* indxc, int* w, int* indxp, int* indx,
1709  int* coltyp, int* info);
1710 /* DLAED3 - find the roots of the secular equation, as defined by */
1711 /* the values in double* d, W, and RHO, between KSTART and KSTOP */
1712 La_extern void
1713 F77_NAME(dlaed3)(const int* k, const int* kstart,
1714  const int *kstop, const int* n,
1715  double* d, double* q, const int* ldq,
1716  const double* rho, const int* cutpnt,
1717  double* dlamda, int* q2, const int* ldq2,
1718  int* indxc, int* ctot, double* w,
1719  double* s, const int* lds, int* info);
1720 /* DLAED4 - subroutine computes the I-th updated eigenvalue of a */
1721 /* symmetric rank-one modification to a diagonal matrix whose */
1722 /* elements are given in the array d, and that D(i); < D(j); for */
1723 /* i < j and that RHO > 0 */
1724 La_extern void
1725 F77_NAME(dlaed4)(const int* n, const int* i, const double* d,
1726  const double* z, const double* delta,
1727  const double* rho, double* dlam, int* info);
1728 /* DLAED5 - subroutine computes the I-th eigenvalue of a */
1729 /* symmetric rank-one modification of a 2-by-2 diagonal matrix */
1730 /* diag( D ); + RHO The diagonal elements in the array D are */
1731 /* assumed to satisfy D(i); < D(j); for i < j */
1732 La_extern void
1733 F77_NAME(dlaed5)(const int* i, const double* d, const double* z,
1734  double* delta, const double* rho, double* dlam);
1735 /* DLAED6 - compute the positive or negative root (closest to the */
1736 /* origin); of z(1); z(2); z(3); f(x); = rho + --------- + */
1737 /* ---------- + --------- d(1);-x d(2);-x d(3);-x It is assumed */
1738 /* that if ORGATI = .true */
1739 La_extern void
1740 F77_NAME(dlaed6)(const int* kniter, const int* orgati,
1741  const double* rho, const double* d,
1742  const double* z, const double* finit,
1743  double* tau, int* info);
1744 /* DLAED7 - compute the updated eigensystem of a diagonal matrix */
1745 /* after modification by a rank-one symmetric matrix */
1746 La_extern void
1747 F77_NAME(dlaed7)(const int* icompq, const int* n,
1748  const int* qsiz, const int* tlvls,
1749  const int* curlvl, const int* curpbm,
1750  double* d, double* q, const int* ldq,
1751  int* indxq, const double* rho, const int* cutpnt,
1752  double* qstore, double* qptr, const int* prmptr,
1753  const int* perm, const int* givptr,
1754  const int* givcol, const double* givnum,
1755  double* work, int* iwork, int* info);
1756 /* DLAED8 - merge the two sets of eigenvalues together into a */
1757 /* single sorted set */
1758 La_extern void
1759 F77_NAME(dlaed8)(const int* icompq, const int* k,
1760  const int* n, const int* qsiz,
1761  double* d, double* q, const int* ldq,
1762  const int* indxq, double* rho,
1763  const int* cutpnt, const double* z,
1764  double* dlamda, double* q2, const int* ldq2,
1765  double* w, int* perm, int* givptr,
1766  int* givcol, double* givnum, int* indxp,
1767  int* indx, int* info);
1768 /* DLAED9 - find the roots of the secular equation, as defined by */
1769 /* the values in double* d, Z, and RHO, between KSTART and KSTOP */
1770 La_extern void
1771 F77_NAME(dlaed9)(const int* k, const int* kstart, const int* kstop,
1772  const int* n, double* d, double* q, const int* ldq,
1773  const double* rho, const double* dlamda,
1774  const double* w, double* s, const int* lds, int* info);
1775 /* DLAEDA - compute the Z vector corresponding to the merge step */
1776 /* in the CURLVLth step of the merge process with TLVLS steps for */
1777 /* the CURPBMth problem */
1778 La_extern void
1779 F77_NAME(dlaeda)(const int* n, const int* tlvls, const int* curlvl,
1780  const int* curpbm, const int* prmptr, const int* perm,
1781  const int* givptr, const int* givcol,
1782  const double* givnum, const double* q,
1783  const int* qptr, double* z, double* ztemp, int* info);
1784 /* DLAEIN - use inverse iteration to find a right or left */
1785 /* eigenvector corresponding to the eigenvalue (WR,WI); of a real */
1786 /* upper Hessenberg matrix H */
1787 La_extern void
1788 F77_NAME(dlaein)(const int* rightv, const int* noinit, const int* n,
1789  const double* h, const int* ldh,
1790  const double* wr, const double* wi,
1791  double* vr, double* vi,
1792  double* b, const int* ldb, double* work,
1793  const double* eps3, const double* smlnum,
1794  const double* bignum, int* info);
1795 /* DLAEV2 - compute the eigendecomposition of a 2-by-2 symmetric */
1796 /* matrix [ A B ] [ B C ] */
1797 La_extern void
1798 F77_NAME(dlaev2)(const double* a, const double* b, const double* c,
1799  double* rt1, double* rt2, double* cs1, double *sn1);
1800 /* DLAEXC - swap adjacent diagonal blocks T11 and T22 of order 1 */
1801 /* or 2 in an upper quasi-triangular matrix T by an orthogonal */
1802 /* similarity transformation */
1803 La_extern void
1804 F77_NAME(dlaexc)(const int* wantq, const int* n, double* t, const int* ldt,
1805  double* q, const int* ldq, const int* j1,
1806  const int* n1, const int* n2, double* work, int* info);
1807 /* DLAG2 - compute the eigenvalues of a 2 x 2 generalized */
1808 /* eigenvalue problem A - w B, with scaling as necessary to aextern void */
1809 /* over-/underflow */
1810 La_extern void
1811 F77_NAME(dlag2)(const double* a, const int* lda, const double* b,
1812  const int* ldb, const double* safmin,
1813  double* scale1, double* scale2,
1814  double* wr1, double* wr2, double* wi);
1815 /* DLAGS2 - compute 2-by-2 orthogonal matrices U, V and Q, such */
1816 /* that if ( UPPER ); then U'*A*Q = U'*( A1 A2 );*Q = ( x 0 ); */
1817 /* ( 0 A3 ); ( x x ); and V'*B*Q = V'*( B1 B2 );*Q = ( x 0 ); ( */
1818 /* 0 B3 ); ( x x ); or if ( .NOT.UPPER ); then U'*A*Q = U'*( A1 */
1819 /* 0 );*Q = ( x x ); ( A2 A3 ); ( 0 x ); and V'*B*Q = V'*( B1 0 */
1820 /* );*Q = ( x x ); ( B2 B3 ); ( 0 x ); The rows of the */
1821 /* transformed A and B are parallel, where U = ( CSU SNU );, V = */
1822 /* ( CSV SNV );, Q = ( CSQ SNQ ); ( -SNU CSU ); ( -SNV CSV ); ( */
1823 /* -SNQ CSQ ); Z' denotes the transpose of Z */
1824 La_extern void
1825 F77_NAME(dlags2)(const int* upper,
1826  const double* a1, const double* a2, const double* a3,
1827  const double* b1, const double* b2, const double* b3,
1828  double* csu, double* snu,
1829  double* csv, double* snv, double *csq, double *snq);
1830 /* DLAGTF - factorize the matrix (T - lambda*I);, where T is an n */
1831 /* by n tridiagonal matrix and lambda is a scalar, as T - */
1832 /* lambda*I = PLU, */
1833 La_extern void
1834 F77_NAME(dlagtf)(const int* n, double* a, const double* lambda,
1835  double* b, double* c, const double *tol,
1836  double* d, int* in, int* info);
1837 /* DLAGTM - perform a matrix-vector product of the form B := */
1838 /* alpha * A * X + beta * B where A is a tridiagonal matrix of */
1839 /* order N, B and X are N by NRHS matrices, and alpha and beta are */
1840 /* real scalars, each of which may be 0., 1., or -1 */
1841 La_extern void
1842 F77_NAME(dlagtm)(const char* trans, const int* n, const int* nrhs,
1843  const double* alpha, const double* dl,
1844  const double* d, const double* du,
1845  const double* x, const int* ldx, const double* beta,
1846  double* b, const int* ldb);
1847 /* DLAGTS - may be used to solve one of the systems of equations */
1848 /* (T - lambda*I);*x = y or (T - lambda*I);'*x = y, */
1849 La_extern void
1850 F77_NAME(dlagts)(const int* job, const int* n,
1851  const double* a, const double* b,
1852  const double* c, const double* d,
1853  const int* in, double* y, double* tol, int* info);
1854 /* DLAHQR - an auxiliary routine called by DHSEQR to update the */
1855 /* eigenvalues and Schur decomposition already computed by DHSEQR, */
1856 /* by dealing with the Hessenberg submatrix in rows and columns */
1857 /* ILO to IHI */
1858 La_extern void
1859 F77_NAME(dlahqr)(const int* wantt, const int* wantz, const int* n,
1860  const int* ilo, const int* ihi,
1861  double* H, const int* ldh, double* wr, double* wi,
1862  const int* iloz, const int* ihiz,
1863  double* z, const int* ldz, int* info);
1864 /* DLAHRD - reduce the first NB columns of a real general */
1865 /* n-by-(n-k+1); matrix A so that elements below the k-th */
1866 /* subdiagonal are zero */
1867 La_extern void
1868 F77_NAME(dlahrd)(const int* n, const int* k, const int* nb,
1869  double* a, const int* lda,
1870  double* tau, double* t, const int* ldt,
1871  double* y, const int* ldy);
1872 /* DLAIC1 - apply one step of incremental condition estimation in */
1873 /* its simplest version */
1874 La_extern void
1875 F77_NAME(dlaic1)(const int* job, const int* j, const double* x,
1876  const double* sest, const double* w,
1877  const double* gamma, double* sestpr,
1878  double* s, double* c);
1879 /* DLALN2 - solve a system of the form (ca A - w D ); X = s B or */
1880 /* (ca A' - w D); X = s B with possible scaling ("s"); and */
1881 /* perturbation of A */
1882 La_extern void
1883 F77_NAME(dlaln2)(const int* ltrans, const int* na, const int* nw,
1884  const double* smin, const double* ca,
1885  const double* a, const int* lda,
1886  const double* d1, const double* d2,
1887  const double* b, const int* ldb,
1888  const double* wr, const double* wi,
1889  double* x, const int* ldx, double* scale,
1890  double* xnorm, int* info);
1891 /* DLAMCH - determine double precision machine parameters */
1892 La_extern double
1893 F77_NAME(dlamch)(const char* cmach);
1894 /* DLAMRG - will create a permutation list which will merge the */
1895 /* elements of A (which is composed of two independently sorted */
1896 /* sets); into a single set which is sorted in ascending order */
1897 La_extern void
1898 F77_NAME(dlamrg)(const int* n1, const int* n2, const double* a,
1899  const int* dtrd1, const int* dtrd2, int* index);
1900 /* DLANGB - return the value of the one norm, or the Frobenius */
1901 /* norm, or the infinity norm, or the element of largest absolute */
1902 /* value of an n by n band matrix A, with kl sub-diagonals and ku */
1903 /* super-diagonals */
1904 La_extern double
1905 F77_NAME(dlangb)(const char* norm, const int* n,
1906  const int* kl, const int* ku, const double* ab,
1907  const int* ldab, double* work);
1908 /* DLANGE - return the value of the one norm, or the Frobenius */
1909 /* norm, or the infinity norm, or the element of largest absolute */
1910 /* value of a real matrix A */
1911 La_extern double
1912 F77_NAME(dlange)(const char* norm, const int* m, const int* n,
1913  const double* a, const int* lda, double* work);
1914 /* DLANGT - return the value of the one norm, or the Frobenius */
1915 /* norm, or the infinity norm, or the element of largest absolute */
1916 /* value of a real tridiagonal matrix A */
1917 La_extern double
1918 F77_NAME(dlangt)(const char* norm, const int* n,
1919  const double* dl, const double* d,
1920  const double* du);
1921 /* DLANHS - return the value of the one norm, or the Frobenius */
1922 /* norm, or the infinity norm, or the element of largest absolute */
1923 /* value of a Hessenberg matrix A */
1924 La_extern double
1925 F77_NAME(dlanhs)(const char* norm, const int* n,
1926  const double* a, const int* lda, double* work);
1927 /* DLANSB - return the value of the one norm, or the Frobenius */
1928 /* norm, or the infinity norm, or the element of largest absolute */
1929 /* value of an n by n symmetric band matrix A, with k */
1930 /* super-diagonals */
1931 La_extern double
1932 F77_NAME(dlansb)(const char* norm, const char* uplo,
1933  const int* n, const int* k,
1934  const double* ab, const int* ldab, double* work);
1935 /* DLANSP - return the value of the one norm, or the Frobenius */
1936 /* norm, or the infinity norm, or the element of largest absolute */
1937 /* value of a real symmetric matrix A, supplied in packed form */
1938 La_extern double
1939 F77_NAME(dlansp)(const char* norm, const char* uplo,
1940  const int* n, const double* ap, double* work);
1941 /* DLANST - return the value of the one norm, or the Frobenius */
1942 /* norm, or the infinity norm, or the element of largest absolute */
1943 /* value of a real symmetric tridiagonal matrix A */
1944 La_extern double
1945 F77_NAME(dlanst)(const char* norm, const int* n,
1946  const double* d, const double* e);
1947 /* DLANSY - return the value of the one norm, or the Frobenius */
1948 /* norm, or the infinity norm, or the element of largest absolute */
1949 /* value of a real symmetric matrix A */
1950 La_extern double
1951 F77_NAME(dlansy)(const char* norm, const char* uplo, const int* n,
1952  const double* a, const int* lda, double* work);
1953 /* DLANTB - return the value of the one norm, or the Frobenius */
1954 /* norm, or the infinity norm, or the element of largest absolute */
1955 /* value of an n by n triangular band matrix A, with ( k + 1 ) diagonals */
1956 La_extern double
1957 F77_NAME(dlantb)(const char* norm, const char* uplo,
1958  const char* diag, const int* n, const int* k,
1959  const double* ab, const int* ldab, double* work);
1960 /* DLANTP - return the value of the one norm, or the Frobenius */
1961 /* norm, or the infinity norm, or the element of largest absolute */
1962 /* value of a triangular matrix A, supplied in packed form */
1963 La_extern double
1964 F77_NAME(dlantp)(const char* norm, const char* uplo, const char* diag,
1965  const int* n, const double* ap, double* work);
1966 /* DLANTR - return the value of the one norm, or the Frobenius */
1967 /* norm, or the infinity norm, or the element of largest absolute */
1968 /* value of a trapezoidal or triangular matrix A */
1969 La_extern double
1970 F77_NAME(dlantr)(const char* norm, const char* uplo,
1971  const char* diag, const int* m, const int* n,
1972  const double* a, const int* lda, double* work);
1973 /* DLANV2 - compute the Schur factorization of a real 2-by-2 */
1974 /* nonsymmetric matrix in standard form */
1975 La_extern void
1976 F77_NAME(dlanv2)(double* a, double* b, double* c, double* d,
1977  double* rt1r, double* rt1i, double* rt2r, double* rt2i,
1978  double* cs, double *sn);
1979 /* DLAPLL - two column vectors X and Y, let A = ( X Y ); */
1980 La_extern void
1981 F77_NAME(dlapll)(const int* n, double* x, const int* incx,
1982  double* y, const int* incy, double* ssmin);
1983 /* DLAPMT - rearrange the columns of the M by N matrix X as */
1984 /* specified by the permutation K(1);,K(2);,...,K(N); of the */
1985 /* integers 1,...,N */
1986 La_extern void
1987 F77_NAME(dlapmt)(const int* forwrd, const int* m, const int* n,
1988  double* x, const int* ldx, const int* k);
1989 /* DLAPY2 - return sqrt(x**2+y**2);, taking care not to cause */
1990 /* unnecessary overflow */
1991 La_extern double
1992 F77_NAME(dlapy2)(const double* x, const double* y);
1993 /* DLAPY3 - return sqrt(x**2+y**2+z**2);, taking care not to */
1994 /* cause unnecessary overflow */
1995 La_extern double
1996 F77_NAME(dlapy3)(const double* x, const double* y, const double* z);
1997 /* DLAQGB - equilibrate a general M by N band matrix A with KL */
1998 /* subdiagonals and KU superdiagonals using the row and scaling */
1999 /* factors in the vectors R and C */
2000 La_extern void
2001 F77_NAME(dlaqgb)(const int* m, const int* n,
2002  const int* kl, const int* ku,
2003  double* ab, const int* ldab,
2004  double* r, double* c,
2005  double* rowcnd, double* colcnd,
2006  const double* amax, char* equed);
2007 /* DLAQGE - equilibrate a general M by N matrix A using the row */
2008 /* and scaling factors in the vectors R and C */
2009 La_extern void
2010 F77_NAME(dlaqge)(const int* m, const int* n,
2011  double* a, const int* lda,
2012  double* r, double* c,
2013  double* rowcnd, double* colcnd,
2014  const double* amax, char* equed);
2015 /* DLAQSB - equilibrate a symmetric band matrix A using the */
2016 /* scaling factors in the vector S */
2017 La_extern void
2018 F77_NAME(dlaqsb)(const char* uplo, const int* n, const int* kd,
2019  double* ab, const int* ldab, const double* s,
2020  const double* scond, const double* amax, char* equed);
2021 /* DLAQSP - equilibrate a symmetric matrix A using the scaling */
2022 /* factors in the vector S */
2023 La_extern void
2024 F77_NAME(dlaqsp)(const char* uplo, const int* n,
2025  double* ap, const double* s, const double* scond,
2026  const double* amax, int* equed);
2027 /* DLAQSY - equilibrate a symmetric matrix A using the scaling */
2028 /* factors in the vector S */
2029 La_extern void
2030 F77_NAME(dlaqsy)(const char* uplo, const int* n,
2031  double* a, const int* lda,
2032  const double* s, const double* scond,
2033  const double* amax, int* equed);
2034 /* DLAQTR - solve the real quasi-triangular system */
2035 /* op(T) * p = scale*c */
2036 La_extern void
2037 F77_NAME(dlaqtr)(const int* ltran, const int* lreal, const int* n,
2038  const double* t, const int* ldt,
2039  const double* b, const double* w,
2040  double* scale, double* x, double* work, int* info);
2041 /* DLAR2V - apply a vector of real plane rotations from both */
2042 /* sides to a sequence of 2-by-2 real symmetric matrices, defined */
2043 /* by the elements of the vectors x, y and z */
2044 La_extern void
2045 F77_NAME(dlar2v)(const int* n, double* x, double* y,
2046  double* z, const int* incx,
2047  const double* c, const double* s,
2048  const int* incc);
2049 /* DLARF - apply a real elementary reflector H to a real m by n */
2050 /* matrix C, from either the left or the right */
2051 La_extern void
2052 F77_NAME(dlarf)(const char* side, const int* m, const int* n,
2053  const double* v, const int* incv, const double* tau,
2054  double* c, const int* ldc, double* work);
2055 /* DLARFB - apply a real block reflector H or its transpose H' */
2056 /* to a real m by n matrix C, from either the left or the right */
2057 La_extern void
2058 F77_NAME(dlarfb)(const char* side, const char* trans,
2059  const char* direct, const char* storev,
2060  const int* m, const int* n, const int* k,
2061  const double* v, const int* ldv,
2062  const double* t, const int* ldt,
2063  double* c, const int* ldc,
2064  double* work, const int* lwork);
2065 /* DLARFG - generate a real elementary reflector H of order n, */
2066 /* such that H * ( alpha ) = ( beta ), H' * H = I */
2067 La_extern void
2068 F77_NAME(dlarfg)(const int* n, const double* alpha,
2069  double* x, const int* incx, double* tau);
2070 /* DLARFT - form the triangular factor T of a real block */
2071 /* reflector H of order n, which is defined as a product of k */
2072 /* elementary reflectors */
2073 La_extern void
2074 F77_NAME(dlarft)(const char* direct, const char* storev,
2075  const int* n, const int* k, double* v, const int* ldv,
2076  const double* tau, double* t, const int* ldt);
2077 /* DLARFX - apply a real elementary reflector H to a real m by n */
2078 /* matrix C, from either the left or the right */
2079 La_extern void
2080 F77_NAME(dlarfx)(const char* side, const int* m, const int* n,
2081  const double* v, const double* tau,
2082  double* c, const int* ldc, double* work);
2083 /* DLARGV - generate a vector of real plane rotations, determined */
2084 /* by elements of the real vectors x and y */
2085 La_extern void
2086 F77_NAME(dlargv)(const int* n, double* x, const int* incx,
2087  double* y, const int* incy, double* c, const int* incc);
2088 /* DLARNV - return a vector of n random real numbers from a */
2089 /* uniform or normal distribution */
2090 La_extern void
2091 F77_NAME(dlarnv)(const int* idist, int* iseed, const int* n, double* x);
2092 /* DLARTG - generate a plane rotation so that [ CS SN ] */
2093 La_extern void
2094 F77_NAME(dlartg)(const double* f, const double* g, double* cs,
2095  double* sn, double *r);
2096 /* DLARTV - apply a vector of real plane rotations to elements of */
2097 /* the real vectors x and y */
2098 La_extern void
2099 F77_NAME(dlartv)(const int* n, double* x, const int* incx,
2100  double* y, const int* incy,
2101  const double* c, const double* s,
2102  const int* incc);
2103 /* DLARUV - return a vector of n random real numbers from a */
2104 /* uniform (0,1); */
2105 La_extern void
2106 F77_NAME(dlaruv)(int* iseed, const int* n, double* x);
2107 
2108 /* DLAS2 - compute the singular values of the 2-by-2 matrix */
2109 /* [ F G ] [ 0 H ] */
2110 La_extern void
2111 F77_NAME(dlas2)(const double* f, const double* g, const double* h,
2112  double* ssmin, double* ssmax);
2113 
2114 /* DLASCL - multiply the M by N real matrix A by the real scalar */
2115 /* CTO/CFROM */
2116 La_extern void
2117 F77_NAME(dlascl)(const char* type,
2118  const int* kl,const int* ku,
2119  double* cfrom, double* cto,
2120  const int* m, const int* n,
2121  double* a, const int* lda, int* info);
2122 
2123 /* DLASET - initialize an m-by-n matrix A to BETA on the diagonal */
2124 /* and ALPHA on the offdiagonals */
2125 La_extern void
2126 F77_NAME(dlaset)(const char* uplo, const int* m, const int* n,
2127  const double* alpha, const double* beta,
2128  double* a, const int* lda);
2129 /* DLASQ1 - DLASQ1 computes the singular values of a real N-by-N */
2130 /* bidiagonal matrix with diagonal D and off-diagonal E */
2131 La_extern void
2132 F77_NAME(dlasq1)(const int* n, double* d, double* e,
2133  double* work, int* info);
2134 /* DLASQ2 - DLASQ2 computes the singular values of a real N-by-N */
2135 /* unreduced bidiagonal matrix with squared diagonal elements in */
2136 /* Q and squared off-diagonal elements in E */
2137 La_extern void
2138 F77_NAME(dlasq2)(const int* m, double* q, double* e,
2139  double* qq, double* ee, const double* eps,
2140  const double* tol2, const double* small2,
2141  double* sup, int* kend, int* info);
2142 /* DLASQ3 - DLASQ3 is the workhorse of the whole bidiagonal SVD */
2143 /* algorithm */
2144 La_extern void
2145 F77_NAME(dlasq3)(int* n, double* q, double* e, double* qq,
2146  double* ee, double* sup, double *sigma,
2147  int* kend, int* off, int* iphase,
2148  const int* iconv, const double* eps,
2149  const double* tol2, const double* small2);
2150 /* DLASQ4 - DLASQ4 estimates TAU, the smallest eigenvalue of a */
2151 /* matrix */
2152 La_extern void
2153 F77_NAME(dlasq4)(const int* n, const double* q, const double* e,
2154  double* tau, double* sup);
2155 /* DLASR - perform the transformation A := P*A, when SIDE = 'L' */
2156 /* or 'l' ( Left-hand side ); A := A*P', when SIDE = 'R' or 'r' */
2157 /* ( Right-hand side ); where A is an m by n real matrix and P is */
2158 /* an orthogonal matrix, */
2159 La_extern void
2160 F77_NAME(dlasr)(const char* side, const char* pivot,
2161  const char* direct, const int* m, const int* n,
2162  const double* c, const double* s,
2163  double* a, const int* lda);
2164 /* DLASRT - the numbers in D in increasing order (if ID = 'I'); */
2165 /* or in decreasing order (if ID = 'D' ); */
2166 La_extern void
2167 F77_NAME(dlasrt)(const char* id, const int* n, double* d, int* info);
2168 /* DLASSQ - return the values scl and smsq such that ( scl**2 */
2169 /* );*smsq = x( 1 );**2 +...+ x( n );**2 + ( scale**2 );*sumsq, */
2170 La_extern void
2171 F77_NAME(dlassq)(const int* n, const double* x, const int* incx,
2172  double* scale, double* sumsq);
2173 /* DLASV2 - compute the singular value decomposition of a 2-by-2 */
2174 /* triangular matrix [ F G ] [ 0 H ] */
2175 La_extern void
2176 F77_NAME(dlasv2)(const double* f, const double* g, const double* h,
2177  double* ssmin, double* ssmax, double* snr, double* csr,
2178  double* snl, double* csl);
2179 /* DLASWP - perform a series of row interchanges on the matrix A */
2180 La_extern void
2181 F77_NAME(dlaswp)(const int* n, double* a, const int* lda,
2182  const int* k1, const int* k2,
2183  const int* ipiv, const int* incx);
2184 /* DLASY2 - solve for the N1 by N2 matrix double* x, 1 <= N1,N2 <= 2, in */
2185 /* op(TL);*X + ISGN*X*op(TR); = SCALE*B, */
2186 La_extern void
2187 F77_NAME(dlasy2)(const int* ltranl, const int* ltranr,
2188  const int* isgn, const int* n1, const int* n2,
2189  const double* tl, const int* ldtl,
2190  const double* tr, const int* ldtr,
2191  const double* b, const int* ldb,
2192  double* scale, double* x, const int* ldx,
2193  double* xnorm, int* info);
2194 /* DLASYF - compute a partial factorization of a real symmetric */
2195 /* matrix A using the Bunch-Kaufman diagonal pivoting method */
2196 La_extern void
2197 F77_NAME(dlasyf)(const char* uplo, const int* n,
2198  const int* nb, const int* kb,
2199  double* a, const int* lda, int* ipiv,
2200  double* w, const int* ldw, int* info);
2201 /* DLATBS - solve one of the triangular systems A *x = s*b or */
2202 /* A'*x = s*b with scaling to prevent overflow, where A is an */
2203 /* upper or lower triangular band matrix */
2204 La_extern void
2205 F77_NAME(dlatbs)(const char* uplo, const char* trans,
2206  const char* diag, const char* normin,
2207  const int* n, const int* kd,
2208  const double* ab, const int* ldab,
2209  double* x, double* scale, double* cnorm, int* info);
2210 /* DLATPS - solve one of the triangular systems A *x = s*b or */
2211 /* A'*x = s*b with scaling to prevent overflow, where A is an */
2212 /* upper or lower triangular matrix stored in packed form */
2213 La_extern void
2214 F77_NAME(dlatps)(const char* uplo, const char* trans,
2215  const char* diag, const char* normin,
2216  const int* n, const double* ap,
2217  double* x, double* scale, double* cnorm, int* info);
2218 /* DLATRD - reduce NB rows and columns of a real symmetric matrix */
2219 /* A to symmetric tridiagonal form by an orthogonal similarity */
2220 /* transformation Q' * A * Q, and returns the matrices V and W */
2221 /* which are needed to apply the transformation to the unreduced */
2222 /* part of A */
2223 La_extern void
2224 F77_NAME(dlatrd)(const char* uplo, const int* n, const int* nb,
2225  double* a, const int* lda, double* e, double* tau,
2226  double* w, const int* ldw);
2227 /* DLATRS - solve one of the triangular systems A *x = s*b or */
2228 /* A'*x = s*b with scaling to prevent overflow */
2229 La_extern void
2230 F77_NAME(dlatrs)(const char* uplo, const char* trans,
2231  const char* diag, const char* normin,
2232  const int* n, const double* a, const int* lda,
2233  double* x, double* scale, double* cnorm, int* info);
2234 /* DLATZM - apply a Householder matrix generated by DTZRQF to a */
2235 /* matrix */
2236 La_extern void
2237 F77_NAME(dlatzm)(const char* side, const int* m, const int* n,
2238  const double* v, const int* incv,
2239  const double* tau, double* c1, double* c2,
2240  const int* ldc, double* work);
2241 /* DLAUU2 - compute the product U * U' or L' * const int* l, where the */
2242 /* triangular factor U or L is stored in the upper or lower */
2243 /* triangular part of the array A */
2244 La_extern void
2245 F77_NAME(dlauu2)(const char* uplo, const int* n,
2246  double* a, const int* lda, int* info);
2247 /* DLAUUM - compute the product U * U' or L' * L, where the */
2248 /* triangular factor U or L is stored in the upper or lower */
2249 /* triangular part of the array A */
2250 La_extern void
2251 F77_NAME(dlauum)(const char* uplo, const int* n,
2252  double* a, const int* lda, int* info);
2253 
2254 
2255 /* ======================================================================== */
2256 
2257 /* Selected Double Complex Lapack Routines
2258  ========
2259  */
2260 
2261 /* IZMAX1 finds the index of the element whose real part has maximum
2262  * absolute value. */
2263 La_extern int
2264 F77_NAME(izmax1)(const int *n, Rcomplex *cx, const int *incx);
2265 
2266 
2267 /* ZGECON estimates the reciprocal of the condition number of a general
2268  * complex matrix A, in either the 1-norm or the infinity-norm, using
2269  * the LU factorization computed by ZGETRF.
2270  */
2271 La_extern void
2272 F77_NAME(zgecon)(const char *norm, const int *n,
2273  const Rcomplex *a, const int *lda,
2274  const double *anorm, double *rcond,
2275  Rcomplex *work, double *rwork, int *info);
2276 
2277 /* ZGESV computes the solution to a complex system of linear equations */
2278 La_extern void
2279 F77_NAME(zgesv)(const int *n, const int *nrhs, Rcomplex *a,
2280  const int *lda, int *ipiv, Rcomplex *b,
2281  const int *ldb, int *info);
2282 
2283 /* ZGEQP3 computes a QR factorization with column pivoting */
2284 La_extern void
2285 F77_NAME(zgeqp3)(const int *m, const int *n,
2286  Rcomplex *a, const int *lda,
2287  int *jpvt, Rcomplex *tau,
2288  Rcomplex *work, const int *lwork,
2289  double *rwork, int *info);
2290 
2291 /* ZUNMQR applies Q or Q**H from the Left or Right */
2292 La_extern void
2293 F77_NAME(zunmqr)(const char *side, const char *trans,
2294  const int *m, const int *n, const int *k,
2295  Rcomplex *a, const int *lda,
2296  Rcomplex *tau,
2297  Rcomplex *c, const int *ldc,
2298  Rcomplex *work, const int *lwork, int *info);
2299 
2300 /* ZTRTRS solves triangular systems */
2301 La_extern void
2302 F77_NAME(ztrtrs)(const char *uplo, const char *trans, const char *diag,
2303  const int *n, const int *nrhs,
2304  Rcomplex *a, const int *lda,
2305  Rcomplex *b, const int *ldb, int *info);
2306 /* ZGESVD - compute the singular value decomposition (SVD); of a */
2307 /* real M-by-N matrix A, optionally computing the left and/or */
2308 /* right singular vectors */
2309 La_extern void
2310 F77_NAME(zgesvd)(const char *jobu, const char *jobvt,
2311  const int *m, const int *n,
2312  Rcomplex *a, const int *lda, double *s,
2313  Rcomplex *u, const int *ldu,
2314  Rcomplex *vt, const int *ldvt,
2315  Rcomplex *work, const int *lwork, double *rwork,
2316  int *info);
2317 
2318 /* ZGHEEV - compute all eigenvalues and, optionally, eigenvectors */
2319 /* of a Hermitian matrix A */
2320 La_extern void
2321 F77_NAME(zheev)(const char *jobz, const char *uplo,
2322  const int *n, Rcomplex *a, const int *lda,
2323  double *w, Rcomplex *work, const int *lwork,
2324  double *rwork, int *info);
2325 
2326 /* ZGGEEV - compute all eigenvalues and, optionally, eigenvectors */
2327 /* of a complex non-symmetric matrix A */
2328 La_extern void
2329 F77_NAME(zgeev)(const char *jobvl, const char *jobvr,
2330  const int *n, Rcomplex *a, const int *lda,
2331  Rcomplex *wr, Rcomplex *vl, const int *ldvl,
2332  Rcomplex *vr, const int *ldvr,
2333  Rcomplex *work, const int *lwork,
2334  double *rwork, int *info);
2335 
2336 
2337 /* NOTE: The following entry points were traditionally in this file,
2338  but are not provided by R's libRlapack */
2339 
2340 /* DZSUM1 - take the sum of the absolute values of a complex */
2341 /* vector and returns a double precision result */
2342 La_extern double
2343 F77_NAME(dzsum1)(const int *n, Rcomplex *CX, const int *incx);
2344 
2345 /* ZLACN2 estimates the 1-norm of a square, complex matrix A.
2346  * Reverse communication is used for evaluating matrix-vector products.
2347 */
2348 La_extern void
2349 F77_NAME(zlacn2)(const int *n, Rcomplex *v, Rcomplex *x,
2350  double *est, int *kase, int *isave);
2351 
2352 /* ZLANTR - return the value of the one norm, or the Frobenius norm, */
2353 /* or the infinity norm, or the element of largest absolute value of */
2354 /* a trapezoidal or triangular matrix A */
2355 La_extern double
2356 F77_NAME(zlantr)(const char *norm, const char *uplo, const char *diag,
2357  const int *m, const int *n, Rcomplex *a,
2358  const int *lda, double *work);
2359 
2360 /* ======================================================================== */
2361 
2362 /* Other double precision and double complex Lapack routines
2363  provided by libRlapack.
2364 
2365  These are extracted from the CLAPACK headers.
2366 */
2367 
2368 La_extern void
2369 F77_NAME(dbdsdc)(char *uplo, char *compq, int *n, double *
2370  d, double *e, double *u, int *ldu, double *vt,
2371  int *ldvt, double *q, int *iq, double *work, int * iwork, int *info);
2372 
2373 La_extern void
2374 F77_NAME(dgegs)(char *jobvsl, char *jobvsr, int *n,
2375  double *a, int *lda, double *b, int *ldb, double *
2376  alphar, double *alphai, double *beta, double *vsl,
2377  int *ldvsl, double *vsr, int *ldvsr, double *work,
2378  int *lwork, int *info);
2379 
2380 La_extern void
2381 F77_NAME(dgelsd)(int *m, int *n, int *nrhs,
2382  double *a, int *lda, double *b, int *ldb, double *
2383  s, double *rcond, int *rank, double *work, int *lwork,
2384  int *iwork, int *info);
2385 
2386 La_extern void
2387 F77_NAME(dgelsx)(int *m, int *n, int *nrhs,
2388  double *a, int *lda, double *b, int *ldb, int *
2389  jpvt, double *rcond, int *rank, double *work, int *
2390  info);
2391 
2392 La_extern void
2393 F77_NAME(dgesc2)(int *n, double *a, int *lda,
2394  double *rhs, int *ipiv, int *jpiv, double *scale);
2395 
2396 /* DGESDD - compute the singular value decomposition (SVD); of a */
2397 /* real M-by-N matrix A, optionally computing the left and/or */
2398 /* right singular vectors. If singular vectors are desired, it uses a */
2399 /* divide-and-conquer algorithm. */
2400 La_extern void
2401 F77_NAME(dgesdd)(const char *jobz,
2402  const int *m, const int *n,
2403  double *a, const int *lda, double *s,
2404  double *u, const int *ldu,
2405  double *vt, const int *ldvt,
2406  double *work, const int *lwork, int *iwork, int *info);
2407 
2408 La_extern void
2409 F77_NAME(dgetc2)(int *n, double *a, int *lda, int
2410  *ipiv, int *jpiv, int *info);
2411 
2412 typedef int (*L_fp)();
2413 La_extern void
2414 F77_NAME(dggesx)(char *jobvsl, char *jobvsr, char *sort, L_fp
2415  delctg, char *sense, int *n, double *a, int *lda,
2416  double *b, int *ldb, int *sdim, double *alphar,
2417  double *alphai, double *beta, double *vsl, int *ldvsl,
2418  double *vsr, int *ldvsr, double *rconde, double *
2419  rcondv, double *work, int *lwork, int *iwork, int *
2420  liwork, int *bwork, int *info);
2421 
2422 La_extern void
2423 F77_NAME(dggev)(char *jobvl, char *jobvr, int *n, double *
2424  a, int *lda, double *b, int *ldb, double *alphar,
2425  double *alphai, double *beta, double *vl, int *ldvl,
2426  double *vr, int *ldvr, double *work, int *lwork,
2427  int *info);
2428 
2429 La_extern void
2430 F77_NAME(dggevx)(char *balanc, char *jobvl, char *jobvr, char *
2431  sense, int *n, double *a, int *lda, double *b,
2432  int *ldb, double *alphar, double *alphai, double *
2433  beta, double *vl, int *ldvl, double *vr, int *ldvr,
2434  int *ilo, int *ihi, double *lscale, double *rscale,
2435  double *abnrm, double *bbnrm, double *rconde, double *
2436  rcondv, double *work, int *lwork, int *iwork, int *
2437  bwork, int *info);
2438 
2439 La_extern void
2440 F77_NAME(dggsvp)(char *jobu, char *jobv, char *jobq, int *m,
2441  int *p, int *n, double *a, int *lda, double *b,
2442  int *ldb, double *tola, double *tolb, int *k, int
2443  *l, double *u, int *ldu, double *v, int *ldv,
2444  double *q, int *ldq, int *iwork, double *tau,
2445  double *work, int *info);
2446 
2447 La_extern void
2448 F77_NAME(dgtts2)(int *itrans, int *n, int *nrhs,
2449  double *dl, double *d, double *du, double *du2,
2450  int *ipiv, double *b, int *ldb);
2451 La_extern void
2452 F77_NAME(dlagv2)(double *a, int *lda, double *b, int *ldb, double *alphar,
2453  double *alphai, double * beta, double *csl, double *snl,
2454  double *csr, double * snr);
2455 
2456 La_extern void
2457 F77_NAME(dlals0)(int *icompq, int *nl, int *nr,
2458  int *sqre, int *nrhs, double *b, int *ldb, double
2459  *bx, int *ldbx, int *perm, int *givptr, int *givcol,
2460  int *ldgcol, double *givnum, int *ldgnum, double *
2461  poles, double *difl, double *difr, double *z, int *
2462  k, double *c, double *s, double *work, int *info);
2463 
2464 La_extern void
2465 F77_NAME(dlalsa)(int *icompq, int *smlsiz, int *n,
2466  int *nrhs, double *b, int *ldb, double *bx, int *
2467  ldbx, double *u, int *ldu, double *vt, int *k,
2468  double *difl, double *difr, double *z, double *
2469  poles, int *givptr, int *givcol, int *ldgcol, int *
2470  perm, double *givnum, double *c, double *s, double *
2471  work, int *iwork, int *info);
2472 
2473 La_extern void
2474 F77_NAME(dlalsd)(char *uplo, int *smlsiz, int *n, int
2475  *nrhs, double *d, double *e, double *b, int *ldb,
2476  double *rcond, int *rank, double *work, int *iwork,
2477  int *info);
2478 
2479 La_extern void
2480 F77_NAME(dlamc1)(int *beta, int *t, int *rnd, int
2481  *ieee1);
2482 
2483 La_extern void
2484 F77_NAME(dlamc2)(int *beta, int *t, int *rnd,
2485  double *eps, int *emin, double *rmin, int *emax,
2486  double *rmax);
2487 
2488 La_extern double
2489 F77_NAME(dlamc3)(double *a, double *b);
2490 
2491 La_extern void
2492 F77_NAME(dlamc4)(int *emin, double *start, int *base);
2493 
2494 La_extern void
2495 F77_NAME(dlamc5)(int *beta, int *p, int *emin,
2496  int *ieee, int *emax, double *rmax);
2497 
2498 La_extern void
2499 F77_NAME(dlaqp2)(int *m, int *n, int *offset,
2500  double *a, int *lda, int *jpvt, double *tau,
2501  double *vn1, double *vn2, double *work);
2502 
2503 La_extern void
2504 F77_NAME(dlaqps)(int *m, int *n, int *offset, int
2505  *nb, int *kb, double *a, int *lda, int *jpvt,
2506  double *tau, double *vn1, double *vn2, double *auxv,
2507  double *f, int *ldf);
2508 
2509 La_extern void
2510 F77_NAME(dlar1v)(int *n, int *b1, int *bn, double
2511  *sigma, double *d, double *l, double *ld, double *
2512  lld, double *gersch, double *z, double *ztz, double
2513  *mingma, int *r, int *isuppz, double *work);
2514 
2515 La_extern void
2516 F77_NAME(dlarrb)(int *n, double *d, double *l,
2517  double *ld, double *lld, int *ifirst, int *ilast,
2518  double *sigma, double *reltol, double *w, double *
2519  wgap, double *werr, double *work, int *iwork, int *
2520  info);
2521 
2522 La_extern void
2523 F77_NAME(dlarre)(int *n, double *d, double *e,
2524  double *tol, int *nsplit, int *isplit, int *m,
2525  double *w, double *woff, double *gersch, double *work,
2526  int *info);
2527 
2528 La_extern void
2529 F77_NAME(dlarrf)(int *n, double *d, double *l,
2530  double *ld, double *lld, int *ifirst, int *ilast,
2531  double *w, double *dplus, double *lplus, double *work,
2532  int *iwork, int *info);
2533 
2534 La_extern void
2535 F77_NAME(dlarrv)(int *n, double *d, double *l,
2536  int *isplit, int *m, double *w, int *iblock,
2537  double *gersch, double *tol, double *z, int *ldz,
2538  int *isuppz, double *work, int *iwork, int *info);
2539 
2540 La_extern void
2541 F77_NAME(dlarz)(char *side, int *m, int *n, int *l,
2542  double *v, int *incv, double *tau, double *c,
2543  int *ldc, double *work);
2544 
2545 La_extern void
2546 F77_NAME(dlarzb)(char *side, char *trans, char *direct, char *
2547  storev, int *m, int *n, int *k, int *l, double *v,
2548  int *ldv, double *t, int *ldt, double *c, int *
2549  ldc, double *work, int *ldwork);
2550 
2551 La_extern void
2552 F77_NAME(dlarzt)(char *direct, char *storev, int *n, int *
2553  k, double *v, int *ldv, double *tau, double *t,
2554  int *ldt);
2555 
2556 La_extern void
2557 F77_NAME(dlasd0)(int *n, int *sqre, double *d,
2558  double *e, double *u, int *ldu, double *vt, int *
2559  ldvt, int *smlsiz, int *iwork, double *work, int *
2560  info);
2561 
2562 La_extern void
2563 F77_NAME(dlasd1)(int *nl, int *nr, int *sqre,
2564  double *d, double *alpha, double *beta, double *u,
2565  int *ldu, double *vt, int *ldvt, int *idxq, int *
2566  iwork, double *work, int *info);
2567 
2568 La_extern void
2569 F77_NAME(dlasd2)(int *nl, int *nr, int *sqre, int
2570  *k, double *d, double *z, double *alpha, double *
2571  beta, double *u, int *ldu, double *vt, int *ldvt,
2572  double *dsigma, double *u2, int *ldu2, double *vt2,
2573  int *ldvt2, int *idxp, int *idx, int *idxc, int *
2574  idxq, int *coltyp, int *info);
2575 
2576 La_extern void
2577 F77_NAME(dlasd3)(int *nl, int *nr, int *sqre, int
2578  *k, double *d, double *q, int *ldq, double *dsigma,
2579  double *u, int *ldu, double *u2, int *ldu2,
2580  double *vt, int *ldvt, double *vt2, int *ldvt2,
2581  int *idxc, int *ctot, double *z, int *info);
2582 
2583 La_extern void
2584 F77_NAME(dlasd4)(int *n, int *i, double *d,
2585  double *z, double *delta, double *rho, double *
2586  sigma, double *work, int *info);
2587 
2588 La_extern void
2589 F77_NAME(dlasd5)(int *i, double *d, double *z,
2590  double *delta, double *rho, double *dsigma, double *
2591  work);
2592 
2593 La_extern void
2594 F77_NAME(dlasd6)(int *icompq, int *nl, int *nr,
2595  int *sqre, double *d, double *vf, double *vl,
2596  double *alpha, double *beta, int *idxq, int *perm,
2597  int *givptr, int *givcol, int *ldgcol, double *givnum,
2598  int *ldgnum, double *poles, double *difl, double *
2599  difr, double *z, int *k, double *c, double *s,
2600  double *work, int *iwork, int *info);
2601 
2602 La_extern void
2603 F77_NAME(dlasd7)(int *icompq, int *nl, int *nr,
2604  int *sqre, int *k, double *d, double *z,
2605  double *zw, double *vf, double *vfw, double *vl,
2606  double *vlw, double *alpha, double *beta, double *
2607  dsigma, int *idx, int *idxp, int *idxq, int *perm,
2608  int *givptr, int *givcol, int *ldgcol, double *givnum,
2609  int *ldgnum, double *c, double *s, int *info);
2610 
2611 La_extern void
2612 F77_NAME(dlasd8)(int *icompq, int *k, double *d,
2613  double *z, double *vf, double *vl, double *difl,
2614  double *difr, int *lddifr, double *dsigma, double *
2615  work, int *info);
2616 
2617 La_extern void
2618 F77_NAME(dlasd9)(int *icompq, int *ldu, int *k,
2619  double *d, double *z, double *vf, double *vl,
2620  double *difl, double *difr, double *dsigma, double *
2621  work, int *info);
2622 
2623 La_extern void
2624 F77_NAME(dlasda)(int *icompq, int *smlsiz, int *n,
2625  int *sqre, double *d, double *e, double *u, int
2626  *ldu, double *vt, int *k, double *difl, double *difr,
2627  double *z, double *poles, int *givptr, int *givcol,
2628  int *ldgcol, int *perm, double *givnum, double *c,
2629  double *s, double *work, int *iwork, int *info);
2630 
2631 La_extern void
2632 F77_NAME(dlasdq)(char *uplo, int *sqre, int *n, int *
2633  ncvt, int *nru, int *ncc, double *d, double *e,
2634  double *vt, int *ldvt, double *u, int *ldu,
2635  double *c, int *ldc, double *work, int *info);
2636 
2637 La_extern void
2638 F77_NAME(dlasdt)(int *n, int *lvl, int *nd, int *
2639  inode, int *ndiml, int *ndimr, int *msub);
2640 
2641 La_extern void
2642 F77_NAME(dlasq5)(int *i0, int *n0, double *z,
2643  int *pp, double *tau, double *dmin, double *dmin1,
2644  double *dmin2, double *dn, double *dnm1, double *dnm2,
2645  int *ieee);
2646 
2647 La_extern void
2648 F77_NAME(dlasq6)(int *i0, int *n0, double *z,
2649  int *pp, double *dmin, double *dmin1, double *dmin2,
2650  double *dn, double *dnm1, double *dnm2);
2651 
2652 La_extern void
2653 F77_NAME(dlatdf)(int *ijob, int *n, double *z,
2654  int *ldz, double *rhs, double *rdsum, double *rdscal,
2655  int *ipiv, int *jpiv);
2656 
2657 La_extern void
2658 F77_NAME(dlatrz)(int *m, int *n, int *l, double *
2659  a, int *lda, double *tau, double *work);
2660 
2661 La_extern void
2662 F77_NAME(dormr3)(char *side, char *trans, int *m, int *n,
2663  int *k, int *l, double *a, int *lda, double *tau,
2664  double *c, int *ldc, double *work, int *info);
2665 
2666 La_extern void
2667 F77_NAME(dormrz)(char *side, char *trans, int *m, int *n,
2668  int *k, int *l, double *a, int *lda, double *tau,
2669  double *c, int *ldc, double *work, int *lwork,
2670  int *info);
2671 
2672 La_extern void
2673 F77_NAME(dptts2)(int *n, int *nrhs, double *d,
2674  double *e, double *b, int *ldb);
2675 
2676 La_extern void
2677 F77_NAME(dsbgvd)(char *jobz, char *uplo, int *n, int *ka,
2678  int *kb, double *ab, int *ldab, double *bb, int *
2679  ldbb, double *w, double *z, int *ldz, double *work,
2680  int *lwork, int *iwork, int *liwork, int *info);
2681 
2682 La_extern void
2683 F77_NAME(dsbgvx)(char *jobz, char *range, char *uplo, int *n,
2684  int *ka, int *kb, double *ab, int *ldab, double *
2685  bb, int *ldbb, double *q, int *ldq, double *vl,
2686  double *vu, int *il, int *iu, double *abstol, int
2687  *m, double *w, double *z, int *ldz, double *work,
2688  int *iwork, int *ifail, int *info);
2689 
2690 La_extern void
2691 F77_NAME(dspgvd)(int *itype, char *jobz, char *uplo, int *
2692  n, double *ap, double *bp, double *w, double *z,
2693  int *ldz, double *work, int *lwork, int *iwork,
2694  int *liwork, int *info);
2695 
2696 La_extern void
2697 F77_NAME(dspgvx)(int *itype, char *jobz, char *range, char *
2698  uplo, int *n, double *ap, double *bp, double *vl,
2699  double *vu, int *il, int *iu, double *abstol, int
2700  *m, double *w, double *z, int *ldz, double *work,
2701  int *iwork, int *ifail, int *info);
2702 
2703 La_extern void
2704 F77_NAME(dstegr)(char *jobz, char *range, int *n, double *
2705  d, double *e, double *vl, double *vu, int *il,
2706  int *iu, double *abstol, int *m, double *w,
2707  double *z, int *ldz, int *isuppz, double *work,
2708  int *lwork, int *iwork, int *liwork, int *info);
2709 
2710 La_extern void
2711 F77_NAME(dstevr)(char *jobz, char *range, int *n, double *
2712  d, double *e, double *vl, double *vu, int *il,
2713  int *iu, double *abstol, int *m, double *w,
2714  double *z, int *ldz, int *isuppz, double *work,
2715  int *lwork, int *iwork, int *liwork, int *info);
2716 
2717 La_extern void
2718 F77_NAME(dsygvd)(int *itype, char *jobz, char *uplo, int *
2719  n, double *a, int *lda, double *b, int *ldb,
2720  double *w, double *work, int *lwork, int *iwork,
2721  int *liwork, int *info);
2722 
2723 La_extern void
2724 F77_NAME(dsygvx)(int *itype, char *jobz, char *range, char *
2725  uplo, int *n, double *a, int *lda, double *b, int
2726  *ldb, double *vl, double *vu, int *il, int *iu,
2727  double *abstol, int *m, double *w, double *z,
2728  int *ldz, double *work, int *lwork, int *iwork,
2729  int *ifail, int *info);
2730 
2731 La_extern void
2732 F77_NAME(dtgex2)(int *wantq, int *wantz, int *n,
2733  double *a, int *lda, double *b, int *ldb, double *
2734  q, int *ldq, double *z, int *ldz, int *j1, int *
2735  n1, int *n2, double *work, int *lwork, int *info);
2736 
2737 La_extern void
2738 F77_NAME(dtgexc)(int *wantq, int *wantz, int *n,
2739  double *a, int *lda, double *b, int *ldb, double *
2740  q, int *ldq, double *z, int *ldz, int *ifst,
2741  int *ilst, double *work, int *lwork, int *info);
2742 
2743 La_extern void
2744 F77_NAME(dtgsen)(int *ijob, int *wantq, int *wantz,
2745  int *select, int *n, double *a, int *lda, double *
2746  b, int *ldb, double *alphar, double *alphai, double *
2747  beta, double *q, int *ldq, double *z, int *ldz,
2748  int *m, double *pl, double *pr, double *dif,
2749  double *work, int *lwork, int *iwork, int *liwork,
2750  int *info);
2751 
2752 La_extern void
2753 F77_NAME(dtgsna)(char *job, char *howmny, int *select,
2754  int *n, double *a, int *lda, double *b, int *ldb,
2755  double *vl, int *ldvl, double *vr, int *ldvr,
2756  double *s, double *dif, int *mm, int *m, double *
2757  work, int *lwork, int *iwork, int *info);
2758 
2759 La_extern void
2760 F77_NAME(dtgsy2)(char *trans, int *ijob, int *m, int *
2761  n, double *a, int *lda, double *b, int *ldb,
2762  double *c, int *ldc, double *d, int *ldd,
2763  double *e, int *lde, double *f, int *ldf, double *
2764  scale, double *rdsum, double *rdscal, int *iwork, int
2765  *pq, int *info);
2766 
2767 La_extern void
2768 F77_NAME(dtgsyl)(char *trans, int *ijob, int *m, int *
2769  n, double *a, int *lda, double *b, int *ldb,
2770  double *c, int *ldc, double *d, int *ldd,
2771  double *e, int *lde, double *f, int *ldf, double *
2772  scale, double *dif, double *work, int *lwork, int *
2773  iwork, int *info);
2774 
2775 La_extern void
2776 F77_NAME(dtzrzf)(int *m, int *n, double *a, int *
2777  lda, double *tau, double *work, int *lwork, int *info);
2778 
2779 
2780 La_extern int
2781 F77_NAME(lsame)(char *ca, char *cb);
2782 
2783 La_extern void
2784 F77_NAME(zbdsqr)(char *uplo, int *n, int *ncvt, int *
2785  nru, int *ncc, double *d, double *e, Rcomplex *vt,
2786  int *ldvt, Rcomplex *u, int *ldu, Rcomplex *c,
2787  int *ldc, double *rwork, int *info);
2788 
2789 La_extern void
2790 F77_NAME(zdrot)(int *n, Rcomplex *cx, int *incx,
2791  Rcomplex *cy, int *incy, double *c, double *s);
2792 
2793 La_extern void
2794 F77_NAME(zgebak)(char *job, char *side, int *n, int *ilo,
2795  int *ihi, double *scale, int *m, Rcomplex *v,
2796  int *ldv, int *info);
2797 
2798 La_extern void
2799 F77_NAME(zgebal)(char *job, int *n, Rcomplex *a, int
2800  *lda, int *ilo, int *ihi, double *scale, int *info);
2801 
2802 La_extern void
2803 F77_NAME(zgebd2)(int *m, int *n, Rcomplex *a,
2804  int *lda, double *d, double *e, Rcomplex *tauq,
2805  Rcomplex *taup, Rcomplex *work, int *info);
2806 
2807 La_extern void
2808 F77_NAME(zgebrd)(int *m, int *n, Rcomplex *a,
2809  int *lda, double *d, double *e, Rcomplex *tauq,
2810  Rcomplex *taup, Rcomplex *work, int *lwork, int *
2811  info);
2812 La_extern void
2813 F77_NAME(zgehd2)(int *n, int *ilo, int *ihi,
2814  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
2815  work, int *info);
2816 
2817 La_extern void
2818 F77_NAME(zgehrd)(int *n, int *ilo, int *ihi,
2819  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
2820  work, int *lwork, int *info);
2821 
2822 La_extern void
2823 F77_NAME(zgelq2)(int *m, int *n, Rcomplex *a,
2824  int *lda, Rcomplex *tau, Rcomplex *work, int *info);
2825 
2826 La_extern void
2827 F77_NAME(zgelqf)(int *m, int *n, Rcomplex *a,
2828  int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
2829  int *info);
2830 
2831 La_extern void
2832 F77_NAME(zgeqr2)(int *m, int *n, Rcomplex *a,
2833  int *lda, Rcomplex *tau, Rcomplex *work, int *info);
2834 
2835 La_extern void
2836 F77_NAME(zgeqrf)(int *m, int *n, Rcomplex *a,
2837  int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
2838  int *info);
2839 
2840 La_extern void
2841 F77_NAME(zgetf2)(int *m, int *n, Rcomplex *a,
2842  int *lda, int *ipiv, int *info);
2843 
2844 La_extern void
2845 F77_NAME(zgetrf)(int *m, int *n, Rcomplex *a,
2846  int *lda, int *ipiv, int *info);
2847 
2848 La_extern void
2849 F77_NAME(zgetrs)(char *trans, int *n, int *nrhs,
2850  Rcomplex *a, int *lda, int *ipiv, Rcomplex *b,
2851  int *ldb, int *info);
2852 
2853 
2854 La_extern void
2855 F77_NAME(zhetd2)(char *uplo, int *n, Rcomplex *a, int *lda, double *d,
2856  double *e, Rcomplex *tau, int *info);
2857 
2858 La_extern void
2859 F77_NAME(zhetrd)(char *uplo, int *n, Rcomplex *a,
2860  int *lda, double *d, double *e, Rcomplex *tau,
2861  Rcomplex *work, int *lwork, int *info);
2862 
2863 La_extern void
2864 F77_NAME(zhseqr)(char *job, char *compz, int *n, int *ilo,
2865  int *ihi, Rcomplex *h, int *ldh, Rcomplex *w,
2866  Rcomplex *z, int *ldz, Rcomplex *work, int *lwork,
2867  int *info);
2868 
2869 La_extern void
2870 F77_NAME(zlabrd)(int *m, int *n, int *nb,
2871  Rcomplex *a, int *lda, double *d, double *e,
2872  Rcomplex *tauq, Rcomplex *taup, Rcomplex *x, int *
2873  ldx, Rcomplex *y, int *ldy);
2874 
2875 La_extern void
2876 F77_NAME(zlacgv)(int *n, Rcomplex *x, int *incx);
2877 
2878 La_extern void
2879 F77_NAME(zlacpy)(char *uplo, int *m, int *n,
2880  Rcomplex *a, int *lda, Rcomplex *b, int *ldb);
2881 
2882 La_extern void
2883 F77_NAME(zlahqr)(int *wantt, int *wantz, int *n,
2884  int *ilo, int *ihi, Rcomplex *h, int *ldh,
2885  Rcomplex *w, int *iloz, int *ihiz, Rcomplex *z,
2886  int *ldz, int *info);
2887 
2888 La_extern void
2889 F77_NAME(zlahrd)(int *n, int *k, int *nb,
2890  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *t,
2891  int *ldt, Rcomplex *y, int *ldy);
2892 
2893 La_extern double
2894 F77_NAME(zlange)(char *norm, int *m, int *n, Rcomplex *a, int *lda,
2895  double *work);
2896 
2897 La_extern double
2898 F77_NAME(zlanhe)(char *norm, char *uplo, int *n, Rcomplex *a,
2899  int *lda, double *work);
2900 
2901 La_extern double
2902 F77_NAME(zlanhs)(char *norm, int *n, Rcomplex *a, int *lda, double *work);
2903 
2904 
2905 La_extern void
2906 F77_NAME(zlaqp2)(int *m, int *n, int *offset,
2907  Rcomplex *a, int *lda, int *jpvt, Rcomplex *tau,
2908  double *vn1, double *vn2, Rcomplex *work);
2909 
2910 La_extern void
2911 F77_NAME(zlaqps)(int *m, int *n, int *offset, int
2912  *nb, int *kb, Rcomplex *a, int *lda, int *jpvt,
2913  Rcomplex *tau, double *vn1, double *vn2, Rcomplex *
2914  auxv, Rcomplex *f, int *ldf);
2915 
2916 La_extern void
2917 F77_NAME(zlarf)(char *side, int *m, int *n, Rcomplex
2918  *v, int *incv, Rcomplex *tau, Rcomplex *c, int *
2919  ldc, Rcomplex *work);
2920 
2921 La_extern void
2922 F77_NAME(zlarfb)(char *side, char *trans, char *direct, char *
2923  storev, int *m, int *n, int *k, Rcomplex *v, int
2924  *ldv, Rcomplex *t, int *ldt, Rcomplex *c, int *
2925  ldc, Rcomplex *work, int *ldwork);
2926 
2927 La_extern void
2928 F77_NAME(zlarfg)(int *n, Rcomplex *alpha, Rcomplex *
2929  x, int *incx, Rcomplex *tau);
2930 
2931 La_extern void
2932 F77_NAME(zlarft)(char *direct, char *storev, int *n, int *
2933  k, Rcomplex *v, int *ldv, Rcomplex *tau, Rcomplex *
2934  t, int *ldt);
2935 
2936 La_extern void
2937 F77_NAME(zlarfx)(char *side, int *m, int *n,
2938  Rcomplex *v, Rcomplex *tau, Rcomplex *c, int *
2939  ldc, Rcomplex *work);
2940 
2941 La_extern void
2942 F77_NAME(zlascl)(char *type, int *kl, int *ku,
2943  double *cfrom, double *cto, int *m, int *n,
2944  Rcomplex *a, int *lda, int *info);
2945 
2946 La_extern void
2947 F77_NAME(zlaset)(char *uplo, int *m, int *n,
2948  Rcomplex *alpha, Rcomplex *beta, Rcomplex *a, int *
2949  lda);
2950 
2951 La_extern void
2952 F77_NAME(zlasr)(char *side, char *pivot, char *direct, int *m,
2953  int *n, double *c, double *s, Rcomplex *a,
2954  int *lda);
2955 
2956 La_extern void
2957 F77_NAME(zlassq)(int *n, Rcomplex *x, int *incx,
2958  double *scale, double *sumsq);
2959 
2960 La_extern void
2961 F77_NAME(zlaswp)(int *n, Rcomplex *a, int *lda,
2962  int *k1, int *k2, int *ipiv, int *incx);
2963 
2964 La_extern void
2965 F77_NAME(zlatrd)(char *uplo, int *n, int *nb,
2966  Rcomplex *a, int *lda, double *e, Rcomplex *tau,
2967  Rcomplex *w, int *ldw);
2968 
2969 La_extern void
2970 F77_NAME(zlatrs)(char *uplo, char *trans, char *diag, char *
2971  normin, int *n, Rcomplex *a, int *lda, Rcomplex *x,
2972  double *scale, double *cnorm, int *info);
2973 
2974 La_extern void
2975 F77_NAME(zsteqr)(char *compz, int *n, double *d,
2976  double *e, Rcomplex *z, int *ldz, double *work,
2977  int *info);
2978 
2979 /* ZTRCON estimates the reciprocal of the condition number of a
2980  * triangular matrix A, in either the 1-norm or the infinity-norm.
2981  */
2982 La_extern void
2983 F77_NAME(ztrcon)(const char *norm, const char *uplo, const char *diag,
2984  const int *n, const Rcomplex *a, const int *lda,
2985  double *rcond, Rcomplex *work, double *rwork, int *info);
2986 
2987 La_extern void
2988 F77_NAME(ztrevc)(char *side, char *howmny, int *select,
2989  int *n, Rcomplex *t, int *ldt, Rcomplex *vl,
2990  int *ldvl, Rcomplex *vr, int *ldvr, int *mm, int
2991  *m, Rcomplex *work, double *rwork, int *info);
2992 
2993 La_extern void
2994 F77_NAME(zung2l)(int *m, int *n, int *k,
2995  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
2996  work, int *info);
2997 
2998 La_extern void
2999 F77_NAME(zung2r)(int *m, int *n, int *k,
3000  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3001  work, int *info);
3002 
3003 La_extern void
3004 F77_NAME(zungbr)(char *vect, int *m, int *n, int *k,
3005  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3006  work, int *lwork, int *info);
3007 
3008 La_extern void
3009 F77_NAME(zunghr)(int *n, int *ilo, int *ihi,
3010  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3011  work, int *lwork, int *info);
3012 
3013 La_extern void
3014 F77_NAME(zungl2)(int *m, int *n, int *k,
3015  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3016  work, int *info);
3017 
3018 La_extern void
3019 F77_NAME(zunglq)(int *m, int *n, int *k,
3020  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3021  work, int *lwork, int *info);
3022 
3023 La_extern void
3024 F77_NAME(zungql)(int *m, int *n, int *k,
3025  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3026  work, int *lwork, int *info);
3027 
3028 La_extern void
3029 F77_NAME(zungqr)(int *m, int *n, int *k,
3030  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3031  work, int *lwork, int *info);
3032 
3033 La_extern void
3034 F77_NAME(zungr2)(int *m, int *n, int *k,
3035  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3036  work, int *info);
3037 
3038 La_extern void
3039 F77_NAME(zungrq)(int *m, int *n, int *k,
3040  Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3041  work, int *lwork, int *info);
3042 
3043 La_extern void
3044 F77_NAME(zungtr)(char *uplo, int *n, Rcomplex *a,
3045  int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
3046  int *info);
3047 
3048 La_extern void
3049 F77_NAME(zunm2r)(char *side, char *trans, int *m, int *n,
3050  int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3051  Rcomplex *c, int *ldc, Rcomplex *work, int *info);
3052 
3053 La_extern void
3054 F77_NAME(zunmbr)(char *vect, char *side, char *trans, int *m,
3055  int *n, int *k, Rcomplex *a, int *lda, Rcomplex
3056  *tau, Rcomplex *c, int *ldc, Rcomplex *work, int *
3057  lwork, int *info);
3058 
3059 La_extern void
3060 F77_NAME(zunml2)(char *side, char *trans, int *m, int *n,
3061  int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3062  Rcomplex *c, int *ldc, Rcomplex *work, int *info);
3063 
3064 La_extern void
3065 F77_NAME(zunmlq)(char *side, char *trans, int *m, int *n,
3066  int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3067  Rcomplex *c, int *ldc, Rcomplex *work, int *lwork,
3068  int *info);
3069 
3070 #ifdef __cplusplus
3071 }
3072 #endif
3073 
3074 #endif /* R_LAPACK_H */