Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / include / R_ext / Lapack.h @ 2486

History | View | Annotate | Download (120.5 kB)

1
/*
2
 *  R : A Computer Language for Statistical Data Analysis
3
 *  Copyright (C) 2003-14 The R Core Team.
4
 *  Copyright (C) 2008   The R Foundation
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU Lesser General Public License as published by
8
 *  the Free Software Foundation; either version 2.1 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU Lesser General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU Lesser General Public License
17
 *  along with this program; if not, a copy is available at
18
 *  http://www.r-project.org/Licenses/
19
 */
20

    
21
/*
22
   C declarations of LAPACK Fortran subroutines included in R.
23
   Just those used (currently or previously) by C routines in R itself.
24

25
   Part of the API.
26

27
   R packages that use these should have PKG_LIBS in src/Makevars include 
28
   $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
29
 */
30

    
31

    
32
#ifndef R_LAPACK_H
33
#define R_LAPACK_H
34

    
35
#include <R_ext/RS.h>                /* for F77_... */
36
#include <R_ext/Complex.h>        /* for Rcomplex */
37
#include <R_ext/BLAS.h>
38

    
39
/* The LAPACK version: might change after installation with
40
   external LAPACK
41
*/
42
extern void F77_NAME(ilaver)(int *major, int *minor, int *patch);
43

    
44

    
45
/*
46
  LAPACK function names are [dz]<name>(), where d denotes the real
47
  version of the function, z the complex version.  (Only
48
  double-precision versions are used in R.)
49
*/
50

    
51
#ifdef        __cplusplus
52
extern "C" {
53
#endif
54

    
55
// Never defined by R itself.
56
#ifndef La_extern
57
#define La_extern extern
58
#endif
59

    
60
// Utilities for Lapack-using packages :
61
// ------------------------------------
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
/* Selected Double Precision Lapack Routines
73
   ========
74
 */
75

    
76
//* Double precision BiDiagonal and DIagonal matrices  -> DBD & DDI
77

    
78
/* DBDSQR - compute the singular value decomposition (SVD) of a real */
79
/* N-by-N (upper or lower) bidiagonal matrix B */
80
La_extern void
81
F77_NAME(dbdsqr)(const char* uplo, const int* n, const int* ncvt,
82
                 const int* nru, const int* ncc, double* d, double* e,
83
                 double* vt, const int* ldvt, double* u, const int* ldu,
84
                 double* c, const int* ldc, double* work, int* info);
85
/* DDISNA - compute the reciprocal condition numbers for the */
86
/* eigenvectors of a real symmetric or complex Hermitian matrix or */
87
/* for the left or right singular vectors of a general m-by-n */
88
/* matrix */
89
La_extern void
90
F77_NAME(ddisna)(const char* job, const int* m, const int* n,
91
                 double* d, double* sep, int* info);
92

    
93

    
94
//* Double precision General Banded matrices -> DGB
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

    
170
//* Double precision GEneral matrices -> DGE
171

    
172
/* DGEBAK - form the right or left eigenvectors of a real general */
173
/* matrix by backward transformation on the computed eigenvectors */
174
/* of the balanced matrix output by DGEBAL  */
175
La_extern void
176
F77_NAME(dgebak)(const char* job, const char* side, const int* n,
177
                 const int* ilo, const int* ihi, double* scale,
178
                 const int* m, double* v, const int* ldv, int* info);
179
/* DGEBAL - balance a general real matrix A */
180
La_extern void
181
F77_NAME(dgebal)(const char* job, const int* n, double* a, const int* lda,
182
                  int* ilo, int* ihi, double* scale, int* info);
183
/* DGEBD2 - reduce a real general m by n matrix A to upper or */
184
/* lower bidiagonal form B by an orthogonal transformation */
185
La_extern void
186
F77_NAME(dgebd2)(const int* m, const int* n, double* a, const int* lda,
187
                 double* d, double* e, double* tauq, double* taup,
188
                 double* work, int* info);
189
/* DGEBRD - reduce a general real M-by-N matrix A to upper or */
190
/* lower bidiagonal form B by an orthogonal transformation */
191
La_extern void
192
F77_NAME(dgebrd)(const int* m, const int* n, double* a, const int* lda,
193
                 double* d, double* e, double* tauq, double* taup,
194
                 double* work, const int* lwork, int* info);
195
/* DGECON - estimate the reciprocal of the condition number of a */
196
/* general real matrix A, in either the 1-norm or the */
197
/* infinity-norm, using the LU factorization computed by DGETRF */
198
La_extern void
199
F77_NAME(dgecon)(const char* norm, const int* n,
200
                 const double* a, const int* lda,
201
                 const double* anorm, double* rcond,
202
                 double* work, int* iwork, int* info);
203
/* DGEEQU - compute row and column scalings intended to equilibrate */
204
/* an M-by-N matrix A and reduce its condition number */
205
La_extern void
206
F77_NAME(dgeequ)(const int* m, const int* n, double* a, const int* lda,
207
                 double* r, double* c, double* rowcnd, double* colcnd,
208
                 double* amax, int* info);
209
/* DGEES - compute for an N-by-N real nonsymmetric matrix A, the */
210
/* eigenvalues, the real Schur form T, and, optionally, the matrix */
211
/* of Schur vectors Z */
212
La_extern void
213
F77_NAME(dgees)(const char* jobvs, const char* sort,
214
                int (*select)(const double*, const double*),
215
                const int* n, double* a, const int* lda,
216
                int* sdim, double* wr, double* wi,
217
                double* vs, const int* ldvs,
218
                double* work, const int* lwork, int* bwork, int* info);
219
/* DGEESX - compute for an N-by-N real nonsymmetric matrix A, the */
220
/* eigenvalues, the real Schur form T, and, optionally, the matrix */
221
/* of Schur vectors Z */
222
La_extern void
223
F77_NAME(dgeesx)(const char* jobvs, const char* sort,
224
                 int (*select)(const double*, const double*),
225
                 const char* sense, const int* n, double* a,
226
                 const int* lda, int* sdim, double* wr, double* wi,
227
                 double* vs, const int* ldvs, double* rconde,
228
                 double* rcondv, double* work, const int* lwork,
229
                 int* iwork, const int* liwork, int* bwork, int* info);
230
/* DGEEV - compute for an N-by-N real nonsymmetric matrix A, the */
231
/* eigenvalues and, optionally, the left and/or right eigenvectors */
232
La_extern void
233
F77_NAME(dgeev)(const char* jobvl, const char* jobvr,
234
                const int* n, double* a, const int* lda,
235
                double* wr, double* wi, double* vl, const int* ldvl,
236
                double* vr, const int* ldvr,
237
                double* work, const int* lwork, int* info);
238
/* DGEEVX - compute for an N-by-N real nonsymmetric matrix A, the */
239
/* eigenvalues and, optionally, the left and/or right eigenvectors */
240
La_extern void
241
F77_NAME(dgeevx)(const char* balanc, const char* jobvl, const char* jobvr,
242
                 const char* sense, const int* n, double* a, const int* lda,
243
                 double* wr, double* wi, double* vl, const int* ldvl,
244
                 double* vr, const int* ldvr, int* ilo, int* ihi,
245
                 double* scale, double* abnrm, double* rconde, double* rcondv,
246
                 double* work, const int* lwork, int* iwork, int* info);
247
/* DGEGV - compute for a pair of n-by-n real nonsymmetric */
248
/* matrices A and B, the generalized eigenvalues (alphar +/- */
249
/* alphai*i, beta);, and optionally, the left and/or right */
250
/* generalized eigenvectors (VL and VR); */
251
La_extern void
252
F77_NAME(dgegv)(const char* jobvl, const char* jobvr,
253
                const int* n, double* a, const int* lda,
254
                double* b, const int* ldb,
255
                double* alphar, double* alphai,
256
                const double* beta, double* vl, const int* ldvl,
257
                double* vr, const int* ldvr,
258
                double* work, const int* lwork, int* info);
259
/* DGEHD2 - reduce a real general matrix A to upper Hessenberg */
260
/* form H by an orthogonal similarity transformation */
261
La_extern void
262
F77_NAME(dgehd2)(const int* n, const int* ilo, const int* ihi,
263
                 double* a, const int* lda, double* tau,
264
                 double* work, int* info);
265
/* DGEHRD - reduce a real general matrix A to upper Hessenberg */
266
/* form H by an orthogonal similarity transformation */
267
La_extern void
268
F77_NAME(dgehrd)(const int* n, const int* ilo, const int* ihi,
269
                 double* a, const int* lda, double* tau,
270
                 double* work, const int* lwork, int* info);
271
/* DGELQ2 - compute an LQ factorization of a real m by n matrix A */
272
La_extern void
273
F77_NAME(dgelq2)(const int* m, const int* n,
274
                 double* a, const int* lda, double* tau,
275
                 double* work, int* info);
276
/* DGELQF - compute an LQ factorization of a real M-by-N matrix A */
277
La_extern void
278
F77_NAME(dgelqf)(const int* m, const int* n,
279
                 double* a, const int* lda, double* tau,
280
                 double* work, const int* lwork, int* info);
281
/* DGELS - solve overdetermined or underdetermined real linear */
282
/* systems involving an M-by-N matrix A, or its transpose, using a */
283
/* QR or LQ factorization of A */
284
La_extern void
285
F77_NAME(dgels)(const char* trans, const int* m, const int* n,
286
                const int* nrhs, double* a, const int* lda,
287
                double* b, const int* ldb,
288
                double* work, const int* lwork, int* info);
289
/* DGELSS - compute the minimum norm solution to a real linear */
290
/* least squares problem */
291
La_extern void
292
F77_NAME(dgelss)(const int* m, const int* n, const int* nrhs,
293
                 double* a, const int* lda, double* b, const int* ldb,
294
                 double* s, double* rcond, int* rank,
295
                 double* work, const int* lwork, int* info);
296
/* DGELSY - compute the minimum-norm solution to a real linear */
297
/* least squares problem */
298
La_extern void
299
F77_NAME(dgelsy)(const int* m, const int* n, const int* nrhs,
300
                 double* a, const int* lda, double* b, const int* ldb,
301
                 int* jpvt, const double* rcond, int* rank,
302
                 double* work, const int* lwork, int* info);
303
/* DGEQL2 - compute a QL factorization of a real m by n matrix A */
304
La_extern void
305
F77_NAME(dgeql2)(const int* m, const int* n, double* a, const int* lda,
306
                 double* tau, double* work, int* info);
307
/* DGEQLF - compute a QL factorization of a real M-by-N matrix A */
308
La_extern void
309
F77_NAME(dgeqlf)(const int* m, const int* n,
310
                 double* a, const int* lda, double* tau,
311
                 double* work, const int* lwork, int* info);
312
/* DGEQP3 - compute a QR factorization with column pivoting of a */
313
/* real M-by-N matrix A using level 3 BLAS */
314
La_extern void
315
F77_NAME(dgeqp3)(const int* m, const int* n, double* a, const int* lda,
316
                 int* jpvt, double* tau, double* work, const int* lwork,
317
                 int* info);
318
/* DGEQPF - compute a QR factorization with column pivoting of a */
319
/* real M-by-N matrix A */
320
La_extern void
321
F77_NAME(dgeqpf)(const int* m, const int* n, double* a, const int* lda,
322
                 int* jpvt, double* tau, double* work, int* info);
323
/* DGEQR2 - compute a QR factorization of a real m by n matrix A */
324
La_extern void
325
F77_NAME(dgeqr2)(const int* m, const int* n, double* a, const int* lda,
326
                 double* tau, double* work, int* info);
327
/* DGEQRF - compute a QR factorization of a real M-by-N matrix A */
328
La_extern void
329
F77_NAME(dgeqrf)(const int* m, const int* n, double* a, const int* lda,
330
                 double* tau, double* work, const int* lwork, int* info);
331
/* DGERFS - improve the computed solution to a system of linear */
332
/* equations and provides error bounds and backward error */
333
/* estimates for the solution */
334
La_extern void
335
F77_NAME(dgerfs)(const char* trans, const int* n, const int* nrhs,
336
                 double* a, const int* lda, double* af, const int* ldaf,
337
                 int* ipiv, double* b, const int* ldb,
338
                 double* x, const int* ldx, double* ferr, double* berr,
339
                 double* work, int* iwork, int* info);
340
/* DGERQ2 - compute an RQ factorization of a real m by n matrix A */
341
La_extern void
342
F77_NAME(dgerq2)(const int* m, const int* n, double* a, const int* lda,
343
                 double* tau, double* work, int* info);
344
/* DGERQF - compute an RQ factorization of a real M-by-N matrix A */
345
La_extern void
346
F77_NAME(dgerqf)(const int* m, const int* n, double* a, const int* lda,
347
                 double* tau, double* work, const int* lwork, int* info);
348
/* DGESV - compute the solution to a real system of linear */
349
/* equations  A * X = B, */
350
La_extern void
351
F77_NAME(dgesv)(const int* n, const int* nrhs, double* a, const int* lda,
352
                int* ipiv, double* b, const int* ldb, int* info);
353
/* DGESVD - compute the singular value decomposition (SVD); of a */
354
/* real M-by-N matrix A, optionally computing the left and/or */
355
/* right singular vectors */
356
La_extern void
357
F77_NAME(dgesvd)(const char* jobu, const char* jobvt, const int* m,
358
                 const int* n, double* a, const int* lda, double* s,
359
                 double* u, const int* ldu, double* vt, const int* ldvt,
360
                 double* work, const int* lwork, int* info);
361
/* DGESVX - use the LU factorization to compute the solution to a */
362
/* real system of linear equations  A * X = B, */
363
La_extern void
364
F77_NAME(dgesvx)(const char* fact, const char* trans, const int* n,
365
                 const int* nrhs, double* a, const int* lda,
366
                 double* af, const int* ldaf, int* ipiv,
367
                 char *equed, double* r, double* c,
368
                 double* b, const int* ldb,
369
                 double* x, const int* ldx,
370
                 double* rcond, double* ferr, double* berr,
371
                 double* work, int* iwork, int* info);
372
/* DGETF2 - compute an LU factorization of a general m-by-n */
373
/* matrix A using partial pivoting with row interchanges */
374
La_extern void
375
F77_NAME(dgetf2)(const int* m, const int* n, double* a, const int* lda,
376
                 int* ipiv, int* info);
377
/* DGETRF - compute an LU factorization of a general M-by-N */
378
/* matrix A using partial pivoting with row interchanges */
379
La_extern void
380
F77_NAME(dgetrf)(const int* m, const int* n, double* a, const int* lda,
381
                 int* ipiv, int* info);
382
/* DGETRI - compute the inverse of a matrix using the LU */
383
/* factorization computed by DGETRF */
384
La_extern void
385
F77_NAME(dgetri)(const int* n, double* a, const int* lda,
386
                 int* ipiv, double* work, const int* lwork, int* info);
387
/* DGETRS - solve a system of linear equations        A * X = B or A' * */
388
/* X = B with a general N-by-N matrix A using the LU factorization */
389
/* computed by DGETRF */
390
La_extern void
391
F77_NAME(dgetrs)(const char* trans, const int* n, const int* nrhs,
392
                 const double* a, const int* lda, const int* ipiv,
393
                 double* b, const int* ldb, int* info);
394

    
395

    
396
//* Double precision General matrices Generalized problems -> DGG
397

    
398
/* DGGBAK - form the right or left eigenvectors of a real */
399
/* generalized eigenvalue problem A*x = lambda*B*x, by backward */
400
/* transformation on the computed eigenvectors of the balanced */
401
/* pair of matrices output by DGGBAL */
402
La_extern void
403
F77_NAME(dggbak)(const char* job, const char* side,
404
                 const int* n, const int* ilo, const int* ihi,
405
                 double* lscale, double* rscale, const int* m,
406
                 double* v, const int* ldv, int* info);
407
/* DGGBAL - balance a pair of general real matrices (A,B); */
408
La_extern void
409
F77_NAME(dggbal)(const char* job, const int* n, double* a, const int* lda,
410
                 double* b, const int* ldb, int* ilo, int* ihi,
411
                 double* lscale, double* rscale, double* work, int* info);
412
/* DGGES - compute for a pair of N-by-N real nonsymmetric */
413
/* matrices A, B the generalized eigenvalues, the generalized */
414
/* real Schur form (S,T), optionally, the left and/or right matrices */
415
/* of Schur vectors (VSL and VSR)*/
416
La_extern void
417
F77_NAME(dgges)(const char* jobvsl, const char* jobvsr, const char* sort,
418
                int (*delztg)(double*, double*, double*),
419
                const int* n, double* a, const int* lda,
420
                double* b, const int* ldb, double* alphar,
421
                double* alphai, const double* beta,
422
                double* vsl, const int* ldvsl,
423
                double* vsr, const int* ldvsr,
424
                double* work, const int* lwork, int* bwork, int* info);
425

    
426
/* DGGGLM - solve a general Gauss-Markov linear model (GLM) problem */
427
La_extern void
428
F77_NAME(dggglm)(const int* n, const int* m, const int* p,
429
                 double* a, const int* lda, double* b, const int* ldb,
430
                 double* d, double* x, double* y,
431
                 double* work, const int* lwork, int* info);
432
/* DGGHRD - reduce a pair of real matrices (A,B); to generalized */
433
/* upper Hessenberg form using orthogonal transformations, where A */
434
/* is a general matrix and B is upper triangular */
435
La_extern void
436
F77_NAME(dgghrd)(const char* compq, const char* compz, const int* n,
437
                 const int* ilo, const int* ihi, double* a, const int* lda,
438
                 double* b, const int* ldb, double* q, const int* ldq,
439
                 double* z, const int* ldz, int* info);
440
/* DGGLSE - solve the linear equality-constrained least squares */
441
/* (LSE) problem */
442
La_extern void
443
F77_NAME(dgglse)(const int* m, const int* n, const int* p,
444
                 double* a, const int* lda,
445
                 double* b, const int* ldb,
446
                 double* c, double* d, double* x,
447
                 double* work, const int* lwork, int* info);
448
/* DGGQRF - compute a generalized QR factorization of an N-by-M */
449
/* matrix A and an N-by-P matrix B */
450
La_extern void
451
F77_NAME(dggqrf)(const int* n, const int* m, const int* p,
452
                 double* a, const int* lda, double* taua,
453
                 double* b, const int* ldb, double* taub,
454
                 double* work, const int* lwork, int* info);
455
/* DGGRQF - compute a generalized RQ factorization of an M-by-N */
456
/* matrix A and a P-by-N matrix B */
457
La_extern void
458
F77_NAME(dggrqf)(const int* m, const int* p, const int* n,
459
                 double* a, const int* lda, double* taua,
460
                 double* b, const int* ldb, double* taub,
461
                 double* work, const int* lwork, int* info);
462
/* DGGSVD - compute the generalized singular value decomposition */
463
/* (GSVD) of an M-by-N real matrix A and P-by-N real matrix B */
464
La_extern void
465
F77_NAME(dggsvd)(const char* jobu, const char* jobv, const char* jobq,
466
                 const int* m, const int* n, const int* p,
467
                 const int* k, const int* l,
468
                 double* a, const int* lda,
469
                 double* b, const int* ldb,
470
                 const double* alpha, const double* beta,
471
                 double* u, const int* ldu,
472
                 double* v, const int* ldv,
473
                 double* q, const int* ldq,
474
                 double* work, int* iwork, int* info);
475

    
476

    
477
//* Double precision General Tridiagonal matrices  -> DGT
478

    
479
/* DGTCON - estimate the reciprocal of the condition number of a real */
480
/* tridiagonal matrix A using the LU factorization as computed by DGTTRF */
481
La_extern void
482
F77_NAME(dgtcon)(const char* norm, const int* n, double* dl, double* d,
483
                 double* du, double* du2, int* ipiv, const double* anorm,
484
                 double* rcond, double* work, int* iwork, int* info);
485
/* DGTRFS - improve the computed solution to a system of linear equations */
486
/* when the coefficient matrix is tridiagonal, and provides error bounds */
487
/* and backward error estimates for the solution */
488
La_extern void
489
F77_NAME(dgtrfs)(const char* trans, const int* n, const int* nrhs,
490
                 double* dl, double* d, double* du, double* dlf,
491
                 double* df, double* duf, double* du2,
492
                 int* ipiv, double* b, const int* ldb,
493
                 double* x, const int* ldx,
494
                 double* ferr, double* berr,
495
                 double* work, int* iwork, int* info);
496
/* DGTSV - solve the equation        A*X = B, */
497
La_extern void
498
F77_NAME(dgtsv)(const int* n, const int* nrhs,
499
                double* dl, double* d, double* du,
500
                double* b, const int* ldb, int* info);
501
/* DGTSVX - use the LU factorization to compute the solution to a */
502
/* real system of linear equations A * X = B or A**T * X = B, */
503
La_extern void
504
F77_NAME(dgtsvx)(const int* fact, const char* trans,
505
                 const int* n, const int* nrhs,
506
                 double* dl, double* d, double* du,
507
                 double* dlf, double* df, double* duf,
508
                 double* du2, int* ipiv,
509
                 double* b, const int* ldb,
510
                 double* x, const int* ldx,
511
                 double* rcond, double* ferr, double* berr,
512
                 double* work, int* iwork, int* info);
513
/* DGTTRF - compute an LU factorization of a real tridiagonal matrix */
514
/* A using elimination with partial pivoting and row interchanges */
515
La_extern void
516
F77_NAME(dgttrf)(const int* n, double* dl, double* d,
517
                 double* du, double* du2, int* ipiv, int* info);
518
/* DGTTRS - solve one of the systems of equations  A*X = B or */
519
/* A'*X = B, */
520
La_extern void
521
F77_NAME(dgttrs)(const char* trans, const int* n, const int* nrhs,
522
                 double* dl, double* d, double* du, double* du2,
523
                 int* ipiv, double* b, const int* ldb, int* info);
524

    
525

    
526
//* Double precision Orthogonal matrices  -> DOP & DOR
527

    
528
/* DOPGTR - generate a real orthogonal matrix Q which is defined */
529
/* as the product of n-1 elementary reflectors H(i); of order n, */
530
/* as returned by DSPTRD using packed storage */
531
La_extern void
532
F77_NAME(dopgtr)(const char* uplo, const int* n,
533
                 const double* ap, const double* tau,
534
                 double* q, const int* ldq,
535
                 double* work, int* info);
536
/* DOPMTR - overwrite the general real M-by-N matrix C with */
537
/* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
538
La_extern void
539
F77_NAME(dopmtr)(const char* side, const char* uplo,
540
                 const char* trans, const int* m, const int* n,
541
                 const double* ap, const double* tau,
542
                 double* c, const int* ldc,
543
                 double* work, int* info);
544
/* DORG2L - generate an m by n real matrix Q with orthonormal */
545
/* columns, */
546
La_extern void
547
F77_NAME(dorg2l)(const int* m, const int* n, const int* k,
548
                 double* a, const int* lda,
549
                 const double* tau, double* work, int* info);
550
/* DORG2R - generate an m by n real matrix Q with orthonormal */
551
/* columns, */
552
La_extern void
553
F77_NAME(dorg2r)(const int* m, const int* n, const int* k,
554
                 double* a, const int* lda,
555
                 const double* tau, double* work, int* info);
556
/* DORGBR - generate one of the real orthogonal matrices Q or */
557
/* P**T determined by DGEBRD when reducing a real matrix A to */
558
/* bidiagonal form */
559
La_extern void
560
F77_NAME(dorgbr)(const char* vect, const int* m,
561
                 const int* n, const int* k,
562
                 double* a, const int* lda,
563
                 const double* tau, double* work,
564
                 const int* lwork, int* info);
565
/* DORGHR - generate a real orthogonal matrix Q which is defined */
566
/* as the product of IHI-ILO elementary reflectors of order N, as */
567
/* returned by DGEHRD */
568
La_extern void
569
F77_NAME(dorghr)(const int* n, const int* ilo, const int* ihi,
570
                 double* a, const int* lda, const double* tau,
571
                 double* work, const int* lwork, int* info);
572
/* DORGL2 - generate an m by n real matrix Q with orthonormal */
573
/* rows, */
574
La_extern void
575
F77_NAME(dorgl2)(const int* m, const int* n, const int* k,
576
                 double* a, const int* lda, const double* tau,
577
                 double* work, int* info);
578
/* DORGLQ - generate an M-by-N real matrix Q with orthonormal */
579
/* rows, */
580
La_extern void
581
F77_NAME(dorglq)(const int* m, const int* n, const int* k,
582
                 double* a, const int* lda,
583
                 const double* tau, double* work,
584
                 const int* lwork, int* info);
585
/* DORGQL - generate an M-by-N real matrix Q with orthonormal */
586
/* columns, */
587
La_extern void
588
F77_NAME(dorgql)(const int* m, const int* n, const int* k,
589
                 double* a, const int* lda,
590
                 const double* tau, double* work,
591
                 const int* lwork, int* info);
592
/* DORGQR - generate an M-by-N real matrix Q with orthonormal */
593
/* columns, */
594
La_extern void
595
F77_NAME(dorgqr)(const int* m, const int* n, const int* k,
596
                 double* a, const int* lda, const double* tau,
597
                 double* work, const int* lwork, int* info);
598
/* DORGR2 - generate an m by n real matrix Q with orthonormal */
599
/* rows, */
600
La_extern void
601
F77_NAME(dorgr2)(const int* m, const int* n, const int* k,
602
                 double* a, const int* lda, const double* tau,
603
                 double* work, int* info);
604
/* DORGRQ - generate an M-by-N real matrix Q with orthonormal rows */
605
La_extern void
606
F77_NAME(dorgrq)(const int* m, const int* n, const int* k,
607
                 double* a, const int* lda, const double* tau,
608
                 double* work, const int* lwork, int* info);
609
/* DORGTR - generate a real orthogonal matrix Q which is defined */
610
/* as the product of n-1 elementary reflectors of order const int* n, as */
611
/* returned by DSYTRD */
612
La_extern void
613
F77_NAME(dorgtr)(const char* uplo, const int* n,
614
                 double* a, const int* lda, const double* tau,
615
                 double* work, const int* lwork, int* info);
616
/* DORM2L - overwrite the general real m by n matrix C with   Q * */
617
/* C if SIDE = 'L' and TRANS = 'N', or         Q'* C if SIDE = 'L' and */
618
/* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
619
/* Q' if SIDE = 'R' and TRANS = 'T', */
620
La_extern void
621
F77_NAME(dorm2l)(const char* side, const char* trans,
622
                 const int* m, const int* n, const int* k,
623
                 const double* a, const int* lda,
624
                 const double* tau, double* c, const int* ldc,
625
                 double* work, int* info);
626
/* DORM2R - overwrite the general real m by n matrix C with   Q * C */
627
/* if SIDE = 'L' and TRANS = 'N', or   Q'* C if SIDE = 'L' and */
628
/* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
629
/* Q' if SIDE = 'R' and TRANS = 'T', */
630
La_extern void
631
F77_NAME(dorm2r)(const char* side, const char* trans,
632
                 const int* m, const int* n, const int* k,
633
                 const double* a, const int* lda, const double* tau,
634
                 double* c, const int* ldc, double* work, int* info);
635
/* DORMBR - VECT = 'Q', DORMBR overwrites the general real M-by-N */
636
/* matrix C with  SIDE = 'L' SIDE = 'R' TRANS = 'N' */
637
La_extern void
638
F77_NAME(dormbr)(const char* vect, const char* side, const char* trans,
639
                 const int* m, const int* n, const int* k,
640
                 const double* a, const int* lda, const double* tau,
641
                 double* c, const int* ldc,
642
                 double* work, const int* lwork, int* info);
643
/* DORMHR - overwrite the general real M-by-N matrix C with */
644
/* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
645
La_extern void
646
F77_NAME(dormhr)(const char* side, const char* trans, const int* m,
647
                 const int* n, const int* ilo, const int* ihi,
648
                 const double* a, const int* lda, const double* tau,
649
                 double* c, const int* ldc,
650
                 double* work, const int* lwork, int* info);
651
/* DORML2 - overwrite the general real m by n matrix C with   Q * */
652
/* C if SIDE = 'L' and TRANS = 'N', or         Q'* C if SIDE = 'L' and */
653
/* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
654
/* Q' if SIDE = 'R' and TRANS = 'T', */
655
La_extern void
656
F77_NAME(dorml2)(const char* side, const char* trans,
657
                 const int* m, const int* n, const int* k,
658
                 const double* a, const int* lda, const double* tau,
659
                 double* c, const int* ldc, double* work, int* info);
660
/* DORMLQ - overwrite the general real M-by-N matrix C with */
661
/* SIDE = 'L' SIDE = 'R' TRANS = 'N'  */
662
La_extern void
663
F77_NAME(dormlq)(const char* side, const char* trans,
664
                 const int* m, const int* n, const int* k,
665
                 const double* a, const int* lda,
666
                 const double* tau, double* c, const int* ldc,
667
                 double* work, const int* lwork, int* info);
668
/* DORMQL - overwrite the general real M-by-N matrix C with */
669
/* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
670
La_extern void
671
F77_NAME(dormql)(const char* side, const char* trans,
672
                 const int* m, const int* n, const int* k,
673
                 const double* a, const int* lda,
674
                 const double* tau, double* c, const int* ldc,
675
                 double* work, const int* lwork, int* info);
676
/* DORMQR - overwrite the general real M-by-N matrix C with   SIDE = */
677
/* 'L' SIDE = 'R' TRANS = 'N' */
678
La_extern void
679
F77_NAME(dormqr)(const char* side, const char* trans,
680
                 const int* m, const int* n, const int* k,
681
                 const double* a, const int* lda,
682
                 const double* tau, double* c, const int* ldc,
683
                 double* work, const int* lwork, int* info);
684
/* DORMR2 - overwrite the general real m by n matrix C with   Q * */
685
/* C if SIDE = 'L' and TRANS = 'N', or         Q'* C if SIDE = 'L' and */
686
/* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
687
/* Q' if SIDE = 'R' and TRANS = 'T', */
688
La_extern void
689
F77_NAME(dormr2)(const char* side, const char* trans,
690
                 const int* m, const int* n, const int* k,
691
                 const double* a, const int* lda,
692
                 const double* tau, double* c, const int* ldc,
693
                 double* work, int* info);
694
/* DORMRQ - overwrite the general real M-by-N matrix C with */
695
/* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
696
La_extern void
697
F77_NAME(dormrq)(const char* side, const char* trans,
698
                 const int* m, const int* n, const int* k,
699
                 const double* a, const int* lda,
700
                 const double* tau, double* c, const int* ldc,
701
                 double* work, const int* lwork, int* info);
702
/* DORMTR - overwrite the general real M-by-N matrix C with */
703
/* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
704
La_extern void
705
F77_NAME(dormtr)(const char* side, const char* uplo,
706
                 const char* trans, const int* m, const int* n,
707
                 const double* a, const int* lda,
708
                 const double* tau, double* c, const int* ldc,
709
                 double* work, const int* lwork, int* info);
710

    
711

    
712
//* Double precision Positive definite Band matrices  -> DPB
713

    
714
/* DPBCON - estimate the reciprocal of the condition number (in */
715
/* the 1-norm); of a real symmetric positive definite band matrix */
716
/* using the Cholesky factorization A = U**T*U or A = L*L**T */
717
/* computed by DPBTRF */
718
La_extern void
719
F77_NAME(dpbcon)(const char* uplo, const int* n, const int* kd,
720
                 const double* ab, const int* ldab,
721
                 const double* anorm, double* rcond,
722
                 double* work, int* iwork, int* info);
723
/* DPBEQU - compute row and column scalings intended to */
724
/* equilibrate a symmetric positive definite band matrix A and */
725
/* reduce its condition number (with respect to the two-norm); */
726
La_extern void
727
F77_NAME(dpbequ)(const char* uplo, const int* n, const int* kd,
728
                 const double* ab, const int* ldab,
729
                 double* s, double* scond, double* amax, int* info);
730
/* DPBRFS - improve the computed solution to a system of linear */
731
/* equations when the coefficient matrix is symmetric positive */
732
/* definite and banded, and provides error bounds and backward */
733
/* error estimates for the solution */
734
La_extern void
735
F77_NAME(dpbrfs)(const char* uplo, const int* n,
736
                 const int* kd, const int* nrhs,
737
                 const double* ab, const int* ldab,
738
                 const double* afb, const int* ldafb,
739
                 const double* b, const int* ldb,
740
                 double* x, const int* ldx,
741
                 double* ferr, double* berr,
742
                 double* work, int* iwork, int* info);
743
/* DPBSTF - compute a split Cholesky factorization of a real */
744
/* symmetric positive definite band matrix A */
745
La_extern void
746
F77_NAME(dpbstf)(const char* uplo, const int* n, const int* kd,
747
                 double* ab, const int* ldab, int* info);
748
/* DPBSV - compute the solution to a real system of linear */
749
/* equations  A * X = B, */
750
La_extern void
751
F77_NAME(dpbsv)(const char* uplo, const int* n,
752
                const int* kd, const int* nrhs,
753
                double* ab, const int* ldab,
754
                double* b, const int* ldb, int* info);
755
/* DPBSVX - use the Cholesky factorization A = U**T*U or A = */
756
/* L*L**T to compute the solution to a real system of linear */
757
/* equations  A * X = B, */
758
La_extern void
759
F77_NAME(dpbsvx)(const int* fact, const char* uplo, const int* n,
760
                 const int* kd, const int* nrhs,
761
                 double* ab, const int* ldab,
762
                 double* afb, const int* ldafb,
763
                 char* equed, double* s,
764
                 double* b, const int* ldb,
765
                 double* x, const int* ldx, double* rcond,
766
                 double* ferr, double* berr,
767
                 double* work, int* iwork, int* info);
768
/* DPBTF2 - compute the Cholesky factorization of a real */
769
/* symmetric positive definite band matrix A */
770
La_extern void
771
F77_NAME(dpbtf2)(const char* uplo, const int* n, const int* kd,
772
                 double* ab, const int* ldab, int* info);
773
/* DPBTRF - compute the Cholesky factorization of a real */
774
/* symmetric positive definite band matrix A */
775
La_extern void
776
F77_NAME(dpbtrf)(const char* uplo, const int* n, const int* kd,
777
                 double* ab, const int* ldab, int* info);
778
/* DPBTRS - solve a system of linear equations A*X = B with a */
779
/* symmetric positive definite band matrix A using the Cholesky */
780
/* factorization A = U**T*U or A = L*L**T computed by DPBTRF */
781
La_extern void
782
F77_NAME(dpbtrs)(const char* uplo, const int* n,
783
                 const int* kd, const int* nrhs,
784
                 const double* ab, const int* ldab,
785
                 double* b, const int* ldb, int* info);
786

    
787

    
788
//* Double precision Positive definite matrices  -> DPO
789

    
790
/* DPOCON - estimate the reciprocal of the condition number (in */
791
/* the 1-norm); of a real symmetric positive definite matrix using */
792
/* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
793
/* DPOTRF */
794
La_extern void
795
F77_NAME(dpocon)(const char* uplo, const int* n,
796
                 const double* a, const int* lda,
797
                 const double* anorm, double* rcond,
798
                 double* work, int* iwork, int* info);
799
/* DPOEQU - compute row and column scalings intended to */
800
/* equilibrate a symmetric positive definite matrix A and reduce */
801
/* its condition number (with respect to the two-norm); */
802
La_extern void
803
F77_NAME(dpoequ)(const int* n, const double* a, const int* lda,
804
                 double* s, double* scond, double* amax, int* info);
805
/* DPORFS - improve the computed solution to a system of linear */
806
/* equations when the coefficient matrix is symmetric positive */
807
/* definite, */
808
La_extern void
809
F77_NAME(dporfs)(const char* uplo, const int* n, const int* nrhs,
810
                 const double* a, const int* lda,
811
                 const double* af, const int* ldaf,
812
                 const double* b, const int* ldb,
813
                 double* x, const int* ldx,
814
                 double* ferr, double* berr,
815
                 double* work, int* iwork, int* info);
816
/* DPOSV - compute the solution to a real system of linear */
817
/* equations  A * X = B, */
818
La_extern void
819
F77_NAME(dposv)(const char* uplo, const int* n, const int* nrhs,
820
                double* a, const int* lda,
821
                double* b, const int* ldb, int* info);
822
/* DPOSVX - use the Cholesky factorization A = U**T*U or A = */
823
/* L*L**T to compute the solution to a real system of linear */
824
/* equations  A * X = B, */
825
La_extern void
826
F77_NAME(dposvx)(const int* fact, const char* uplo,
827
                 const int* n, const int* nrhs,
828
                 double* a, const int* lda,
829
                 double* af, const int* ldaf, char* equed,
830
                 double* s, double* b, const int* ldb,
831
                 double* x, const int* ldx, double* rcond,
832
                 double* ferr, double* berr, double* work,
833
                 int* iwork, int* info);
834
/* DPOTF2 - compute the Cholesky factorization of a real */
835
/* symmetric positive definite matrix A */
836
La_extern void
837
F77_NAME(dpotf2)(const char* uplo, const int* n,
838
                 double* a, const int* lda, int* info);
839
/* DPOTRF - compute the Cholesky factorization of a real */
840
/* symmetric positive definite matrix A */
841
La_extern void
842
F77_NAME(dpotrf)(const char* uplo, const int* n,
843
                 double* a, const int* lda, int* info);
844
/* DPOTRI - compute the inverse of a real symmetric positive */
845
/* definite matrix A using the Cholesky factorization A = U**T*U */
846
/* or A = L*L**T computed by DPOTRF */
847
La_extern void
848
F77_NAME(dpotri)(const char* uplo, const int* n,
849
                 double* a, const int* lda, int* info);
850
/* DPOTRS - solve a system of linear equations A*X = B with a */
851
/* symmetric positive definite matrix A using the Cholesky */
852
/* factorization A = U**T*U or A = L*L**T computed by DPOTRF */
853
La_extern void
854
F77_NAME(dpotrs)(const char* uplo, const int* n,
855
                 const int* nrhs, const double* a, const int* lda,
856
                 double* b, const int* ldb, int* info);
857
/* DPPCON - estimate the reciprocal of the condition number (in */
858
/* the 1-norm); of a real symmetric positive definite packed */
859
/* matrix using the Cholesky factorization A = U**T*U or A = */
860
/* L*L**T computed by DPPTRF */
861
La_extern void
862
F77_NAME(dppcon)(const char* uplo, const int* n,
863
                 const double* ap, const double* anorm, double* rcond,
864
                 double* work, int* iwork, int* info);
865
/* DPPEQU - compute row and column scalings intended to */
866
/* equilibrate a symmetric positive definite matrix A in packed */
867
/* storage and reduce its condition number (with respect to the */
868
/* two-norm); */
869
La_extern void
870
F77_NAME(dppequ)(const char* uplo, const int* n,
871
                 const double* ap, double* s, double* scond,
872
                 double* amax, int* info);
873

    
874

    
875
//* Double precision Positive definite matrices in Packed storage  -> DPP
876

    
877
/* DPPRFS - improve the computed solution to a system of linear */
878
/* equations when the coefficient matrix is symmetric positive */
879
/* definite and packed, and provides error bounds and backward */
880
/* error estimates for the solution */
881
La_extern void
882
F77_NAME(dpprfs)(const char* uplo, const int* n, const int* nrhs,
883
                 const double* ap, const double* afp,
884
                 const double* b, const int* ldb,
885
                 double* x, const int* ldx,
886
                 double* ferr, double* berr,
887
                 double* work, int* iwork, int* info);
888
/* DPPSV - compute the solution to a real system of linear */
889
/* equations  A * X = B, */
890
La_extern void
891
F77_NAME(dppsv)(const char* uplo, const int* n,
892
                const int* nrhs, const double* ap,
893
                double* b, const int* ldb, int* info);
894
/* DPPSVX - use the Cholesky factorization A = U**T*U or A = */
895
/* L*L**T to compute the solution to a real system of linear */
896
/* equations  A * X = B, */
897
La_extern void
898
F77_NAME(dppsvx)(const int* fact, const char* uplo,
899
                 const int* n, const int* nrhs, double* ap,
900
                 double* afp, char* equed, double* s,
901
                 double* b, const int* ldb,
902
                 double* x, const int* ldx,
903
                 double* rcond, double* ferr, double* berr,
904
                 double* work, int* iwork, int* info);
905
/* DPPTRF - compute the Cholesky factorization of a real */
906
/* symmetric positive definite matrix A stored in packed format */
907
La_extern void
908
F77_NAME(dpptrf)(const char* uplo, const int* n, double* ap, int* info);
909
/* DPPTRI - compute the inverse of a real symmetric positive */
910
/* definite matrix A using the Cholesky factorization A = U**T*U */
911
/* or A = L*L**T computed by DPPTRF  */
912
La_extern void
913
F77_NAME(dpptri)(const char* uplo, const int* n, double* ap, int* info);
914
/* DPPTRS - solve a system of linear equations A*X = B with a */
915
/* symmetric positive definite matrix A in packed storage using */
916
/* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
917
/* DPPTRF */
918
La_extern void
919
F77_NAME(dpptrs)(const char* uplo, const int* n,
920
                 const int* nrhs, const double* ap,
921
                 double* b, const int* ldb, int* info);
922

    
923
//* Double precision symmetric Positive definite Tridiagonal matrices  -> DPT
924

    
925
/* DPTCON - compute the reciprocal of the condition number (in */
926
/* the 1-norm); of a real symmetric positive definite tridiagonal */
927
/* matrix using the factorization A = L*D*L**T or A = U**T*D*U */
928
/* computed by DPTTRF */
929
La_extern void
930
F77_NAME(dptcon)(const int* n,
931
                 const double* d, const double* e,
932
                 const double* anorm, double* rcond,
933
                 double* work, int* info);
934
/* DPTEQR - compute all eigenvalues and, optionally, eigenvectors */
935
/* of a symmetric positive definite tridiagonal matrix by first */
936
/* factoring the matrix using DPTTRF, and then calling DBDSQR to */
937
/* compute the singular values of the bidiagonal factor */
938
La_extern void
939
F77_NAME(dpteqr)(const char* compz, const int* n, double* d,
940
                 double* e, double* z, const int* ldz,
941
                 double* work, int* info);
942
/* DPTRFS - improve the computed solution to a system of linear */
943
/* equations when the coefficient matrix is symmetric positive */
944
/* definite and tridiagonal, and provides error bounds and */
945
/* backward error estimates for the solution */
946
La_extern void
947
F77_NAME(dptrfs)(const int* n, const int* nrhs,
948
                 const double* d, const double* e,
949
                 const double* df, const double* ef,
950
                 const double* b, const int* ldb,
951
                 double* x, const int* ldx,
952
                 double* ferr, double* berr,
953
                 double* work, int* info);
954
/* DPTSV - compute the solution to a real system of linear */
955
/* equations A*X = B, where A is an N-by-N symmetric positive */
956
/* definite tridiagonal matrix, and X and B are N-by-NRHS matrices */
957
La_extern void
958
F77_NAME(dptsv)(const int* n, const int* nrhs, double* d,
959
                double* e, double* b, const int* ldb, int* info);
960
/* DPTSVX - use the factorization A = L*D*L**T to compute the */
961
/* solution to a real system of linear equations A*X = B, where A */
962
/* is an N-by-N symmetric positive definite tridiagonal matrix and */
963
/* X and B are N-by-NRHS matrices */
964
La_extern void
965
F77_NAME(dptsvx)(const int* fact, const int* n,
966
                 const int* nrhs,
967
                 const double* d, const double* e,
968
                 double* df, double* ef,
969
                 const double* b, const int* ldb,
970
                 double* x, const int* ldx, double* rcond,
971
                 double* ferr, double* berr,
972
                 double* work, int* info);
973
/* DPTTRF - compute the factorization of a real symmetric */
974
/* positive definite tridiagonal matrix A */
975
La_extern void
976
F77_NAME(dpttrf)(const int* n, double* d, double* e, int* info);
977
/* DPTTRS - solve a system of linear equations A * X = B with a */
978
/* symmetric positive definite tridiagonal matrix A using the */
979
/* factorization A = L*D*L**T or A = U**T*D*U computed by DPTTRF */
980
La_extern void
981
F77_NAME(dpttrs)(const int* n, const int* nrhs,
982
                 const double* d, const double* e,
983
                 double* b, const int* ldb, int* info);
984
/* DRSCL - multiply an n-element real vector x by the real scalar */
985
/* 1/a */
986
La_extern void
987
F77_NAME(drscl)(const int* n, const double* da,
988
                double* x, const int* incx);
989

    
990
//* Double precision Symmetric Band matrices  -> DSB
991

    
992
/* DSBEV - compute all the eigenvalues and, optionally, */
993
/* eigenvectors of a real symmetric band matrix A */
994
La_extern void
995
F77_NAME(dsbev)(const char* jobz, const char* uplo,
996
                const int* n, const int* kd,
997
                double* ab, const int* ldab,
998
                double* w, double* z, const int* ldz,
999
                double* work, int* info);
1000
/* DSBEVD - compute all the eigenvalues and, optionally, */
1001
/* eigenvectors of a real symmetric band matrix A */
1002
La_extern void
1003
F77_NAME(dsbevd)(const char* jobz, const char* uplo,
1004
                 const int* n, const int* kd,
1005
                 double* ab, const int* ldab,
1006
                 double* w, double* z, const int* ldz,
1007
                 double* work, const int* lwork,
1008
                 int* iwork, const int* liwork, int* info);
1009
/* DSBEVX - compute selected eigenvalues and, optionally, */
1010
/* eigenvectors of a real symmetric band matrix A */
1011
La_extern void
1012
F77_NAME(dsbevx)(const char* jobz, const char* range,
1013
                 const char* uplo, const int* n, const int* kd,
1014
                 double* ab, const int* ldab,
1015
                 double* q, const int* ldq,
1016
                 const double* vl, const double* vu,
1017
                 const int* il, const int* iu,
1018
                 const double* abstol,
1019
                 int* m, double* w,
1020
                 double* z, const int* ldz,
1021
                 double* work, int* iwork,
1022
                 int* ifail, int* info);
1023
/* DSBGST - reduce a real symmetric-definite banded generalized */
1024
/* eigenproblem A*x = lambda*B*x to standard form C*y = lambda*y, */
1025
La_extern void
1026
F77_NAME(dsbgst)(const char* vect, const char* uplo,
1027
                 const int* n, const int* ka, const int* kb,
1028
                 double* ab, const int* ldab,
1029
                 double* bb, const int* ldbb,
1030
                 double* x, const int* ldx,
1031
                 double* work, int* info);
1032
/* DSBGV - compute all the eigenvalues, and optionally, the */
1033
/* eigenvectors of a real generalized symmetric-definite banded */
1034
/* eigenproblem, of the form A*x=(lambda);*B*x */
1035
La_extern void
1036
F77_NAME(dsbgv)(const char* jobz, const char* uplo,
1037
                const int* n, const int* ka, const int* kb,
1038
                double* ab, const int* ldab,
1039
                double* bb, const int* ldbb,
1040
                double* w, double* z, const int* ldz,
1041
                double* work, int* info);
1042
/* DSBTRD - reduce a real symmetric band matrix A to symmetric */
1043
/* tridiagonal form T by an orthogonal similarity transformation */
1044
La_extern void
1045
F77_NAME(dsbtrd)(const char* vect, const char* uplo,
1046
                 const int* n, const int* kd,
1047
                 double* ab, const int* ldab,
1048
                 double* d, double* e,
1049
                 double* q, const int* ldq,
1050
                 double* work, int* info);
1051

    
1052
//* Double precision Symmetric Packed matrices  -> DSP
1053

    
1054
/* DSPCON - estimate the reciprocal of the condition number (in */
1055
/* the 1-norm); of a real symmetric packed matrix A using the */
1056
/* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
1057
La_extern void
1058
F77_NAME(dspcon)(const char* uplo, const int* n,
1059
                 const double* ap, const int* ipiv,
1060
                 const double* anorm, double* rcond,
1061
                 double* work, int* iwork, int* info);
1062
/* DSPEV - compute all the eigenvalues and, optionally, */
1063
/* eigenvectors of a real symmetric matrix A in packed storage */
1064
La_extern void
1065
F77_NAME(dspev)(const char* jobz, const char* uplo, const int* n,
1066
                double* ap, double* w, double* z, const int* ldz,
1067
                double* work, int* info);
1068
/* DSPEVD - compute all the eigenvalues and, optionally, */
1069
/* eigenvectors of a real symmetric matrix A in packed storage */
1070
La_extern void
1071
F77_NAME(dspevd)(const char* jobz, const char* uplo,
1072
                 const int* n, double* ap, double* w,
1073
                 double* z, const int* ldz,
1074
                 double* work, const int* lwork,
1075
                 int* iwork, const int* liwork, int* info);
1076
/* DSPEVX - compute selected eigenvalues and, optionally, */
1077
/* eigenvectors of a real symmetric matrix A in packed storage */
1078
La_extern void
1079
F77_NAME(dspevx)(const char* jobz, const char* range,
1080
                 const char* uplo, const int* n, double* ap,
1081
                 const double* vl, const double* vu,
1082
                 const int* il, const int* iu,
1083
                 const double* abstol,
1084
                 int* m, double* w,
1085
                 double* z, const int* ldz,
1086
                 double* work, int* iwork,
1087
                 int* ifail, int* info);
1088
/* DSPGST - reduce a real symmetric-definite generalized */
1089
/* eigenproblem to standard form, using packed storage */
1090
La_extern void
1091
F77_NAME(dspgst)(const int* itype, const char* uplo,
1092
                 const int* n, double* ap, double* bp, int* info);
1093
/* DSPGV - compute all the eigenvalues and, optionally, the */
1094
/* eigenvectors of a real generalized symmetric-definite */
1095
/* eigenproblem, of the form A*x=(lambda)*B*x, A*Bx=(lambda)*x, */
1096
/* or B*A*x=(lambda)*x */
1097
La_extern void
1098
F77_NAME(dspgv)(const int* itype, const char* jobz,
1099
                const char* uplo, const int* n,
1100
                double* ap, double* bp, double* w,
1101
                double* z, const int* ldz,
1102
                double* work, int* info);
1103

    
1104
/* DSPRFS - improve the computed solution to a system of linear */
1105
/* equations when the coefficient matrix is symmetric indefinite */
1106
/* and packed, and provides error bounds and backward error */
1107
/* estimates for the solution */
1108
La_extern void
1109
F77_NAME(dsprfs)(const char* uplo, const int* n,
1110
                 const int* nrhs, const double* ap,
1111
                 const double* afp, const int* ipiv,
1112
                 const double* b, const int* ldb,
1113
                 double* x, const int* ldx,
1114
                 double* ferr, double* berr,
1115
                 double* work, int* iwork, int* info);
1116

    
1117
/* DSPSV - compute the solution to a real system of linear */
1118
/* equations  A * X = B, */
1119
La_extern void
1120
F77_NAME(dspsv)(const char* uplo, const int* n,
1121
                const int* nrhs, double* ap, int* ipiv,
1122
                double* b, const int* ldb, int* info);
1123

    
1124
/* DSPSVX - use the diagonal pivoting factorization A = U*D*U**T */
1125
/* or A = L*D*L**T to compute the solution to a real system of */
1126
/* linear equations A * X = B, where A is an N-by-N symmetric */
1127
/* matrix stored in packed format and X and B are N-by-NRHS */
1128
/* matrices */
1129
La_extern void
1130
F77_NAME(dspsvx)(const int* fact, const char* uplo,
1131
                 const int* n, const int* nrhs,
1132
                 const double* ap, double* afp, int* ipiv,
1133
                 const double* b, const int* ldb,
1134
                 double* x, const int* ldx,
1135
                 double* rcond, double* ferr, double* berr,
1136
                 double* work, int* iwork, int* info);
1137

    
1138
/* DSPTRD - reduce a real symmetric matrix A stored in packed */
1139
/* form to symmetric tridiagonal form T by an orthogonal */
1140
/* similarity transformation */
1141
La_extern void
1142
F77_NAME(dsptrd)(const char* uplo, const int* n,
1143
                 double* ap, double* d, double* e,
1144
                 double* tau, int* info);
1145

    
1146
/* DSPTRF - compute the factorization of a real symmetric matrix */
1147
/* A stored in packed format using the Bunch-Kaufman diagonal */
1148
/* pivoting method */
1149
La_extern void
1150
F77_NAME(dsptrf)(const char* uplo, const int* n,
1151
                 double* ap, int* ipiv, int* info);
1152

    
1153
/* DSPTRI - compute the inverse of a real symmetric indefinite */
1154
/* matrix A in packed storage using the factorization A = U*D*U**T */
1155
/* or A = L*D*L**T computed by DSPTRF */
1156
La_extern void
1157
F77_NAME(dsptri)(const char* uplo, const int* n,
1158
                 double* ap, const int* ipiv,
1159
                 double* work, int* info);
1160

    
1161
/* DSPTRS - solve a system of linear equations A*X = B with a */
1162
/* real symmetric matrix A stored in packed format using the */
1163
/* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
1164
La_extern void
1165
F77_NAME(dsptrs)(const char* uplo, const int* n,
1166
                 const int* nrhs, const double* ap,
1167
                 const int* ipiv, double* b, const int* ldb, int* info);
1168

    
1169

    
1170
//* Double precision Symmetric Tridiagonal matrices  -> DST
1171

    
1172
/* DSTEBZ - compute the eigenvalues of a symmetric tridiagonal */
1173
/* matrix T */
1174
La_extern void
1175
F77_NAME(dstebz)(const char* range, const char* order, const int* n,
1176
                 const double* vl, const double* vu,
1177
                 const int* il, const int* iu,
1178
                 const double *abstol,
1179
                 const double* d, const double* e,
1180
                 int* m, int* nsplit, double* w,
1181
                 int* iblock, int* isplit,
1182
                 double* work, int* iwork,
1183
                 int* info);
1184
/* DSTEDC - compute all eigenvalues and, optionally, eigenvectors */
1185
/* of a symmetric tridiagonal matrix using the divide and conquer */
1186
/* method */
1187
La_extern void
1188
F77_NAME(dstedc)(const char* compz, const int* n,
1189
                 double* d, double* e,
1190
                 double* z, const int* ldz,
1191
                 double* work, const int* lwork,
1192
                 int* iwork, const int* liwork, int* info);
1193
/* DSTEIN - compute the eigenvectors of a real symmetric */
1194
/* tridiagonal matrix T corresponding to specified eigenvalues, */
1195
/* using inverse iteration */
1196
La_extern void
1197
F77_NAME(dstein)(const int* n, const double* d, const double* e,
1198
                 const int* m, const double* w,
1199
                 const int* iblock, const int* isplit,
1200
                 double* z, const int* ldz,
1201
                 double* work, int* iwork,
1202
                 int* ifail, int* info);
1203
/* DSTEQR - compute all eigenvalues and, optionally, eigenvectors */
1204
/* of a symmetric tridiagonal matrix using the implicit QL or QR */
1205
/* method */
1206
La_extern void
1207
F77_NAME(dsteqr)(const char* compz, const int* n, double* d, double* e,
1208
                 double* z, const int* ldz, double* work, int* info);
1209
/* DSTERF - compute all eigenvalues of a symmetric tridiagonal */
1210
/* matrix using the Pal-Walker-Kahan variant of the QL or QR */
1211
/* algorithm */
1212
La_extern void
1213
F77_NAME(dsterf)(const int* n, double* d, double* e, int* info);
1214
/* DSTEV - compute all eigenvalues and, optionally, eigenvectors */
1215
/* of a real symmetric tridiagonal matrix A */
1216
La_extern void
1217
F77_NAME(dstev)(const char* jobz, const int* n,
1218
                double* d, double* e,
1219
                double* z, const int* ldz,
1220
                double* work, int* info);
1221
/* DSTEVD - compute all eigenvalues and, optionally, eigenvectors */
1222
/* of a real symmetric tridiagonal matrix */
1223
La_extern void
1224
F77_NAME(dstevd)(const char* jobz, const int* n,
1225
                 double* d, double* e,
1226
                 double* z, const int* ldz,
1227
                 double* work, const int* lwork,
1228
                 int* iwork, const int* liwork, int* info);
1229
/* DSTEVX - compute selected eigenvalues and, optionally, */
1230
/* eigenvectors of a real symmetric tridiagonal matrix A */
1231
La_extern void
1232
F77_NAME(dstevx)(const char* jobz, const char* range,
1233
                 const int* n, double* d, double* e,
1234
                 const double* vl, const double* vu,
1235
                 const int* il, const int* iu,
1236
                 const double* abstol,
1237
                 int* m, double* w,
1238
                 double* z, const int* ldz,
1239
                 double* work, int* iwork,
1240
                 int* ifail, int* info);
1241

    
1242
//* Double precision SYmmetric matrices  -> DSY
1243

    
1244
/* DSYCON - estimate the reciprocal of the condition number (in */
1245
/* the 1-norm); of a real symmetric matrix A using the */
1246
/* factorization A = U*D*U**T or A = L*D*L**T computed by DSYTRF */
1247
La_extern void
1248
F77_NAME(dsycon)(const char* uplo, const int* n,
1249
                 const double* a, const int* lda,
1250
                 const int* ipiv,
1251
                 const double* anorm, double* rcond,
1252
                 double* work, int* iwork, int* info);
1253
/* DSYEV - compute all eigenvalues and, optionally, eigenvectors */
1254
/* of a real symmetric matrix A */
1255
La_extern void
1256
F77_NAME(dsyev)(const char* jobz, const char* uplo,
1257
                const int* n, double* a, const int* lda,
1258
                double* w, double* work, const int* lwork, int* info);
1259
/* DSYEVD - compute all eigenvalues and, optionally, eigenvectors */
1260
/* of a real symmetric matrix A */
1261
La_extern void
1262
F77_NAME(dsyevd)(const char* jobz, const char* uplo,
1263
                 const int* n, double* a, const int* lda,
1264
                 double* w, double* work, const int* lwork,
1265
                 int* iwork, const int* liwork, int* info);
1266
/* DSYEVX - compute selected eigenvalues and, optionally, */
1267
/* eigenvectors of a real symmetric matrix A */
1268
La_extern void
1269
F77_NAME(dsyevx)(const char* jobz, const char* range,
1270
                 const char* uplo, const int* n,
1271
                 double* a, const int* lda,
1272
                 const double* vl, const double* vu,
1273
                 const int* il, const int* iu,
1274
                 const double* abstol,
1275
                 int* m, double* w,
1276
                 double* z, const int* ldz,
1277
                 double* work, const int* lwork, int* iwork,
1278
                 int* ifail, int* info);
1279
/* DSYEVR - compute all eigenvalues and, optionally, eigenvectors   */
1280
/* of a real symmetric matrix A                                           */
1281
La_extern void
1282
F77_NAME(dsyevr)(const char *jobz, const char *range, const char *uplo,
1283
                 const int *n, double *a, const int *lda,
1284
                 const double *vl, const double *vu,
1285
                 const int *il, const int *iu,
1286
                 const double *abstol, int *m, double *w,
1287
                 double *z, const int *ldz, int *isuppz,
1288
                 double *work, const int *lwork,
1289
                 int *iwork, const int *liwork,
1290
                 int *info);
1291
/* DSYGS2 - reduce a real symmetric-definite generalized */
1292
/* eigenproblem to standard form */
1293
La_extern void
1294
F77_NAME(dsygs2)(const int* itype, const char* uplo,
1295
                 const int* n, double* a, const int* lda,
1296
                 const double* b, const int* ldb, int* info);
1297
/* DSYGST - reduce a real symmetric-definite generalized */
1298
/* eigenproblem to standard form */
1299
La_extern void
1300
F77_NAME(dsygst)(const int* itype, const char* uplo,
1301
                 const int* n, double* a, const int* lda,
1302
                 const double* b, const int* ldb, int* info);
1303
/* DSYGV - compute all the eigenvalues, and optionally, the */
1304
/* eigenvectors of a real generalized symmetric-definite */
1305
/* eigenproblem, of the form A*x=(lambda);*B*x, A*Bx=(lambda);*x, */
1306
/* or B*A*x=(lambda);*x */
1307
La_extern void
1308
F77_NAME(dsygv)(const int* itype, const char* jobz,
1309
                const char* uplo, const int* n,
1310
                double* a, const int* lda,
1311
                double* b, const int* ldb,
1312
                double* w, double* work, const int* lwork,
1313
                int* info);
1314
/* DSYRFS - improve the computed solution to a system of linear */
1315
/* equations when the coefficient matrix is symmetric indefinite, */
1316
/* and provides error bounds and backward error estimates for the */
1317
/* solution */
1318
La_extern void
1319
F77_NAME(dsyrfs)(const char* uplo, const int* n,
1320
                 const int* nrhs,
1321
                 const double* a, const int* lda,
1322
                 const double* af, const int* ldaf,
1323
                 const int* ipiv,
1324
                 const double* b, const int* ldb,
1325
                 double* x, const int* ldx,
1326
                 double* ferr, double* berr,
1327
                 double* work, int* iwork, int* info);
1328

    
1329
/* DSYSV - compute the solution to a real system of linear */
1330
/* equations  A * X = B, */
1331
La_extern void
1332
F77_NAME(dsysv)(const char* uplo, const int* n,
1333
                const int* nrhs,
1334
                double* a, const int* lda, int* ipiv,
1335
                double* b, const int* ldb,
1336
                double* work, const int* lwork, int* info);
1337

    
1338
/* DSYSVX - use the diagonal pivoting factorization to compute */
1339
/* the solution to a real system of linear equations A * X = B, */
1340
La_extern void
1341
F77_NAME(dsysvx)(const int* fact, const char* uplo,
1342
                 const int* n, const int* nrhs,
1343
                 const double* a, const int* lda,
1344
                 double* af, const int* ldaf, int* ipiv,
1345
                 const double* b, const int* ldb,
1346
                 double* x, const int* ldx, double* rcond,
1347
                 double* ferr, double* berr,
1348
                 double* work, const int* lwork,
1349
                 int* iwork, int* info);
1350

    
1351
/* DSYTD2 - reduce a real symmetric matrix A to symmetric */
1352
/* tridiagonal form T by an orthogonal similarity transformation */
1353
La_extern void
1354
F77_NAME(dsytd2)(const char* uplo, const int* n,
1355
                 double* a, const int* lda,
1356
                 double* d, double* e, double* tau,
1357
                 int* info);
1358

    
1359
/* DSYTF2 - compute the factorization of a real symmetric matrix */
1360
/* A using the Bunch-Kaufman diagonal pivoting method */
1361
La_extern void
1362
F77_NAME(dsytf2)(const char* uplo, const int* n,
1363
                 double* a, const int* lda,
1364
                 int* ipiv, int* info);
1365

    
1366
/* DSYTRD - reduce a real symmetric matrix A to real symmetric */
1367
/* tridiagonal form T by an orthogonal similarity transformation */
1368
La_extern void
1369
F77_NAME(dsytrd)(const char* uplo, const int* n,
1370
                 double* a, const int* lda,
1371
                 double* d, double* e, double* tau,
1372
                 double* work, const int* lwork, int* info);
1373

    
1374
/* DSYTRF - compute the factorization of a real symmetric matrix */
1375
/* A using the Bunch-Kaufman diagonal pivoting method */
1376
La_extern void
1377
F77_NAME(dsytrf)(const char* uplo, const int* n,
1378
                 double* a, const int* lda, int* ipiv,
1379
                 double* work, const int* lwork, int* info);
1380

    
1381
/* DSYTRI - compute the inverse of a real symmetric indefinite */
1382
/* matrix A using the factorization A = U*D*U**T or A = L*D*L**T */
1383
/* computed by DSYTRF */
1384
La_extern void
1385
F77_NAME(dsytri)(const char* uplo, const int* n,
1386
                 double* a, const int* lda, const int* ipiv,
1387
                 double* work, int* info);
1388

    
1389
/* DSYTRS - solve a system of linear equations A*X = B with a */
1390
/* real symmetric matrix A using the factorization A = U*D*U**T or */
1391
/* A = L*D*L**T computed by DSYTRF */
1392
La_extern void
1393
F77_NAME(dsytrs)(const char* uplo, const int* n,
1394
                 const int* nrhs,
1395
                 const double* a, const int* lda,
1396
                 const int* ipiv,
1397
                 double* b, const int* ldb, int* info);
1398

    
1399
//* Double precision Triangular Band matrices  -> DTB
1400

    
1401
/* DTBCON - estimate the reciprocal of the condition number of a */
1402
/* triangular band matrix A, in either the 1-norm or the */
1403
/* infinity-norm */
1404
La_extern void
1405
F77_NAME(dtbcon)(const char* norm, const char* uplo,
1406
                 const char* diag, const int* n, const int* kd,
1407
                 const double* ab, const int* ldab,
1408
                 double* rcond, double* work,
1409
                 int* iwork, int* info);
1410
/* DTBRFS - provide error bounds and backward error estimates for */
1411
/* the solution to a system of linear equations with a triangular */
1412
/* band coefficient matrix */
1413
La_extern void
1414
F77_NAME(dtbrfs)(const char* uplo, const char* trans,
1415
                 const char* diag, const int* n, const int* kd,
1416
                 const int* nrhs,
1417
                 const double* ab, const int* ldab,
1418
                 const double* b, const int* ldb,
1419
                 double* x, const int* ldx,
1420
                 double* ferr, double* berr,
1421
                 double* work, int* iwork, int* info);
1422
/* DTBTRS - solve a triangular system of the form   A * X = B or */
1423
/* A**T * X = B,  */
1424
La_extern void
1425
F77_NAME(dtbtrs)(const char* uplo, const char* trans,
1426
                 const char* diag, const int* n,
1427
                 const int* kd, const int* nrhs,
1428
                 const double* ab, const int* ldab,
1429
                 double* b, const int* ldb, int* info);
1430

    
1431
//* Double precision Triangular matrices Generalized problems  -> DTG
1432

    
1433
/* DTGEVC - compute some or all of the right and/or left */
1434
/* generalized eigenvectors of a pair of real upper triangular */
1435
/* matrices (A,B); */
1436
La_extern void
1437
F77_NAME(dtgevc)(const char* side, const char* howmny,
1438
                 const int* select, const int* n,
1439
                 const double* a, const int* lda,
1440
                 const double* b, const int* ldb,
1441
                 double* vl, const int* ldvl,
1442
                 double* vr, const int* ldvr,
1443
                 const int* mm, int* m, double* work, int* info);
1444

    
1445
/* DTGSJA - compute the generalized singular value decomposition */
1446
/* (GSVD); of two real upper triangular (or trapezoidal); matrices */
1447
/* A and B */
1448
La_extern void
1449
F77_NAME(dtgsja)(const char* jobu, const char* jobv, const char* jobq,
1450
                 const int* m, const int* p, const int* n,
1451
                 const int* k, const int* l,
1452
                 double* a, const int* lda,
1453
                 double* b, const int* ldb,
1454
                 const double* tola, const double* tolb,
1455
                 double* alpha, double* beta,
1456
                 double* u, const int* ldu,
1457
                 double* v, const int* ldv,
1458
                 double* q, const int* ldq,
1459
                 double* work, int* ncycle, int* info);
1460

    
1461
//* Double precision Triangular matrices Packed storage  -> DTP
1462

    
1463
/* DTPCON - estimate the reciprocal of the condition number of a */
1464
/* packed triangular matrix A, in either the 1-norm or the */
1465
/* infinity-norm */
1466
La_extern void
1467
F77_NAME(dtpcon)(const char* norm, const char* uplo,
1468
                 const char* diag, const int* n,
1469
                 const double* ap, double* rcond,
1470
                 double* work, int* iwork, int* info);
1471

    
1472
/* DTPRFS - provide error bounds and backward error estimates for */
1473
/* the solution to a system of linear equations with a triangular */
1474
/* packed coefficient matrix */
1475
La_extern void
1476
F77_NAME(dtprfs)(const char* uplo, const char* trans,
1477
                 const char* diag, const int* n,
1478
                 const int* nrhs, const double* ap,
1479
                 const double* b, const int* ldb,
1480
                 double* x, const int* ldx,
1481
                 double* ferr, double* berr,
1482
                 double* work, int* iwork, int* info);
1483
/* DTPTRI - compute the inverse of a real upper or lower */
1484
/* triangular matrix A stored in packed format */
1485
La_extern void
1486
F77_NAME(dtptri)(const char* uplo, const char* diag,
1487
                 const int* n, double* ap, int* info);
1488

    
1489
/* DTPTRS - solve a triangular system of the form   A * X = B or */
1490
/* A**T * X = B, */
1491
La_extern void
1492
F77_NAME(dtptrs)(const char* uplo, const char* trans,
1493
                 const char* diag, const int* n,
1494
                 const int* nrhs, const double* ap,
1495
                 double* b, const int* ldb, int* info);
1496

    
1497

    
1498
//* Double precision TRiangular matrices -> DTR
1499

    
1500
/* DTRCON - estimate the reciprocal of the condition number of a */
1501
/* triangular matrix A, in either the 1-norm or the infinity-norm */
1502
La_extern void
1503
F77_NAME(dtrcon)(const char* norm, const char* uplo,
1504
                 const char* diag, const int* n,
1505
                 const double* a, const int* lda,
1506
                 double* rcond, double* work,
1507
                 int* iwork, int* info);
1508

    
1509
/* DTREVC - compute some or all of the right and/or left */
1510
/* eigenvectors of a real upper quasi-triangular matrix T */
1511
La_extern void
1512
F77_NAME(dtrevc)(const char* side, const char* howmny,
1513
                 const int* select, const int* n,
1514
                 const double* t, const int* ldt,
1515
                 double* vl, const int* ldvl,
1516
                 double* vr, const int* ldvr,
1517
                 const int* mm, int* m, double* work, int* info);
1518

    
1519
/* DTREXC - reorder the real Schur factorization of a real matrix */
1520
/* A = Q*T*Q**T, so that the diagonal block of T with row index */
1521
/* IFST is moved to row ILST */
1522
La_extern void
1523
F77_NAME(dtrexc)(const char* compq, const int* n,
1524
                 double* t, const int* ldt,
1525
                 double* q, const int* ldq,
1526
                 int* ifst, int* ILST,
1527
                 double* work, int* info);
1528

    
1529
/* DTRRFS - provide error bounds and backward error estimates for */
1530
/* the solution to a system of linear equations with a triangular */
1531
/* coefficient matrix */
1532
La_extern void
1533
F77_NAME(dtrrfs)(const char* uplo, const char* trans,
1534
                 const char* diag, const int* n, const int* nrhs,
1535
                 const double* a, const int* lda,
1536
                 const double* b, const int* ldb,
1537
                 double* x, const int* ldx,
1538
                 double* ferr, double* berr,
1539
                 double* work, int* iwork, int* info);
1540

    
1541
/* DTRSEN - reorder the real Schur factorization of a real matrix */
1542
/* A = Q*T*Q**T, so that a selected cluster of eigenvalues appears */
1543
/* in the leading diagonal blocks of the upper quasi-triangular */
1544
/* matrix T, */
1545
La_extern void
1546
F77_NAME(dtrsen)(const char* job, const char* compq,
1547
                 const int* select, const int* n,
1548
                 double* t, const int* ldt,
1549
                 double* q, const int* ldq,
1550
                 double* wr, double* wi,
1551
                 int* m, double* s, double* sep,
1552
                 double* work, const int* lwork,
1553
                 int* iwork, const int* liwork, int* info);
1554

    
1555
/* DTRSNA - estimate reciprocal condition numbers for specified */
1556
/* eigenvalues and/or right eigenvectors of a real upper */
1557
/* quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q */
1558
/* orthogonal); */
1559
La_extern void
1560
F77_NAME(dtrsna)(const char* job, const char* howmny,
1561
                 const int* select, const int* n,
1562
                 const double* t, const int* ldt,
1563
                 const double* vl, const int* ldvl,
1564
                 const double* vr, const int* ldvr,
1565
                 double* s, double* sep, const int* mm,
1566
                 int* m, double* work, const int* lwork,
1567
                 int* iwork, int* info);
1568

    
1569
/* DTRSYL - solve the real Sylvester matrix equation */
1570
La_extern void
1571
F77_NAME(dtrsyl)(const char* trana, const char* tranb,
1572
                 const int* isgn, const int* m, const int* n,
1573
                 const double* a, const int* lda,
1574
                 const double* b, const int* ldb,
1575
                 double* c, const int* ldc,
1576
                 double* scale, int* info);
1577

    
1578
/* DTRTI2 - compute the inverse of a real upper or lower */
1579
/* triangular matrix */
1580
La_extern void
1581
F77_NAME(dtrti2)(const char* uplo, const char* diag,
1582
                 const int* n, double* a, const int* lda,
1583
                 int* info);
1584

    
1585
/* DTRTRI - compute the inverse of a real upper or lower */
1586
/* triangular matrix A */
1587
La_extern void
1588
F77_NAME(dtrtri)(const char* uplo, const char* diag,
1589
                 const int* n, double* a, const int* lda,
1590
                 int* info);
1591

    
1592
/* DTRTRS - solve a triangular system of the form   A * X = B or */
1593
/* A**T * X = B         */
1594
La_extern void
1595
F77_NAME(dtrtrs)(const char* uplo, const char* trans,
1596
                 const char* diag, const int* n, const int* nrhs,
1597
                 const double* a, const int* lda,
1598
                 double* b, const int* ldb, int* info);
1599

    
1600
/* DTZRQF - reduce the M-by-N ( M<=N ); real upper trapezoidal */
1601
/* matrix A to upper triangular form by means of orthogonal */
1602
/* transformations  */
1603
La_extern void
1604
F77_NAME(dtzrqf)(const int* m, const int* n,
1605
                 double* a, const int* lda,
1606
                 double* tau, int* info);
1607

    
1608

    
1609

    
1610
//* Double precision utilities in Lapack 
1611

    
1612
/* DHGEQZ - implement a single-/double-shift version of the QZ */
1613
/* method for finding the generalized eigenvalues */
1614
/* w(j);=(ALPHAR(j); + i*ALPHAI(j););/BETAR(j); of the equation */
1615
/* det( A - w(i); B ); = 0  In addition, the pair A,B may be */
1616
/* reduced to generalized Schur form */
1617
La_extern void
1618
F77_NAME(dhgeqz)(const char* job, const char* compq, const char* compz,
1619
                 const int* n, const int *ILO, const int* IHI,
1620
                 double* a, const int* lda,
1621
                 double* b, const int* ldb,
1622
                 double* alphar, double* alphai, const double* beta,
1623
                 double* q, const int* ldq,
1624
                 double* z, const int* ldz,
1625
                 double* work, const int* lwork, int* info);
1626
/* DHSEIN - use inverse iteration to find specified right and/or */
1627
/* left eigenvectors of a real upper Hessenberg matrix H */
1628
La_extern void
1629
F77_NAME(dhsein)(const char* side, const char* eigsrc,
1630
                 const char* initv, int* select,
1631
                 const int* n, double* h, const int* ldh,
1632
                 double* wr, double* wi,
1633
                 double* vl, const int* ldvl,
1634
                 double* vr, const int* ldvr,
1635
                 const int* mm, int* m, double* work,
1636
                 int* ifaill, int* ifailr, int* info);
1637
/* DHSEQR - compute the eigenvalues of a real upper Hessenberg */
1638
/* matrix H and, optionally, the matrices T and Z from the Schur */
1639
/* decomposition H = Z T Z**T, where T is an upper */
1640
/* quasi-triangular matrix (the Schur form);, and Z is the */
1641
/* orthogonal matrix of Schur vectors */
1642
La_extern void
1643
F77_NAME(dhseqr)(const char* job, const char* compz, const int* n,
1644
                 const int* ilo, const int* ihi,
1645
                 double* h, const int* ldh,
1646
                 double* wr, double* wi,
1647
                 double* z, const int* ldz,
1648
                 double* work, const int* lwork, int* info);
1649
/* DLABAD - take as input the values computed by SLAMCH for */
1650
/* underflow and overflow, and returns the square root of each of */
1651
/* these values if the log of LARGE is sufficiently large */
1652
La_extern void
1653
F77_NAME(dlabad)(double* small, double* large);
1654
/* DLABRD - reduce the first NB rows and columns of a real */
1655
/* general m by n matrix A to upper or lower bidiagonal form by an */
1656
/* orthogonal transformation Q' * A * P, and returns the matrices */
1657
/* X and Y which are needed to apply the transformation to the */
1658
/* unreduced part of A */
1659
La_extern void
1660
F77_NAME(dlabrd)(const int* m, const int* n, const int* nb,
1661
                 double* a, const int* lda, double* d, double* e,
1662
                 double* tauq, double* taup,
1663
                 double* x, const int* ldx, double* y, const int* ldy);
1664
/* DLACON - estimate the 1-norm of a square, real matrix A */
1665
La_extern void
1666
F77_NAME(dlacon)(const int* n, double* v, double* x,
1667
                 int* isgn, double* est, int* kase);
1668
/* DLACPY - copy all or part of a two-dimensional matrix A to */
1669
/* another matrix B */
1670
La_extern void
1671
F77_NAME(dlacpy)(const char* uplo, const int* m, const int* n,
1672
                 const double* a, const int* lda,
1673
                 double* b, const int* ldb);
1674
/* DLADIV - perform complex division in real arithmetic         */
1675
La_extern void
1676
F77_NAME(dladiv)(const double* a, const double* b,
1677
                 const double* c, const double* d,
1678
                 double* p, double* q);
1679
/* DLAE2 - compute the eigenvalues of a 2-by-2 symmetric matrix [ A B ] */
1680
/*                                                                [ B C ] */
1681
La_extern void
1682
F77_NAME(dlae2)(const double* a, const double* b, const double* c,
1683
                double* rt1, double* rt2);
1684
/* DLAEBZ - contain the iteration loops which compute and use the */
1685
/* function N(w);, which is the count of eigenvalues of a */
1686
/* symmetric tridiagonal matrix T less than or equal to its */
1687
/* argument w  */
1688
La_extern void
1689
F77_NAME(dlaebz)(const int* ijob, const int* nitmax, const int* n,
1690
                 const int* mmax, const int* minp, const int* nbmin,
1691
                 const double* abstol, const double* reltol,
1692
                 const double* pivmin, double* d, double* e,
1693
                 double* e2, int* nval, double* ab, double* c,
1694
                 int* mout, int* nab, double* work, int* iwork,
1695
                 int* info);
1696
/* DLAED0 - compute all eigenvalues and corresponding */
1697
/* eigenvectors of a symmetric tridiagonal matrix using the divide */
1698
/* and conquer method */
1699
La_extern void
1700
F77_NAME(dlaed0)(const int* icompq, const int* qsiz, const int* n,
1701
                 double* d, double* e, double* q, const int* ldq,
1702
                 double* qstore, const int* ldqs,
1703
                 double* work, int* iwork, int* info);
1704
/* DLAED1 - compute the updated eigensystem of a diagonal matrix */
1705
/* after modification by a rank-one symmetric matrix */
1706
La_extern void
1707
F77_NAME(dlaed1)(const int* n, double* d, double* q, const int* ldq,
1708
                 int* indxq, const double* rho, const int* cutpnt,
1709
                 double* work, int* iwork, int* info);
1710
/* DLAED2 - merge the two sets of eigenvalues together into a */
1711
/* single sorted set */
1712
La_extern void
1713
F77_NAME(dlaed2)(const int* k, const int* n, double* d,
1714
                 double* q, const int* ldq, int* indxq,
1715
                 double* rho, const int* cutpnt, double* z,
1716
                 double* dlamda, double* q2, const int *ldq2,
1717
                 int* indxc, int* w, int* indxp, int* indx,
1718
                 int* coltyp, int* info);
1719
/* DLAED3 - find the roots of the secular equation, as defined by */
1720
/* the values in double* d, W, and RHO, between KSTART and KSTOP */
1721
La_extern void
1722
F77_NAME(dlaed3)(const int* k, const int* kstart,
1723
                 const int *kstop, const int* n,
1724
                 double* d, double* q, const int* ldq,
1725
                 const double* rho, const int* cutpnt,
1726
                 double* dlamda, int* q2, const int* ldq2,
1727
                 int* indxc, int* ctot, double* w,
1728
                 double* s, const int* lds, int* info);
1729
/* DLAED4 - subroutine computes the I-th updated eigenvalue of a */
1730
/* symmetric rank-one modification to a diagonal matrix whose */
1731
/* elements are given in the array d, and that         D(i); < D(j); for */
1732
/* i < j  and that RHO > 0 */
1733
La_extern void
1734
F77_NAME(dlaed4)(const int* n, const int* i, const double* d,
1735
                 const double* z, const double* delta,
1736
                 const double* rho, double* dlam, int* info);
1737
/* DLAED5 - subroutine computes the I-th eigenvalue of a */
1738
/* symmetric rank-one modification of a 2-by-2 diagonal matrix */
1739
/* diag( D ); + RHO  The diagonal elements in the array D are */
1740
/* assumed to satisfy        D(i); < D(j); for i < j         */
1741
La_extern void
1742
F77_NAME(dlaed5)(const int* i, const double* d, const double* z,
1743
                 double* delta, const double* rho, double* dlam);
1744
/* DLAED6 - compute the positive or negative root (closest to the */
1745
/* origin); of        z(1); z(2); z(3); f(x); = rho + --------- + */
1746
/* ---------- + ---------  d(1);-x d(2);-x d(3);-x  It is assumed */
1747
/* that          if ORGATI = .true  */
1748
La_extern void
1749
F77_NAME(dlaed6)(const int* kniter, const int* orgati,
1750
                 const double* rho, const double* d,
1751
                 const double* z, const double* finit,
1752
                 double* tau, int* info);
1753
/* DLAED7 - compute the updated eigensystem of a diagonal matrix */
1754
/* after modification by a rank-one symmetric matrix */
1755
La_extern void
1756
F77_NAME(dlaed7)(const int* icompq, const int* n,
1757
                 const int* qsiz, const int* tlvls,
1758
                 const int* curlvl, const int* curpbm,
1759
                 double* d, double* q, const int* ldq,
1760
                 int* indxq, const double* rho, const int* cutpnt,
1761
                 double* qstore, double* qptr, const int* prmptr,
1762
                 const int* perm, const int* givptr,
1763
                 const int* givcol, const double* givnum,
1764
                 double* work, int* iwork, int* info);
1765
/* DLAED8 - merge the two sets of eigenvalues together into a */
1766
/* single sorted set */
1767
La_extern void
1768
F77_NAME(dlaed8)(const int* icompq, const int* k,
1769
                 const int* n, const int* qsiz,
1770
                 double* d, double* q, const int* ldq,
1771
                 const int* indxq, double* rho,
1772
                 const int* cutpnt, const double* z,
1773
                 double* dlamda, double* q2, const int* ldq2,
1774
                 double* w, int* perm, int* givptr,
1775
                 int* givcol, double* givnum, int* indxp,
1776
                 int* indx, int* info);
1777
/* DLAED9 - find the roots of the secular equation, as defined by */
1778
/* the values in double* d, Z, and RHO, between KSTART and KSTOP */
1779
La_extern void
1780
F77_NAME(dlaed9)(const int* k, const int* kstart, const int* kstop,
1781
                 const int* n, double* d, double* q, const int* ldq,
1782
                 const double* rho, const double* dlamda,
1783
                 const double* w, double* s, const int* lds, int* info);
1784
/* DLAEDA - compute the Z vector corresponding to the merge step */
1785
/* in the CURLVLth step of the merge process with TLVLS steps for */
1786
/* the CURPBMth problem */
1787
La_extern void
1788
F77_NAME(dlaeda)(const int* n, const int* tlvls, const int* curlvl,
1789
                 const int* curpbm, const int* prmptr, const int* perm,
1790
                 const int* givptr, const int* givcol,
1791
                 const double* givnum, const double* q,
1792
                 const int* qptr, double* z, double* ztemp, int* info);
1793
/* DLAEIN - use inverse iteration to find a right or left */
1794
/* eigenvector corresponding to the eigenvalue (WR,WI); of a real */
1795
/* upper Hessenberg matrix H */
1796
La_extern void
1797
F77_NAME(dlaein)(const int* rightv, const int* noinit, const int* n,
1798
                 const double* h, const int* ldh,
1799
                 const double* wr, const double* wi,
1800
                 double* vr, double* vi,
1801
                 double* b, const int* ldb, double* work,
1802
                 const double* eps3, const double* smlnum,
1803
                 const double* bignum, int* info);
1804
/* DLAEV2 - compute the eigendecomposition of a 2-by-2 symmetric */
1805
/* matrix  [ A B ]  [ B C ] */
1806
La_extern void
1807
F77_NAME(dlaev2)(const double* a, const double* b, const double* c,
1808
                 double* rt1, double* rt2, double* cs1, double *sn1);
1809
/* DLAEXC - swap adjacent diagonal blocks T11 and T22 of order 1 */
1810
/* or 2 in an upper quasi-triangular matrix T by an orthogonal */
1811
/* similarity transformation */
1812
La_extern void
1813
F77_NAME(dlaexc)(const int* wantq, const int* n, double* t, const int* ldt,
1814
                  double* q, const int* ldq, const int* j1,
1815
                 const int* n1, const int* n2, double* work, int* info);
1816
/* DLAG2 - compute the eigenvalues of a 2 x 2 generalized */
1817
/* eigenvalue problem A - w B, with scaling as necessary to aextern void */
1818
/* over-/underflow */
1819
La_extern void
1820
F77_NAME(dlag2)(const double* a, const int* lda, const double* b,
1821
                const int* ldb, const double* safmin,
1822
                double* scale1, double* scale2,
1823
                double* wr1, double* wr2, double* wi);
1824
/* DLAGS2 - compute 2-by-2 orthogonal matrices U, V and Q, such */
1825
/* that if ( UPPER ); then   U'*A*Q = U'*( A1 A2 );*Q = ( x 0 ); */
1826
/* ( 0 A3 ); ( x x ); and  V'*B*Q = V'*( B1 B2 );*Q = ( x 0 );        ( */
1827
/* 0 B3 ); ( x x );  or if ( .NOT.UPPER ); then          U'*A*Q = U'*( A1 */
1828
/* 0 );*Q = ( x x );  ( A2 A3 ); ( 0 x ); and  V'*B*Q = V'*( B1 0 */
1829
/* );*Q = ( x x );  ( B2 B3 ); ( 0 x );         The rows of the */
1830
/* transformed A and B are parallel, where   U = ( CSU SNU );, V = */
1831
/* ( CSV SNV );, Q = ( CSQ SNQ );  ( -SNU CSU ); ( -SNV CSV ); ( */
1832
/* -SNQ CSQ );        Z' denotes the transpose of Z */
1833
La_extern void
1834
F77_NAME(dlags2)(const int* upper,
1835
                 const double* a1, const double* a2, const double* a3,
1836
                 const double* b1, const double* b2, const double* b3,
1837
                 double* csu, double* snu,
1838
                 double* csv, double* snv, double *csq, double *snq);
1839
/* DLAGTF - factorize the matrix (T - lambda*I);, where T is an n */
1840
/* by n tridiagonal matrix and lambda is a scalar, as        T - */
1841
/* lambda*I = PLU, */
1842
La_extern void
1843
F77_NAME(dlagtf)(const int* n, double* a, const double* lambda,
1844
                 double* b, double* c, const double *tol,
1845
                 double* d, int* in, int* info);
1846
/* DLAGTM - perform a matrix-vector product of the form          B := */
1847
/* alpha * A * X + beta * B  where A is a tridiagonal matrix of */
1848
/* order N, B and X are N by NRHS matrices, and alpha and beta are */
1849
/* real scalars, each of which may be 0., 1., or -1 */
1850
La_extern void
1851
F77_NAME(dlagtm)(const char* trans, const int* n, const int* nrhs,
1852
                 const double* alpha, const double* dl,
1853
                 const double* d, const double* du,
1854
                 const double* x, const int* ldx, const double* beta,
1855
                 double* b, const int* ldb);
1856
/* DLAGTS - may be used to solve one of the systems of equations */
1857
/* (T - lambda*I);*x = y or (T - lambda*I);'*x = y, */
1858
La_extern void
1859
F77_NAME(dlagts)(const int* job, const int* n,
1860
                 const double* a, const double* b,
1861
                 const double* c, const double* d,
1862
                 const int* in, double* y, double* tol, int* info);
1863
/* DLAHQR - an auxiliary routine called by DHSEQR to update the */
1864
/* eigenvalues and Schur decomposition already computed by DHSEQR, */
1865
/* by dealing with the Hessenberg submatrix in rows and columns */
1866
/* ILO to IHI */
1867
La_extern void
1868
F77_NAME(dlahqr)(const int* wantt, const int* wantz, const int* n,
1869
                 const int* ilo, const int* ihi,
1870
                 double* H, const int* ldh, double* wr, double* wi,
1871
                 const int* iloz, const int* ihiz,
1872
                 double* z, const int* ldz, int* info);
1873
/* DLAHRD - reduce the first NB columns of a real general */
1874
/* n-by-(n-k+1); matrix A so that elements below the k-th */
1875
/* subdiagonal are zero */
1876
La_extern void
1877
F77_NAME(dlahrd)(const int* n, const int* k, const int* nb,
1878
                 double* a, const int* lda,
1879
                 double* tau, double* t, const int* ldt,
1880
                 double* y, const int* ldy);
1881
/* DLAIC1 - apply one step of incremental condition estimation in */
1882
/* its simplest version */
1883
La_extern void
1884
F77_NAME(dlaic1)(const int* job, const int* j, const double* x,
1885
                 const double* sest, const double* w,
1886
                 const double* gamma, double* sestpr,
1887
                 double* s, double* c);
1888
/* DLALN2 - solve a system of the form (ca A - w D ); X = s B or */
1889
/* (ca A' - w D); X = s B with possible scaling ("s"); and */
1890
/* perturbation of A */
1891
La_extern void
1892
F77_NAME(dlaln2)(const int* ltrans, const int* na, const int* nw,
1893
                 const double* smin, const double* ca,
1894
                 const double* a, const int* lda,
1895
                 const double* d1, const double* d2,
1896
                 const double* b, const int* ldb,
1897
                 const double* wr, const double* wi,
1898
                 double* x, const int* ldx, double* scale,
1899
                 double* xnorm, int* info);
1900
/* DLAMCH - determine double precision machine parameters */
1901
La_extern double
1902
F77_NAME(dlamch)(const char* cmach);
1903
/* DLAMRG - will create a permutation list which will merge the */
1904
/* elements of A (which is composed of two independently sorted */
1905
/* sets); into a single set which is sorted in ascending order */
1906
La_extern void
1907
F77_NAME(dlamrg)(const int* n1, const int* n2, const double* a,
1908
                 const int* dtrd1, const int* dtrd2, int* index);
1909
/* DLANGB - return the value of the one norm, or the Frobenius */
1910
/* norm, or the infinity norm, or the element of largest absolute */
1911
/* value of an n by n band matrix A, with kl sub-diagonals and ku */
1912
/* super-diagonals */
1913
La_extern double
1914
F77_NAME(dlangb)(const char* norm, const int* n,
1915
                 const int* kl, const int* ku, const double* ab,
1916
                 const int* ldab, double* work);
1917
/* DLANGE - return the value of the one norm, or the Frobenius */
1918
/* norm, or the infinity norm, or the element of largest absolute */
1919
/* value of a real matrix A */
1920
La_extern double
1921
F77_NAME(dlange)(const char* norm, const int* m, const int* n,
1922
                 const double* a, const int* lda, double* work);
1923
/* DLANGT - return the value of the one norm, or the Frobenius */
1924
/* norm, or the infinity norm, or the element of largest absolute */
1925
/* value of a real tridiagonal matrix A */
1926
La_extern double
1927
F77_NAME(dlangt)(const char* norm, const int* n,
1928
                 const double* dl, const double* d,
1929
                 const double* du);
1930
/* DLANHS - return the value of the one norm, or the Frobenius */
1931
/* norm, or the infinity norm, or the element of largest absolute */
1932
/* value of a Hessenberg matrix A */
1933
La_extern double
1934
F77_NAME(dlanhs)(const char* norm, const int* n,
1935
                 const double* a, const int* lda, double* work);
1936
/* DLANSB - return the value of the one norm, or the Frobenius */
1937
/* norm, or the infinity norm, or the element of largest absolute */
1938
/* value of an n by n symmetric band matrix A, with k */
1939
/* super-diagonals */
1940
La_extern double
1941
F77_NAME(dlansb)(const char* norm, const char* uplo,
1942
                 const int* n, const int* k,
1943
                 const double* ab, const int* ldab, double* work);
1944
/* DLANSP - return the value of the one norm, or the Frobenius */
1945
/* norm, or the infinity norm, or the element of largest absolute */
1946
/* value of a real symmetric matrix A, supplied in packed form */
1947
La_extern double
1948
F77_NAME(dlansp)(const char* norm, const char* uplo,
1949
                 const int* n, const double* ap, double* work);
1950
/* DLANST - return the value of the one norm, or the Frobenius */
1951
/* norm, or the infinity norm, or the element of largest absolute */
1952
/* value of a real symmetric tridiagonal matrix A */
1953
La_extern double
1954
F77_NAME(dlanst)(const char* norm, const int* n,
1955
                 const double* d, const double* e);
1956
/* DLANSY - return the value of the one norm, or the Frobenius */
1957
/* norm, or the infinity norm, or the element of largest absolute */
1958
/* value of a real symmetric matrix A */
1959
La_extern double
1960
F77_NAME(dlansy)(const char* norm, const char* uplo, const int* n,
1961
                 const double* a, const int* lda, double* work);
1962
/* DLANTB - return the value of the one norm, or the Frobenius */
1963
/* norm, or the infinity norm, or the element of largest absolute */
1964
/* value of an n by n triangular band matrix A, with ( k + 1 ) diagonals */
1965
La_extern double
1966
F77_NAME(dlantb)(const char* norm, const char* uplo,
1967
                 const char* diag, const int* n, const int* k,
1968
                 const double* ab, const int* ldab, double* work);
1969
/* DLANTP - return the value of the one norm, or the Frobenius */
1970
/* norm, or the infinity norm, or the element of largest absolute */
1971
/* value of a triangular matrix A, supplied in packed form */
1972
La_extern double
1973
F77_NAME(dlantp)(const char* norm, const char* uplo, const char* diag,
1974
                 const int* n, const double* ap, double* work);
1975
/* DLANTR - return the value of the one norm, or the Frobenius */
1976
/* norm, or the infinity norm, or the element of largest absolute */
1977
/* value of a trapezoidal or triangular matrix A */
1978
La_extern double
1979
F77_NAME(dlantr)(const char* norm, const char* uplo,
1980
                 const char* diag, const int* m, const int* n,
1981
                 const double* a, const int* lda, double* work);
1982
/* DLANV2 - compute the Schur factorization of a real 2-by-2 */
1983
/* nonsymmetric matrix in standard form */
1984
La_extern void
1985
F77_NAME(dlanv2)(double* a, double* b, double* c, double* d,
1986
                 double* rt1r, double* rt1i, double* rt2r, double* rt2i,
1987
                 double* cs, double *sn);
1988
/* DLAPLL - two column vectors X and Y, let A = ( X Y ); */
1989
La_extern void
1990
F77_NAME(dlapll)(const int* n, double* x, const int* incx,
1991
                 double* y, const int* incy, double* ssmin);
1992
/* DLAPMT - rearrange the columns of the M by N matrix X as */
1993
/* specified by the permutation K(1);,K(2);,...,K(N); of the */
1994
/* integers 1,...,N */
1995
La_extern void
1996
F77_NAME(dlapmt)(const int* forwrd, const int* m, const int* n,
1997
                 double* x, const int* ldx, const int* k);
1998
/* DLAPY2 - return sqrt(x**2+y**2);, taking care not to cause */
1999
/* unnecessary overflow */
2000
La_extern double
2001
F77_NAME(dlapy2)(const double* x, const double* y);
2002
/* DLAPY3 - return sqrt(x**2+y**2+z**2);, taking care not to */
2003
/* cause unnecessary overflow */
2004
La_extern double
2005
F77_NAME(dlapy3)(const double* x, const double* y, const double* z);
2006
/* DLAQGB - equilibrate a general M by N band matrix A with KL */
2007
/* subdiagonals and KU superdiagonals using the row and scaling */
2008
/* factors in the vectors R and C */
2009
La_extern void
2010
F77_NAME(dlaqgb)(const int* m, const int* n,
2011
                 const int* kl, const int* ku,
2012
                 double* ab, const int* ldab,
2013
                 double* r, double* c,
2014
                 double* rowcnd, double* colcnd,
2015
                 const double* amax, char* equed);
2016
/* DLAQGE - equilibrate a general M by N matrix A using the row */
2017
/* and scaling factors in the vectors R and C */
2018
La_extern void
2019
F77_NAME(dlaqge)(const int* m, const int* n,
2020
                 double* a, const int* lda,
2021
                 double* r, double* c,
2022
                 double* rowcnd, double* colcnd,
2023
                 const double* amax, char* equed);
2024
/* DLAQSB - equilibrate a symmetric band matrix A using the */
2025
/* scaling factors in the vector S */
2026
La_extern void
2027
F77_NAME(dlaqsb)(const char* uplo, const int* n, const int* kd,
2028
                 double* ab, const int* ldab, const double* s,
2029
                 const double* scond, const double* amax, char* equed);
2030
/* DLAQSP - equilibrate a symmetric matrix A using the scaling */
2031
/* factors in the vector S */
2032
La_extern void
2033
F77_NAME(dlaqsp)(const char* uplo, const int* n,
2034
                 double* ap, const double* s, const double* scond,
2035
                 const double* amax, int* equed);
2036
/* DLAQSY - equilibrate a symmetric matrix A using the scaling */
2037
/* factors in the vector S */
2038
La_extern void
2039
F77_NAME(dlaqsy)(const char* uplo, const int* n,
2040
                 double* a, const int* lda,
2041
                 const double* s, const double* scond,
2042
                 const double* amax, int* equed);
2043
/* DLAQTR - solve the real quasi-triangular system   */
2044
/* op(T) * p = scale*c */
2045
La_extern void
2046
F77_NAME(dlaqtr)(const int* ltran, const int* lreal, const int* n,
2047
                 const double* t, const int* ldt,
2048
                 const double* b, const double* w,
2049
                 double* scale, double* x, double* work, int* info);
2050
/* DLAR2V - apply a vector of real plane rotations from both */
2051
/* sides to a sequence of 2-by-2 real symmetric matrices, defined */
2052
/* by the elements of the vectors x, y and z  */
2053
La_extern void
2054
F77_NAME(dlar2v)(const int* n, double* x, double* y,
2055
                 double* z, const int* incx,
2056
                 const double* c, const double* s,
2057
                 const int* incc);
2058
/* DLARF - apply a real elementary reflector H to a real m by n */
2059
/* matrix C, from either the left or the right */
2060
La_extern void
2061
F77_NAME(dlarf)(const char* side, const int* m, const int* n,
2062
                const double* v, const int* incv, const double* tau,
2063
                double* c, const int* ldc, double* work);
2064
/* DLARFB - apply a real block reflector H or its transpose H' */
2065
/* to a real m by n matrix C, from either the left or the right */
2066
La_extern void
2067
F77_NAME(dlarfb)(const char* side, const char* trans,
2068
                 const char* direct, const char* storev,
2069
                 const int* m, const int* n, const int* k,
2070
                 const double* v, const int* ldv,
2071
                 const double* t, const int* ldt,
2072
                 double* c, const int* ldc,
2073
                 double* work, const int* lwork);
2074
/* DLARFG - generate a real elementary reflector H of order n, */
2075
/* such that   H * ( alpha ) = ( beta ), H' * H = I */
2076
La_extern void
2077
F77_NAME(dlarfg)(const int* n, const double* alpha,
2078
                 double* x, const int* incx, double* tau);
2079
/* DLARFT - form the triangular factor T of a real block */
2080
/* reflector H of order n, which is defined as a product of k */
2081
/* elementary reflectors */
2082
La_extern void
2083
F77_NAME(dlarft)(const char* direct, const char* storev,
2084
                 const int* n, const int* k, double* v, const int* ldv,
2085
                 const double* tau, double* t, const int* ldt);
2086
/* DLARFX - apply a real elementary reflector H to a real m by n */
2087
/* matrix C, from either the left or the right */
2088
La_extern void
2089
F77_NAME(dlarfx)(const char* side, const int* m, const int* n,
2090
                 const double* v, const double* tau,
2091
                 double* c, const int* ldc, double* work);
2092
/* DLARGV - generate a vector of real plane rotations, determined */
2093
/* by elements of the real vectors x and y */
2094
La_extern void
2095
F77_NAME(dlargv)(const int* n, double* x, const int* incx,
2096
                 double* y, const int* incy, double* c, const int* incc);
2097
/* DLARNV - return a vector of n random real numbers from a */
2098
/* uniform or normal distribution */
2099
La_extern void
2100
F77_NAME(dlarnv)(const int* idist, int* iseed, const int* n, double* x);
2101
/* DLARTG - generate a plane rotation so that        [ CS SN ]  */
2102
La_extern void
2103
F77_NAME(dlartg)(const double* f, const double* g, double* cs,
2104
                 double* sn, double *r);
2105
/* DLARTV - apply a vector of real plane rotations to elements of */
2106
/* the real vectors x and y */
2107
La_extern void
2108
F77_NAME(dlartv)(const int* n, double* x, const int* incx,
2109
                 double* y, const int* incy,
2110
                 const double* c, const double* s,
2111
                 const int* incc);
2112
/* DLARUV - return a vector of n random real numbers from a */
2113
/* uniform (0,1); */
2114
La_extern void
2115
F77_NAME(dlaruv)(int* iseed, const int* n, double* x);
2116

    
2117
/* DLAS2 - compute the singular values of the 2-by-2 matrix */
2118
/* [ F G ]  [ 0 H ] */
2119
La_extern void
2120
F77_NAME(dlas2)(const double* f, const double* g, const double* h,
2121
                 double* ssmin, double* ssmax);
2122

    
2123
/* DLASCL - multiply the M by N real matrix A by the real scalar */
2124
/* CTO/CFROM */
2125
La_extern void
2126
F77_NAME(dlascl)(const char* type,
2127
                 const int* kl,const int* ku,
2128
                 double* cfrom, double* cto,
2129
                 const int* m, const int* n,
2130
                 double* a, const int* lda, int* info);
2131

    
2132
/* DLASET - initialize an m-by-n matrix A to BETA on the diagonal */
2133
/* and ALPHA on the offdiagonals */
2134
La_extern void
2135
F77_NAME(dlaset)(const char* uplo, const int* m, const int* n,
2136
                 const double* alpha, const double* beta,
2137
                 double* a, const int* lda);
2138
/* DLASQ1 - DLASQ1 computes the singular values of a real N-by-N */
2139
/* bidiagonal  matrix with diagonal D and off-diagonal E */
2140
La_extern void
2141
F77_NAME(dlasq1)(const int* n, double* d, double* e,
2142
                 double* work, int* info);
2143
/* DLASQ2 - DLASQ2 computes the singular values of a real N-by-N */
2144
/* unreduced  bidiagonal matrix with squared diagonal elements in */
2145
/* Q and  squared off-diagonal elements in E */
2146
La_extern void
2147
F77_NAME(dlasq2)(const int* m, double* q, double* e,
2148
                 double* qq, double* ee, const double* eps,
2149
                 const double* tol2, const double* small2,
2150
                 double* sup, int* kend, int* info);
2151
/* DLASQ3 - DLASQ3 is the workhorse of the whole bidiagonal SVD */
2152
/* algorithm */
2153
La_extern void
2154
F77_NAME(dlasq3)(int* n, double* q, double* e, double* qq,
2155
                 double* ee, double* sup, double *sigma,
2156
                 int* kend, int* off, int* iphase,
2157
                 const int* iconv, const double* eps,
2158
                 const double* tol2, const double* small2);
2159
/* DLASQ4 - DLASQ4 estimates TAU, the smallest eigenvalue of a */
2160
/* matrix */
2161
La_extern void
2162
F77_NAME(dlasq4)(const int* n, const double* q, const double* e,
2163
                 double* tau, double* sup);
2164
/* DLASR - perform the transformation        A := P*A, when SIDE = 'L' */
2165
/* or 'l' ( Left-hand side );        A := A*P', when SIDE = 'R' or 'r' */
2166
/* ( Right-hand side );         where A is an m by n real matrix and P is */
2167
/* an orthogonal matrix, */
2168
La_extern void
2169
F77_NAME(dlasr)(const char* side, const char* pivot,
2170
                const char* direct, const int* m, const int* n,
2171
                const double* c, const double* s,
2172
                double* a, const int* lda);
2173
/* DLASRT - the numbers in D in increasing order (if ID = 'I'); */
2174
/* or in decreasing order (if ID = 'D' ); */
2175
La_extern void
2176
F77_NAME(dlasrt)(const char* id, const int* n, double* d, int* info);
2177
/* DLASSQ - return the values scl and smsq such that   ( scl**2 */
2178
/* );*smsq = x( 1 );**2 +...+ x( n );**2 + ( scale**2 );*sumsq, */
2179
La_extern void
2180
F77_NAME(dlassq)(const int* n, const double* x, const int* incx,
2181
                 double* scale, double* sumsq);
2182
/* DLASV2 - compute the singular value decomposition of a 2-by-2 */
2183
/* triangular matrix  [ F G ]  [ 0 H ] */
2184
La_extern void
2185
F77_NAME(dlasv2)(const double* f, const double* g, const double* h,
2186
                 double* ssmin, double* ssmax, double* snr, double* csr,
2187
                 double* snl, double* csl);
2188
/* DLASWP - perform a series of row interchanges on the matrix A */
2189
La_extern void
2190
F77_NAME(dlaswp)(const int* n, double* a, const int* lda,
2191
                 const int* k1, const int* k2,
2192
                 const int* ipiv, const int* incx);
2193
/* DLASY2 - solve for the N1 by N2 matrix double* x, 1 <= N1,N2 <= 2, in */
2194
/* op(TL);*X + ISGN*X*op(TR); = SCALE*B, */
2195
La_extern void
2196
F77_NAME(dlasy2)(const int* ltranl, const int* ltranr,
2197
                 const int* isgn, const int* n1, const int* n2,
2198
                 const double* tl, const int* ldtl,
2199
                 const double* tr, const int* ldtr,
2200
                 const double* b, const int* ldb,
2201
                 double* scale, double* x, const int* ldx,
2202
                 double* xnorm, int* info);
2203
/* DLASYF - compute a partial factorization of a real symmetric */
2204
/* matrix A using the Bunch-Kaufman diagonal pivoting method */
2205
La_extern void
2206
F77_NAME(dlasyf)(const char* uplo, const int* n,
2207
                 const int* nb, const int* kb,
2208
                 double* a, const int* lda, int* ipiv,
2209
                 double* w, const int* ldw, int* info);
2210
/* DLATBS - 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 band matrix */
2213
La_extern void
2214
F77_NAME(dlatbs)(const char* uplo, const char* trans,
2215
                 const char* diag, const char* normin,
2216
                 const int* n, const int* kd,
2217
                 const double* ab, const int* ldab,
2218
                 double* x, double* scale, double* cnorm, int* info);
2219
/* DLATPS - solve one of the triangular systems          A *x = s*b or */
2220
/* A'*x = s*b  with scaling to prevent overflow, where A is an */
2221
/* upper or lower triangular matrix stored in packed form */
2222
La_extern void
2223
F77_NAME(dlatps)(const char* uplo, const char* trans,
2224
                 const char* diag, const char* normin,
2225
                 const int* n, const double* ap,
2226
                 double* x, double* scale, double* cnorm, int* info);
2227
/* DLATRD - reduce NB rows and columns of a real symmetric matrix */
2228
/* A to symmetric tridiagonal form by an orthogonal similarity */
2229
/* transformation Q' * A * Q, and returns the matrices V and W */
2230
/* which are needed to apply the transformation to the unreduced */
2231
/* part of A */
2232
La_extern void
2233
F77_NAME(dlatrd)(const char* uplo, const int* n, const int* nb,
2234
                 double* a, const int* lda, double* e, double* tau,
2235
                 double* w, const int* ldw);
2236
/* DLATRS - solve one of the triangular systems          A *x = s*b or */
2237
/* A'*x = s*b  with scaling to prevent overflow */
2238
La_extern void
2239
F77_NAME(dlatrs)(const char* uplo, const char* trans,
2240
                 const char* diag, const char* normin,
2241
                 const int* n, const double* a, const int* lda,
2242
                 double* x, double* scale, double* cnorm, int* info);
2243
/* DLATZM - apply a Householder matrix generated by DTZRQF to a */
2244
/* matrix */
2245
La_extern void
2246
F77_NAME(dlatzm)(const char* side, const int* m, const int* n,
2247
                 const double* v, const int* incv,
2248
                 const double* tau, double* c1, double* c2,
2249
                 const int* ldc, double* work);
2250
/* DLAUU2 - compute the product U * U' or L' * const int* l, where the */
2251
/* triangular factor U or L is stored in the upper or lower */
2252
/* triangular part of the array A */
2253
La_extern void
2254
F77_NAME(dlauu2)(const char* uplo, const int* n,
2255
                 double* a, const int* lda, int* info);
2256
/* DLAUUM - compute the product U * U' or L' * L, where the */
2257
/* triangular factor U or L is stored in the upper or lower */
2258
/* triangular part of the array A */
2259
La_extern void
2260
F77_NAME(dlauum)(const char* uplo, const int* n,
2261
                 double* a, const int* lda, int* info);
2262

    
2263
/* ======================================================================== */
2264

    
2265

    
2266
//* Selected Double Complex Lapack Routines
2267
/*  ========
2268
 */
2269

    
2270
/* IZMAX1 finds the index of the element whose real part has maximum
2271
 * absolute value. */
2272
La_extern int
2273
F77_NAME(izmax1)(const int *n, Rcomplex *cx, const int *incx);
2274

    
2275

    
2276
/*  ZGECON estimates the reciprocal of the condition number of a general
2277
 *  complex matrix A, in either the 1-norm or the infinity-norm, using
2278
 *  the LU factorization computed by ZGETRF.
2279
 */
2280
La_extern void
2281
F77_NAME(zgecon)(const char *norm, const int *n,
2282
                 const Rcomplex *a, const int *lda,
2283
                 const double *anorm, double *rcond,
2284
                 Rcomplex *work, double *rwork, int *info);
2285

    
2286
/* ZGESV computes the solution to a complex system of linear equations */
2287
La_extern void
2288
F77_NAME(zgesv)(const int *n, const int *nrhs, Rcomplex *a,
2289
                const int *lda, int *ipiv, Rcomplex *b,
2290
                const int *ldb, int *info);
2291

    
2292
/*  ZGEQP3 computes a QR factorization with column pivoting */
2293
La_extern void
2294
F77_NAME(zgeqp3)(const int *m, const int *n,
2295
                 Rcomplex *a, const int *lda,
2296
                 int *jpvt, Rcomplex *tau,
2297
                 Rcomplex *work, const int *lwork,
2298
                 double *rwork, int *info);
2299

    
2300
/* ZUNMQR applies Q or Q**H from the Left or Right */
2301
La_extern void
2302
F77_NAME(zunmqr)(const char *side, const char *trans,
2303
                 const int *m, const int *n, const int *k,
2304
                 Rcomplex *a, const int *lda,
2305
                 Rcomplex *tau,
2306
                 Rcomplex *c, const int *ldc,
2307
                 Rcomplex *work, const int *lwork, int *info);
2308

    
2309
/*  ZTRTRS solves triangular systems */
2310
La_extern void
2311
F77_NAME(ztrtrs)(const char *uplo, const char *trans, const char *diag,
2312
                 const int *n, const int *nrhs,
2313
                 Rcomplex *a, const int *lda,
2314
                 Rcomplex *b, const int *ldb, int *info);
2315
/* ZGESVD - compute the singular value decomposition (SVD); of a   */
2316
/* real M-by-N matrix A, optionally computing the left and/or           */
2317
/* right singular vectors                                           */
2318
La_extern void
2319
F77_NAME(zgesvd)(const char *jobu, const char *jobvt,
2320
                 const int *m, const int *n,
2321
                 Rcomplex *a, const int *lda, double *s,
2322
                 Rcomplex *u, const int *ldu,
2323
                 Rcomplex *vt, const int *ldvt,
2324
                 Rcomplex *work, const int *lwork, double *rwork,
2325
                 int *info);
2326

    
2327
/* ZGHEEV - compute all eigenvalues and, optionally, eigenvectors */
2328
/* of a Hermitian matrix A */
2329
La_extern void
2330
F77_NAME(zheev)(const char *jobz, const char *uplo,
2331
                const int *n, Rcomplex *a, const int *lda,
2332
                double *w, Rcomplex *work, const int *lwork,
2333
                double *rwork, int *info);
2334

    
2335
/* ZGGEEV - compute all eigenvalues and, optionally, eigenvectors */
2336
/* of a complex non-symmetric matrix A */
2337
La_extern void
2338
F77_NAME(zgeev)(const char *jobvl, const char *jobvr,
2339
                const int *n, Rcomplex *a, const int *lda,
2340
                Rcomplex *wr, Rcomplex *vl, const int *ldvl,
2341
                Rcomplex *vr, const int *ldvr,
2342
                Rcomplex *work, const int *lwork,
2343
                double *rwork, int *info);
2344

    
2345

    
2346
/* NOTE: The following entry points were traditionally in this file,
2347
   but are not provided by R's libRlapack */
2348

    
2349
/* DZSUM1 - take the sum of the absolute values of a complex */
2350
/* vector and returns a double precision result         */
2351
La_extern double
2352
F77_NAME(dzsum1)(const int *n, Rcomplex *CX, const int *incx);
2353

    
2354
/*  ZLACN2 estimates the 1-norm of a square, complex matrix A.
2355
 *  Reverse communication is used for evaluating matrix-vector products.
2356
*/
2357
La_extern void
2358
F77_NAME(zlacn2)(const int *n, Rcomplex *v, Rcomplex *x,
2359
                 double *est, int *kase, int *isave);
2360

    
2361
/* ZLANTR  -  return the value of the one norm, or the Frobenius norm, */
2362
/* or the infinity norm, or the element of largest absolute value of */
2363
/* a trapezoidal or triangular matrix A */
2364
La_extern double
2365
F77_NAME(zlantr)(const char *norm, const char *uplo, const char *diag,
2366
                 const int *m, const int *n, Rcomplex *a,
2367
                 const int *lda, double *work);
2368

    
2369
/* ======================================================================== */
2370

    
2371
//* Other double precision and double complex Lapack routines provided by libRlapack.
2372
/*
2373
   These are extracted from the CLAPACK headers.
2374
*/
2375

    
2376
La_extern void
2377
F77_NAME(dbdsdc)(char *uplo, char *compq, int *n, double *
2378
        d, double *e, double *u, int *ldu, double *vt,
2379
        int *ldvt, double *q, int *iq, double *work, int * iwork, int *info);
2380

    
2381
La_extern void
2382
F77_NAME(dgegs)(char *jobvsl, char *jobvsr, int *n,
2383
        double *a, int *lda, double *b, int *ldb, double *
2384
        alphar, double *alphai, double *beta, double *vsl,
2385
        int *ldvsl, double *vsr, int *ldvsr, double *work,
2386
        int *lwork, int *info);
2387

    
2388
La_extern void
2389
F77_NAME(dgelsd)(int *m, int *n, int *nrhs,
2390
        double *a, int *lda, double *b, int *ldb, double *
2391
        s, double *rcond, int *rank, double *work, int *lwork,
2392
         int *iwork, int *info);
2393

    
2394
La_extern void
2395
F77_NAME(dgelsx)(int *m, int *n, int *nrhs,
2396
        double *a, int *lda, double *b, int *ldb, int *
2397
        jpvt, double *rcond, int *rank, double *work, int *
2398
        info);
2399

    
2400
La_extern void
2401
F77_NAME(dgesc2)(int *n, double *a, int *lda,
2402
        double *rhs, int *ipiv, int *jpiv, double *scale);
2403

    
2404
/* DGESDD - compute the singular value decomposition (SVD); of a   */
2405
/* real M-by-N matrix A, optionally computing the left and/or           */
2406
/* right singular vectors.  If singular vectors are desired, it uses a */
2407
/* divide-and-conquer algorithm.                                   */
2408
La_extern void
2409
F77_NAME(dgesdd)(const char *jobz,
2410
                 const int *m, const int *n,
2411
                 double *a, const int *lda, double *s,
2412
                 double *u, const int *ldu,
2413
                 double *vt, const int *ldvt,
2414
                 double *work, const int *lwork, int *iwork, int *info);
2415

    
2416
La_extern void
2417
F77_NAME(dgetc2)(int *n, double *a, int *lda, int
2418
        *ipiv, int *jpiv, int *info);
2419

    
2420
typedef int (*L_fp)();
2421
La_extern void
2422
F77_NAME(dggesx)(char *jobvsl, char *jobvsr, char *sort, L_fp
2423
        delctg, char *sense, int *n, double *a, int *lda,
2424
        double *b, int *ldb, int *sdim, double *alphar,
2425
        double *alphai, double *beta, double *vsl, int *ldvsl,
2426
         double *vsr, int *ldvsr, double *rconde, double *
2427
        rcondv, double *work, int *lwork, int *iwork, int *
2428
        liwork, int *bwork, int *info);
2429

    
2430
La_extern void
2431
F77_NAME(dggev)(char *jobvl, char *jobvr, int *n, double *
2432
        a, int *lda, double *b, int *ldb, double *alphar,
2433
        double *alphai, double *beta, double *vl, int *ldvl,
2434
        double *vr, int *ldvr, double *work, int *lwork,
2435
        int *info);
2436

    
2437
La_extern void
2438
F77_NAME(dggevx)(char *balanc, char *jobvl, char *jobvr, char *
2439
        sense, int *n, double *a, int *lda, double *b,
2440
        int *ldb, double *alphar, double *alphai, double *
2441
        beta, double *vl, int *ldvl, double *vr, int *ldvr,
2442
        int *ilo, int *ihi, double *lscale, double *rscale,
2443
        double *abnrm, double *bbnrm, double *rconde, double *
2444
        rcondv, double *work, int *lwork, int *iwork, int *
2445
        bwork, int *info);
2446

    
2447
La_extern void
2448
F77_NAME(dggsvp)(char *jobu, char *jobv, char *jobq, int *m,
2449
        int *p, int *n, double *a, int *lda, double *b,
2450
        int *ldb, double *tola, double *tolb, int *k, int
2451
        *l, double *u, int *ldu, double *v, int *ldv,
2452
        double *q, int *ldq, int *iwork, double *tau,
2453
        double *work, int *info);
2454

    
2455
La_extern void
2456
F77_NAME(dgtts2)(int *itrans, int *n, int *nrhs,
2457
        double *dl, double *d, double *du, double *du2,
2458
        int *ipiv, double *b, int *ldb);
2459
La_extern void
2460
F77_NAME(dlagv2)(double *a, int *lda, double *b, int *ldb, double *alphar,
2461
                 double *alphai, double * beta, double *csl, double *snl,
2462
                 double *csr, double * snr);
2463

    
2464
La_extern void
2465
F77_NAME(dlals0)(int *icompq, int *nl, int *nr,
2466
        int *sqre, int *nrhs, double *b, int *ldb, double
2467
        *bx, int *ldbx, int *perm, int *givptr, int *givcol,
2468
        int *ldgcol, double *givnum, int *ldgnum, double *
2469
        poles, double *difl, double *difr, double *z, int *
2470
        k, double *c, double *s, double *work, int *info);
2471

    
2472
La_extern void
2473
F77_NAME(dlalsa)(int *icompq, int *smlsiz, int *n,
2474
        int *nrhs, double *b, int *ldb, double *bx, int *
2475
        ldbx, double *u, int *ldu, double *vt, int *k,
2476
        double *difl, double *difr, double *z, double *
2477
        poles, int *givptr, int *givcol, int *ldgcol, int *
2478
        perm, double *givnum, double *c, double *s, double *
2479
        work, int *iwork, int *info);
2480

    
2481
La_extern void
2482
F77_NAME(dlalsd)(char *uplo, int *smlsiz, int *n, int
2483
        *nrhs, double *d, double *e, double *b, int *ldb,
2484
        double *rcond, int *rank, double *work, int *iwork,
2485
        int *info);
2486

    
2487
La_extern void
2488
F77_NAME(dlamc1)(int *beta, int *t, int *rnd, int
2489
        *ieee1);
2490

    
2491
La_extern void
2492
F77_NAME(dlamc2)(int *beta, int *t, int *rnd,
2493
        double *eps, int *emin, double *rmin, int *emax,
2494
        double *rmax);
2495

    
2496
La_extern double
2497
F77_NAME(dlamc3)(double *a, double *b);
2498

    
2499
La_extern void
2500
F77_NAME(dlamc4)(int *emin, double *start, int *base);
2501

    
2502
La_extern void
2503
F77_NAME(dlamc5)(int *beta, int *p, int *emin,
2504
        int *ieee, int *emax, double *rmax);
2505

    
2506
La_extern void
2507
F77_NAME(dlaqp2)(int *m, int *n, int *offset,
2508
        double *a, int *lda, int *jpvt, double *tau,
2509
        double *vn1, double *vn2, double *work);
2510

    
2511
La_extern void
2512
F77_NAME(dlaqps)(int *m, int *n, int *offset, int
2513
        *nb, int *kb, double *a, int *lda, int *jpvt,
2514
        double *tau, double *vn1, double *vn2, double *auxv,
2515
        double *f, int *ldf);
2516

    
2517
La_extern void
2518
F77_NAME(dlar1v)(int *n, int *b1, int *bn, double
2519
        *sigma, double *d, double *l, double *ld, double *
2520
        lld, double *gersch, double *z, double *ztz, double
2521
        *mingma, int *r, int *isuppz, double *work);
2522

    
2523
La_extern void
2524
F77_NAME(dlarrb)(int *n, double *d, double *l,
2525
        double *ld, double *lld, int *ifirst, int *ilast,
2526
        double *sigma, double *reltol, double *w, double *
2527
        wgap, double *werr, double *work, int *iwork, int *
2528
        info);
2529

    
2530
La_extern void
2531
F77_NAME(dlarre)(int *n, double *d, double *e,
2532
        double *tol, int *nsplit, int *isplit, int *m,
2533
        double *w, double *woff, double *gersch, double *work,
2534
         int *info);
2535

    
2536
La_extern void
2537
F77_NAME(dlarrf)(int *n, double *d, double *l,
2538
        double *ld, double *lld, int *ifirst, int *ilast,
2539
        double *w, double *dplus, double *lplus, double *work,
2540
         int *iwork, int *info);
2541

    
2542
La_extern void
2543
F77_NAME(dlarrv)(int *n, double *d, double *l,
2544
        int *isplit, int *m, double *w, int *iblock,
2545
        double *gersch, double *tol, double *z, int *ldz,
2546
        int *isuppz, double *work, int *iwork, int *info);
2547

    
2548
La_extern void
2549
F77_NAME(dlarz)(char *side, int *m, int *n, int *l,
2550
        double *v, int *incv, double *tau, double *c,
2551
        int *ldc, double *work);
2552

    
2553
La_extern void
2554
F77_NAME(dlarzb)(char *side, char *trans, char *direct, char *
2555
        storev, int *m, int *n, int *k, int *l, double *v,
2556
         int *ldv, double *t, int *ldt, double *c, int *
2557
        ldc, double *work, int *ldwork);
2558

    
2559
La_extern void
2560
F77_NAME(dlarzt)(char *direct, char *storev, int *n, int *
2561
        k, double *v, int *ldv, double *tau, double *t,
2562
        int *ldt);
2563

    
2564
La_extern void
2565
F77_NAME(dlasd0)(int *n, int *sqre, double *d,
2566
        double *e, double *u, int *ldu, double *vt, int *
2567
        ldvt, int *smlsiz, int *iwork, double *work, int *
2568
        info);
2569

    
2570
La_extern void
2571
F77_NAME(dlasd1)(int *nl, int *nr, int *sqre,
2572
        double *d, double *alpha, double *beta, double *u,
2573
        int *ldu, double *vt, int *ldvt, int *idxq, int *
2574
        iwork, double *work, int *info);
2575

    
2576
La_extern void
2577
F77_NAME(dlasd2)(int *nl, int *nr, int *sqre, int
2578
        *k, double *d, double *z, double *alpha, double *
2579
        beta, double *u, int *ldu, double *vt, int *ldvt,
2580
        double *dsigma, double *u2, int *ldu2, double *vt2,
2581
        int *ldvt2, int *idxp, int *idx, int *idxc, int *
2582
        idxq, int *coltyp, int *info);
2583

    
2584
La_extern void
2585
F77_NAME(dlasd3)(int *nl, int *nr, int *sqre, int
2586
        *k, double *d, double *q, int *ldq, double *dsigma,
2587
        double *u, int *ldu, double *u2, int *ldu2,
2588
        double *vt, int *ldvt, double *vt2, int *ldvt2,
2589
        int *idxc, int *ctot, double *z, int *info);
2590

    
2591
La_extern void
2592
F77_NAME(dlasd4)(int *n, int *i, double *d,
2593
        double *z, double *delta, double *rho, double *
2594
        sigma, double *work, int *info);
2595

    
2596
La_extern void
2597
F77_NAME(dlasd5)(int *i, double *d, double *z,
2598
        double *delta, double *rho, double *dsigma, double *
2599
        work);
2600

    
2601
La_extern void
2602
F77_NAME(dlasd6)(int *icompq, int *nl, int *nr,
2603
        int *sqre, double *d, double *vf, double *vl,
2604
        double *alpha, double *beta, int *idxq, int *perm,
2605
        int *givptr, int *givcol, int *ldgcol, double *givnum,
2606
         int *ldgnum, double *poles, double *difl, double *
2607
        difr, double *z, int *k, double *c, double *s,
2608
        double *work, int *iwork, int *info);
2609

    
2610
La_extern void
2611
F77_NAME(dlasd7)(int *icompq, int *nl, int *nr,
2612
        int *sqre, int *k, double *d, double *z,
2613
        double *zw, double *vf, double *vfw, double *vl,
2614
        double *vlw, double *alpha, double *beta, double *
2615
        dsigma, int *idx, int *idxp, int *idxq, int *perm,
2616
        int *givptr, int *givcol, int *ldgcol, double *givnum,
2617
         int *ldgnum, double *c, double *s, int *info);
2618

    
2619
La_extern void
2620
F77_NAME(dlasd8)(int *icompq, int *k, double *d,
2621
        double *z, double *vf, double *vl, double *difl,
2622
        double *difr, int *lddifr, double *dsigma, double *
2623
        work, int *info);
2624

    
2625
La_extern void
2626
F77_NAME(dlasd9)(int *icompq, int *ldu, int *k,
2627
        double *d, double *z, double *vf, double *vl,
2628
        double *difl, double *difr, double *dsigma, double *
2629
        work, int *info);
2630

    
2631
La_extern void
2632
F77_NAME(dlasda)(int *icompq, int *smlsiz, int *n,
2633
        int *sqre, double *d, double *e, double *u, int
2634
        *ldu, double *vt, int *k, double *difl, double *difr,
2635
        double *z, double *poles, int *givptr, int *givcol,
2636
        int *ldgcol, int *perm, double *givnum, double *c,
2637
        double *s, double *work, int *iwork, int *info);
2638

    
2639
La_extern void
2640
F77_NAME(dlasdq)(char *uplo, int *sqre, int *n, int *
2641
        ncvt, int *nru, int *ncc, double *d, double *e,
2642
        double *vt, int *ldvt, double *u, int *ldu,
2643
        double *c, int *ldc, double *work, int *info);
2644

    
2645
La_extern void
2646
F77_NAME(dlasdt)(int *n, int *lvl, int *nd, int *
2647
        inode, int *ndiml, int *ndimr, int *msub);
2648

    
2649
La_extern void
2650
F77_NAME(dlasq5)(int *i0, int *n0, double *z,
2651
        int *pp, double *tau, double *dmin, double *dmin1,
2652
        double *dmin2, double *dn, double *dnm1, double *dnm2,
2653
         int *ieee);
2654

    
2655
La_extern void
2656
F77_NAME(dlasq6)(int *i0, int *n0, double *z,
2657
        int *pp, double *dmin, double *dmin1, double *dmin2,
2658
         double *dn, double *dnm1, double *dnm2);
2659

    
2660
La_extern void
2661
F77_NAME(dlatdf)(int *ijob, int *n, double *z,
2662
        int *ldz, double *rhs, double *rdsum, double *rdscal,
2663
        int *ipiv, int *jpiv);
2664

    
2665
La_extern void
2666
F77_NAME(dlatrz)(int *m, int *n, int *l, double *
2667
        a, int *lda, double *tau, double *work);
2668

    
2669
La_extern void
2670
F77_NAME(dormr3)(char *side, char *trans, int *m, int *n,
2671
        int *k, int *l, double *a, int *lda, double *tau,
2672
        double *c, int *ldc, double *work, int *info);
2673

    
2674
La_extern void
2675
F77_NAME(dormrz)(char *side, char *trans, int *m, int *n,
2676
        int *k, int *l, double *a, int *lda, double *tau,
2677
        double *c, int *ldc, double *work, int *lwork,
2678
        int *info);
2679

    
2680
La_extern void
2681
F77_NAME(dptts2)(int *n, int *nrhs, double *d,
2682
        double *e, double *b, int *ldb);
2683

    
2684
La_extern void
2685
F77_NAME(dsbgvd)(char *jobz, char *uplo, int *n, int *ka,
2686
        int *kb, double *ab, int *ldab, double *bb, int *
2687
        ldbb, double *w, double *z, int *ldz, double *work,
2688
        int *lwork, int *iwork, int *liwork, int *info);
2689

    
2690
La_extern void
2691
F77_NAME(dsbgvx)(char *jobz, char *range, char *uplo, int *n,
2692
        int *ka, int *kb, double *ab, int *ldab, double *
2693
        bb, int *ldbb, double *q, int *ldq, double *vl,
2694
        double *vu, int *il, int *iu, double *abstol, int
2695
        *m, double *w, double *z, int *ldz, double *work,
2696
        int *iwork, int *ifail, int *info);
2697

    
2698
La_extern void
2699
F77_NAME(dspgvd)(int *itype, char *jobz, char *uplo, int *
2700
        n, double *ap, double *bp, double *w, double *z,
2701
        int *ldz, double *work, int *lwork, int *iwork,
2702
        int *liwork, int *info);
2703

    
2704
La_extern void
2705
F77_NAME(dspgvx)(int *itype, char *jobz, char *range, char *
2706
        uplo, int *n, double *ap, double *bp, double *vl,
2707
        double *vu, int *il, int *iu, double *abstol, int
2708
        *m, double *w, double *z, int *ldz, double *work,
2709
        int *iwork, int *ifail, int *info);
2710

    
2711
La_extern void
2712
F77_NAME(dstegr)(char *jobz, char *range, int *n, double *
2713
        d, double *e, double *vl, double *vu, int *il,
2714
        int *iu, double *abstol, int *m, double *w,
2715
        double *z, int *ldz, int *isuppz, double *work,
2716
        int *lwork, int *iwork, int *liwork, int *info);
2717

    
2718
La_extern void
2719
F77_NAME(dstevr)(char *jobz, char *range, int *n, double *
2720
        d, double *e, double *vl, double *vu, int *il,
2721
        int *iu, double *abstol, int *m, double *w,
2722
        double *z, int *ldz, int *isuppz, double *work,
2723
        int *lwork, int *iwork, int *liwork, int *info);
2724

    
2725
La_extern void
2726
F77_NAME(dsygvd)(int *itype, char *jobz, char *uplo, int *
2727
        n, double *a, int *lda, double *b, int *ldb,
2728
        double *w, double *work, int *lwork, int *iwork,
2729
        int *liwork, int *info);
2730

    
2731
La_extern void
2732
F77_NAME(dsygvx)(int *itype, char *jobz, char *range, char *
2733
        uplo, int *n, double *a, int *lda, double *b, int
2734
        *ldb, double *vl, double *vu, int *il, int *iu,
2735
        double *abstol, int *m, double *w, double *z,
2736
        int *ldz, double *work, int *lwork, int *iwork,
2737
        int *ifail, int *info);
2738

    
2739
La_extern void
2740
F77_NAME(dtgex2)(int *wantq, int *wantz, int *n,
2741
        double *a, int *lda, double *b, int *ldb, double *
2742
        q, int *ldq, double *z, int *ldz, int *j1, int *
2743
        n1, int *n2, double *work, int *lwork, int *info);
2744

    
2745
La_extern void
2746
F77_NAME(dtgexc)(int *wantq, int *wantz, int *n,
2747
        double *a, int *lda, double *b, int *ldb, double *
2748
        q, int *ldq, double *z, int *ldz, int *ifst,
2749
        int *ilst, double *work, int *lwork, int *info);
2750

    
2751
La_extern void
2752
F77_NAME(dtgsen)(int *ijob, int *wantq, int *wantz,
2753
        int *select, int *n, double *a, int *lda, double *
2754
        b, int *ldb, double *alphar, double *alphai, double *
2755
        beta, double *q, int *ldq, double *z, int *ldz,
2756
        int *m, double *pl, double *pr, double *dif,
2757
        double *work, int *lwork, int *iwork, int *liwork,
2758
        int *info);
2759

    
2760
La_extern void
2761
F77_NAME(dtgsna)(char *job, char *howmny, int *select,
2762
        int *n, double *a, int *lda, double *b, int *ldb,
2763
        double *vl, int *ldvl, double *vr, int *ldvr,
2764
        double *s, double *dif, int *mm, int *m, double *
2765
        work, int *lwork, int *iwork, int *info);
2766

    
2767
La_extern void
2768
F77_NAME(dtgsy2)(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 *rdsum, double *rdscal, int *iwork, int
2773
        *pq, int *info);
2774

    
2775
La_extern void
2776
F77_NAME(dtgsyl)(char *trans, int *ijob, int *m, int *
2777
        n, double *a, int *lda, double *b, int *ldb,
2778
        double *c, int *ldc, double *d, int *ldd,
2779
        double *e, int *lde, double *f, int *ldf, double *
2780
        scale, double *dif, double *work, int *lwork, int *
2781
        iwork, int *info);
2782

    
2783
La_extern void
2784
F77_NAME(dtzrzf)(int *m, int *n, double *a, int *
2785
        lda, double *tau, double *work, int *lwork, int *info);
2786

    
2787
La_extern void
2788
F77_NAME(dpstrf)(const char* uplo, const int* n,
2789
                 double* a, const int* lda, int* piv, int* rank,
2790
                 double* tol, double *work, int* info);
2791

    
2792

    
2793
La_extern int
2794
F77_NAME(lsame)(char *ca, char *cb);
2795

    
2796
La_extern void
2797
F77_NAME(zbdsqr)(char *uplo, int *n, int *ncvt, int *
2798
        nru, int *ncc, double *d, double *e, Rcomplex *vt,
2799
        int *ldvt, Rcomplex *u, int *ldu, Rcomplex *c,
2800
        int *ldc, double *rwork, int *info);
2801

    
2802
La_extern void
2803
F77_NAME(zdrot)(int *n, Rcomplex *cx, int *incx,
2804
        Rcomplex *cy, int *incy, double *c, double *s);
2805

    
2806
La_extern void
2807
F77_NAME(zgebak)(char *job, char *side, int *n, int *ilo,
2808
        int *ihi, double *scale, int *m, Rcomplex *v,
2809
        int *ldv, int *info);
2810

    
2811
La_extern void
2812
F77_NAME(zgebal)(char *job, int *n, Rcomplex *a, int
2813
        *lda, int *ilo, int *ihi, double *scale, int *info);
2814

    
2815
La_extern void
2816
F77_NAME(zgebd2)(int *m, int *n, Rcomplex *a,
2817
        int *lda, double *d, double *e, Rcomplex *tauq,
2818
        Rcomplex *taup, Rcomplex *work, int *info);
2819

    
2820
La_extern void
2821
F77_NAME(zgebrd)(int *m, int *n, Rcomplex *a,
2822
        int *lda, double *d, double *e, Rcomplex *tauq,
2823
        Rcomplex *taup, Rcomplex *work, int *lwork, int *
2824
        info);
2825
La_extern void
2826
F77_NAME(zgehd2)(int *n, int *ilo, int *ihi,
2827
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
2828
        work, int *info);
2829

    
2830
La_extern void
2831
F77_NAME(zgehrd)(int *n, int *ilo, int *ihi,
2832
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
2833
        work, int *lwork, int *info);
2834

    
2835
La_extern void
2836
F77_NAME(zgelq2)(int *m, int *n, Rcomplex *a,
2837
        int *lda, Rcomplex *tau, Rcomplex *work, int *info);
2838

    
2839
La_extern void
2840
F77_NAME(zgelqf)(int *m, int *n, Rcomplex *a,
2841
        int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
2842
         int *info);
2843

    
2844
La_extern void
2845
F77_NAME(zgeqr2)(int *m, int *n, Rcomplex *a,
2846
        int *lda, Rcomplex *tau, Rcomplex *work, int *info);
2847

    
2848
La_extern void
2849
F77_NAME(zgeqrf)(int *m, int *n, Rcomplex *a,
2850
                 int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
2851
                 int *info);
2852

    
2853
La_extern void
2854
F77_NAME(zgetf2)(int *m, int *n, Rcomplex *a,
2855
        int *lda, int *ipiv, int *info);
2856

    
2857
La_extern void
2858
F77_NAME(zgetrf)(int *m, int *n, Rcomplex *a,
2859
        int *lda, int *ipiv, int *info);
2860

    
2861
La_extern void
2862
F77_NAME(zgetrs)(char *trans, int *n, int *nrhs,
2863
        Rcomplex *a, int *lda, int *ipiv, Rcomplex *b,
2864
        int *ldb, int *info);
2865

    
2866

    
2867
La_extern void
2868
F77_NAME(zhetd2)(char *uplo, int *n, Rcomplex *a, int *lda, double *d,
2869
                 double *e, Rcomplex *tau, int *info);
2870

    
2871
La_extern void
2872
F77_NAME(zhetrd)(char *uplo, int *n, Rcomplex *a,
2873
        int *lda, double *d, double *e, Rcomplex *tau,
2874
        Rcomplex *work, int *lwork, int *info);
2875

    
2876
La_extern void
2877
F77_NAME(zhseqr)(char *job, char *compz, int *n, int *ilo,
2878
         int *ihi, Rcomplex *h, int *ldh, Rcomplex *w,
2879
        Rcomplex *z, int *ldz, Rcomplex *work, int *lwork,
2880
         int *info);
2881

    
2882
La_extern void
2883
F77_NAME(zlabrd)(int *m, int *n, int *nb,
2884
        Rcomplex *a, int *lda, double *d, double *e,
2885
        Rcomplex *tauq, Rcomplex *taup, Rcomplex *x, int *
2886
        ldx, Rcomplex *y, int *ldy);
2887

    
2888
La_extern void
2889
F77_NAME(zlacgv)(int *n, Rcomplex *x, int *incx);
2890

    
2891
La_extern void
2892
F77_NAME(zlacpy)(char *uplo, int *m, int *n,
2893
        Rcomplex *a, int *lda, Rcomplex *b, int *ldb);
2894

    
2895
La_extern void
2896
F77_NAME(zlahqr)(int *wantt, int *wantz, int *n,
2897
        int *ilo, int *ihi, Rcomplex *h, int *ldh,
2898
        Rcomplex *w, int *iloz, int *ihiz, Rcomplex *z,
2899
        int *ldz, int *info);
2900

    
2901
La_extern void
2902
F77_NAME(zlahrd)(int *n, int *k, int *nb,
2903
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *t,
2904
        int *ldt, Rcomplex *y, int *ldy);
2905

    
2906
La_extern double
2907
F77_NAME(zlange)(char *norm, int *m, int *n, Rcomplex *a, int *lda,
2908
                 double *work);
2909

    
2910
La_extern double
2911
F77_NAME(zlanhe)(char *norm,  char *uplo, int *n, Rcomplex *a,
2912
                 int *lda, double *work);
2913

    
2914
La_extern double
2915
F77_NAME(zlanhs)(char *norm, int *n, Rcomplex *a, int *lda, double *work);
2916

    
2917

    
2918
La_extern void
2919
F77_NAME(zlaqp2)(int *m, int *n, int *offset,
2920
        Rcomplex *a, int *lda, int *jpvt, Rcomplex *tau,
2921
        double *vn1, double *vn2, Rcomplex *work);
2922

    
2923
La_extern void
2924
F77_NAME(zlaqps)(int *m, int *n, int *offset, int
2925
        *nb, int *kb, Rcomplex *a, int *lda, int *jpvt,
2926
        Rcomplex *tau, double *vn1, double *vn2, Rcomplex *
2927
        auxv, Rcomplex *f, int *ldf);
2928

    
2929
La_extern void
2930
F77_NAME(zlarf)(char *side, int *m, int *n, Rcomplex
2931
        *v, int *incv, Rcomplex *tau, Rcomplex *c, int *
2932
        ldc, Rcomplex *work);
2933

    
2934
La_extern void
2935
F77_NAME(zlarfb)(char *side, char *trans, char *direct, char *
2936
        storev, int *m, int *n, int *k, Rcomplex *v, int
2937
        *ldv, Rcomplex *t, int *ldt, Rcomplex *c, int *
2938
        ldc, Rcomplex *work, int *ldwork);
2939

    
2940
La_extern void
2941
F77_NAME(zlarfg)(int *n, Rcomplex *alpha, Rcomplex *
2942
        x, int *incx, Rcomplex *tau);
2943

    
2944
La_extern void
2945
F77_NAME(zlarft)(char *direct, char *storev, int *n, int *
2946
        k, Rcomplex *v, int *ldv, Rcomplex *tau, Rcomplex *
2947
        t, int *ldt);
2948

    
2949
La_extern void
2950
F77_NAME(zlarfx)(char *side, int *m, int *n,
2951
        Rcomplex *v, Rcomplex *tau, Rcomplex *c, int *
2952
        ldc, Rcomplex *work);
2953

    
2954
La_extern void
2955
F77_NAME(zlascl)(char *type, int *kl, int *ku,
2956
        double *cfrom, double *cto, int *m, int *n,
2957
        Rcomplex *a, int *lda, int *info);
2958

    
2959
La_extern void
2960
F77_NAME(zlaset)(char *uplo, int *m, int *n,
2961
        Rcomplex *alpha, Rcomplex *beta, Rcomplex *a, int *
2962
        lda);
2963

    
2964
La_extern void
2965
F77_NAME(zlasr)(char *side, char *pivot, char *direct, int *m,
2966
         int *n, double *c, double *s, Rcomplex *a,
2967
        int *lda);
2968

    
2969
La_extern void
2970
F77_NAME(zlassq)(int *n, Rcomplex *x, int *incx,
2971
        double *scale, double *sumsq);
2972

    
2973
La_extern void
2974
F77_NAME(zlaswp)(int *n, Rcomplex *a, int *lda,
2975
        int *k1, int *k2, int *ipiv, int *incx);
2976

    
2977
La_extern void
2978
F77_NAME(zlatrd)(char *uplo, int *n, int *nb,
2979
        Rcomplex *a, int *lda, double *e, Rcomplex *tau,
2980
        Rcomplex *w, int *ldw);
2981

    
2982
La_extern void
2983
F77_NAME(zlatrs)(char *uplo, char *trans, char *diag, char *
2984
        normin, int *n, Rcomplex *a, int *lda, Rcomplex *x,
2985
        double *scale, double *cnorm, int *info);
2986

    
2987
La_extern void
2988
F77_NAME(zsteqr)(char *compz, int *n, double *d,
2989
        double *e, Rcomplex *z, int *ldz, double *work,
2990
        int *info);
2991

    
2992
/* ZTRCON estimates the reciprocal of the condition number of a
2993
 * triangular matrix A, in either the 1-norm or the infinity-norm.
2994
 */
2995
La_extern void
2996
F77_NAME(ztrcon)(const char *norm, const char *uplo, const char *diag,
2997
                 const int *n, const Rcomplex *a, const int *lda,
2998
                 double *rcond, Rcomplex *work, double *rwork, int *info);
2999

    
3000
La_extern void
3001
F77_NAME(ztrevc)(char *side, char *howmny, int *select,
3002
        int *n, Rcomplex *t, int *ldt, Rcomplex *vl,
3003
        int *ldvl, Rcomplex *vr, int *ldvr, int *mm, int
3004
        *m, Rcomplex *work, double *rwork, int *info);
3005

    
3006
La_extern void
3007
F77_NAME(zung2l)(int *m, int *n, int *k,
3008
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3009
        work, int *info);
3010

    
3011
La_extern void
3012
F77_NAME(zung2r)(int *m, int *n, int *k,
3013
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3014
        work, int *info);
3015

    
3016
La_extern void
3017
F77_NAME(zungbr)(char *vect, int *m, int *n, int *k,
3018
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3019
        work, int *lwork, int *info);
3020

    
3021
La_extern void
3022
F77_NAME(zunghr)(int *n, int *ilo, int *ihi,
3023
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3024
        work, int *lwork, int *info);
3025

    
3026
La_extern void
3027
F77_NAME(zungl2)(int *m, int *n, int *k,
3028
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3029
        work, int *info);
3030

    
3031
La_extern void
3032
F77_NAME(zunglq)(int *m, int *n, int *k,
3033
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3034
        work, int *lwork, int *info);
3035

    
3036
La_extern void
3037
F77_NAME(zungql)(int *m, int *n, int *k,
3038
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3039
        work, int *lwork, int *info);
3040

    
3041
La_extern void
3042
F77_NAME(zungqr)(int *m, int *n, int *k,
3043
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3044
        work, int *lwork, int *info);
3045

    
3046
La_extern void
3047
F77_NAME(zungr2)(int *m, int *n, int *k,
3048
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3049
        work, int *info);
3050

    
3051
La_extern void
3052
F77_NAME(zungrq)(int *m, int *n, int *k,
3053
        Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
3054
        work, int *lwork, int *info);
3055

    
3056
La_extern void
3057
F77_NAME(zungtr)(char *uplo, int *n, Rcomplex *a,
3058
        int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
3059
         int *info);
3060

    
3061
La_extern void
3062
F77_NAME(zunm2r)(char *side, char *trans, int *m, int *n,
3063
        int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3064
        Rcomplex *c, int *ldc, Rcomplex *work, int *info);
3065

    
3066
La_extern void
3067
F77_NAME(zunmbr)(char *vect, char *side, char *trans, int *m,
3068
        int *n, int *k, Rcomplex *a, int *lda, Rcomplex
3069
        *tau, Rcomplex *c, int *ldc, Rcomplex *work, int *
3070
        lwork, int *info);
3071

    
3072
La_extern void
3073
F77_NAME(zunml2)(char *side, char *trans, int *m, int *n,
3074
        int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3075
        Rcomplex *c, int *ldc, Rcomplex *work, int *info);
3076

    
3077
La_extern void
3078
F77_NAME(zunmlq)(char *side, char *trans, int *m, int *n,
3079
        int *k, Rcomplex *a, int *lda, Rcomplex *tau,
3080
        Rcomplex *c, int *ldc, Rcomplex *work, int *lwork,
3081
         int *info);
3082

    
3083
/* Added in R 3.1.0 */
3084
/* ZGESVD - compute the singular value decomposition (SVD); of a   */
3085
/* real M-by-N matrix A, optionally computing the left and/or           */
3086
/* right singular vectors                                           */
3087
La_extern void
3088
F77_NAME(zgesdd)(const char *jobz,
3089
                 const int *m, const int *n,
3090
                 Rcomplex *a, const int *lda, double *s,
3091
                 Rcomplex *u, const int *ldu,
3092
                 Rcomplex *vt, const int *ldvt,
3093
                 Rcomplex *work, const int *lwork, double *rwork,
3094
                 int *iwork, int *info);
3095
La_extern void
3096
F77_NAME(zgelsd)(int *m, int *n, int *nrhs,
3097
        Rcomplex *a, int *lda, Rcomplex *b, int *ldb, double *s,
3098
        double *rcond, int *rank, 
3099
        Rcomplex *work, int *lwork, double *rwork, int *iwork, int *info);
3100

    
3101
#ifdef        __cplusplus
3102
}
3103
#endif
3104

    
3105
#endif /* R_LAPACK_H */
3106

    
3107
// Local variables: ***
3108
// mode: outline-minor ***
3109
// outline-regexp: "^\^L\\|^//[*]+" ***
3110
// End: ***