RAPI
R_ext/Lapack.h
Go to the documentation of this file.
00001 /*
00002  *  R : A Computer Language for Statistical Data Analysis
00003  *  Copyright (C) 2003-2016 The R Core Team.
00004  *  Copyright (C) 2008   The R Foundation
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU Lesser General Public License as published by
00008  *  the Free Software Foundation; either version 2.1 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU Lesser General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Lesser General Public License
00017  *  along with this program; if not, a copy is available at
00018  *  https://www.R-project.org/Licenses/
00019  */
00020 
00021 /*
00022    C declarations of LAPACK Fortran subroutines included in R.
00023    Just those used (currently or previously) by C routines in R itself.
00024 
00025    Part of the API.
00026 
00027    R packages that use these should have PKG_LIBS in src/Makevars include 
00028    $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
00029  */
00030 
00031 
00032 #ifndef R_LAPACK_H
00033 #define R_LAPACK_H
00034 
00035 #include <R_ext/RS.h>       /* for F77_... */
00036 #include <R_ext/Complex.h>  /* for Rcomplex */
00037 #include <R_ext/BLAS.h>
00038 
00039 
00040 /*
00041   LAPACK function names are [dz]<name>(), where d denotes the real
00042   version of the function, z the complex version.  (Only
00043   double-precision versions are used in R.)
00044 */
00045 
00046 #ifdef  __cplusplus
00047 extern "C" {
00048 #endif
00049 
00050 /* The LAPACK version: might change after installation with
00051    external LAPACK
00052 */
00053 extern void F77_NAME(ilaver)(int *major, int *minor, int *patch);
00054 
00055 // Never defined by R itself.
00056 #ifndef La_extern
00057 #define La_extern extern
00058 #endif
00059 
00060 // Utilities for Lapack-using packages :
00061 // ------------------------------------
00062 
00063 /* matrix norms: converting typstr[]  to one of {'M', 'O', 'I', 'F'}
00064  * or signal error(): */
00065 // La_extern char La_norm_type(const char *typstr);
00066 
00067 /* matrix (reciprocal) condition numbers: convert typstr[]  to 'O'(ne) or 'I'(nf)
00068  * or signal error(): */
00069 // La_extern char La_rcond_type(const char *typstr);
00070 
00071 
00072 /* Selected Double Precision Lapack Routines
00073    ========
00074  */
00075 
00076 //* Double precision BiDiagonal and DIagonal matrices  -> DBD & DDI
00077 
00078 /* DBDSQR - compute the singular value decomposition (SVD) of a real */
00079 /* N-by-N (upper or lower) bidiagonal matrix B */
00080 La_extern void
00081 F77_NAME(dbdsqr)(const char* uplo, const int* n, const int* ncvt,
00082          const int* nru, const int* ncc, double* d, double* e,
00083          double* vt, const int* ldvt, double* u, const int* ldu,
00084          double* c, const int* ldc, double* work, int* info);
00085 /* DDISNA - compute the reciprocal condition numbers for the */
00086 /* eigenvectors of a real symmetric or complex Hermitian matrix or */
00087 /* for the left or right singular vectors of a general m-by-n */
00088 /* matrix */
00089 La_extern void
00090 F77_NAME(ddisna)(const char* job, const int* m, const int* n,
00091          double* d, double* sep, int* info);
00092 
00093 
00094 //* Double precision General Banded matrices -> DGB
00095 
00096 /* DGBBRD - reduce a real general m-by-n band matrix A to upper */
00097 /* bidiagonal form B by an orthogonal transformation  */
00098 La_extern void
00099 F77_NAME(dgbbrd)(const char* vect, const int* m, const int* n,
00100          const int* ncc, const int* kl, const int* ku,
00101          double* ab, const int* ldab,
00102          double* d, double* e, double* q,
00103          const int* ldq, double* pt, const int* ldpt,
00104          double* c, const int* ldc,
00105          double* work, int* info);
00106 /* DGBCON - estimate the reciprocal of the condition number of a */
00107 /* real general band matrix A, in either the 1-norm or the */
00108 /* infinity-norm */
00109 La_extern void
00110 F77_NAME(dgbcon)(const char* norm, const int* n, const int* kl,
00111          const int* ku, double* ab, const int* ldab,
00112          int* ipiv, const double* anorm, double* rcond,
00113          double* work, int* iwork, int* info);
00114 /* DGBEQU - compute row and column scalings intended to equilibrate */
00115 /* an M-by-N band matrix A and reduce its condition number */
00116 La_extern void
00117 F77_NAME(dgbequ)(const int* m, const int* n, const int* kl, const int* ku,
00118          double* ab, const int* ldab, double* r, double* c,
00119          double* rowcnd, double* colcnd, double* amax, int* info);
00120 /* DGBRFS - improve the computed solution to a system of linear */
00121 /* equations when the coefficient matrix is banded, and provides */
00122 /* error bounds and backward error estimates for the solution */
00123 La_extern void
00124 F77_NAME(dgbrfs)(const char* trans, const int* n, const int* kl,
00125          const int* ku, const int* nrhs, double* ab,
00126          const int* ldab, double* afb, const int* ldafb,
00127          int* ipiv, double* b, const int* ldb,
00128          double* x, const int* ldx, double* ferr, double* berr,
00129          double* work, int* iwork, int* info);
00130 /* DGBSV - compute the solution to a real system of linear */
00131 /* equations A * X = B, where A is a band matrix of order N with */
00132 /* KL subdiagonals and KU superdiagonals, and X and B are */
00133 /* N-by-NRHS matrices */
00134 La_extern void
00135 F77_NAME(dgbsv)(const int* n, const int* kl,const int* ku,
00136         const int* nrhs, double* ab, const int* ldab,
00137         int* ipiv, double* b, const int* ldb, int* info);
00138 /* DGBSVX - use the LU factorization to compute the solution to a */
00139 /* real system of linear equations A * X = B or A**T * X = B */
00140 La_extern void
00141 F77_NAME(dgbsvx)(const int* fact, const char* trans,
00142          const int* n, const int* kl,const int* ku,
00143          const int* nrhs, double* ab, const int* ldab,
00144          double* afb, const int* ldafb, int* ipiv,
00145          const char* equed, double* r, double* c,
00146          double* b, const int* ldb,
00147          double* x, const int* ldx,
00148          double* rcond, double* ferr, double* berr,
00149          double* work, int* iwork, int* info);
00150 /* DGBTF2 - compute an LU factorization of a real m-by-n band */
00151 /* matrix A using partial pivoting with row interchanges */
00152 La_extern void
00153 F77_NAME(dgbtf2)(const int* m, const int* n, const int* kl,const int* ku,
00154          double* ab, const int* ldab, int* ipiv, int* info);
00155 /* DGBTRF - compute an LU factorization of a real m-by-n band */
00156 /* matrix A using partial pivoting with row interchanges */
00157 La_extern void
00158 F77_NAME(dgbtrf)(const int* m, const int* n, const int* kl,const int* ku,
00159           double* ab, const int* ldab, int* ipiv, int* info);
00160 /* DGBTRS - solve a system of linear equations  A * X = B or  */
00161 /* A' * X = B with a general band matrix A using the LU */
00162 /* factorization computed by DGBTRF */
00163 La_extern void
00164 F77_NAME(dgbtrs)(const char* trans, const int* n,
00165          const int* kl, const int* ku, const int* nrhs,
00166          const double* ab, const int* ldab, const int* ipiv,
00167          double* b, const int* ldb, int* info);
00168 
00169 
00170 //* Double precision GEneral matrices -> DGE
00171 
00172 /* DGEBAK - form the right or left eigenvectors of a real general */
00173 /* matrix by backward transformation on the computed eigenvectors */
00174 /* of the balanced matrix output by DGEBAL  */
00175 La_extern void
00176 F77_NAME(dgebak)(const char* job, const char* side, const int* n,
00177          const int* ilo, const int* ihi, double* scale,
00178          const int* m, double* v, const int* ldv, int* info);
00179 /* DGEBAL - balance a general real matrix A */
00180 La_extern void
00181 F77_NAME(dgebal)(const char* job, const int* n, double* a, const int* lda,
00182           int* ilo, int* ihi, double* scale, int* info);
00183 /* DGEBD2 - reduce a real general m by n matrix A to upper or */
00184 /* lower bidiagonal form B by an orthogonal transformation */
00185 La_extern void
00186 F77_NAME(dgebd2)(const int* m, const int* n, double* a, const int* lda,
00187          double* d, double* e, double* tauq, double* taup,
00188          double* work, int* info);
00189 /* DGEBRD - reduce a general real M-by-N matrix A to upper or */
00190 /* lower bidiagonal form B by an orthogonal transformation */
00191 La_extern void
00192 F77_NAME(dgebrd)(const int* m, const int* n, double* a, const int* lda,
00193          double* d, double* e, double* tauq, double* taup,
00194          double* work, const int* lwork, int* info);
00195 /* DGECON - estimate the reciprocal of the condition number of a */
00196 /* general real matrix A, in either the 1-norm or the */
00197 /* infinity-norm, using the LU factorization computed by DGETRF */
00198 La_extern void
00199 F77_NAME(dgecon)(const char* norm, const int* n,
00200          const double* a, const int* lda,
00201          const double* anorm, double* rcond,
00202          double* work, int* iwork, int* info);
00203 /* DGEEQU - compute row and column scalings intended to equilibrate */
00204 /* an M-by-N matrix A and reduce its condition number */
00205 La_extern void
00206 F77_NAME(dgeequ)(const int* m, const int* n, double* a, const int* lda,
00207          double* r, double* c, double* rowcnd, double* colcnd,
00208          double* amax, int* info);
00209 /* DGEES - compute for an N-by-N real nonsymmetric matrix A, the */
00210 /* eigenvalues, the real Schur form T, and, optionally, the matrix */
00211 /* of Schur vectors Z */
00212 La_extern void
00213 F77_NAME(dgees)(const char* jobvs, const char* sort,
00214         int (*select)(const double*, const double*),
00215         const int* n, double* a, const int* lda,
00216         int* sdim, double* wr, double* wi,
00217         double* vs, const int* ldvs,
00218         double* work, const int* lwork, int* bwork, int* info);
00219 /* DGEESX - compute for an N-by-N real nonsymmetric matrix A, the */
00220 /* eigenvalues, the real Schur form T, and, optionally, the matrix */
00221 /* of Schur vectors Z */
00222 La_extern void
00223 F77_NAME(dgeesx)(const char* jobvs, const char* sort,
00224          int (*select)(const double*, const double*),
00225          const char* sense, const int* n, double* a,
00226          const int* lda, int* sdim, double* wr, double* wi,
00227          double* vs, const int* ldvs, double* rconde,
00228          double* rcondv, double* work, const int* lwork,
00229          int* iwork, const int* liwork, int* bwork, int* info);
00230 /* DGEEV - compute for an N-by-N real nonsymmetric matrix A, the */
00231 /* eigenvalues and, optionally, the left and/or right eigenvectors */
00232 La_extern void
00233 F77_NAME(dgeev)(const char* jobvl, const char* jobvr,
00234         const int* n, double* a, const int* lda,
00235         double* wr, double* wi, double* vl, const int* ldvl,
00236         double* vr, const int* ldvr,
00237         double* work, const int* lwork, int* info);
00238 /* DGEEVX - compute for an N-by-N real nonsymmetric matrix A, the */
00239 /* eigenvalues and, optionally, the left and/or right eigenvectors */
00240 La_extern void
00241 F77_NAME(dgeevx)(const char* balanc, const char* jobvl, const char* jobvr,
00242          const char* sense, const int* n, double* a, const int* lda,
00243          double* wr, double* wi, double* vl, const int* ldvl,
00244          double* vr, const int* ldvr, int* ilo, int* ihi,
00245          double* scale, double* abnrm, double* rconde, double* rcondv,
00246          double* work, const int* lwork, int* iwork, int* info);
00247 /* DGEHD2 - reduce a real general matrix A to upper Hessenberg */
00248 /* form H by an orthogonal similarity transformation */
00249 La_extern void
00250 F77_NAME(dgehd2)(const int* n, const int* ilo, const int* ihi,
00251          double* a, const int* lda, double* tau,
00252          double* work, int* info);
00253 /* DGEHRD - reduce a real general matrix A to upper Hessenberg */
00254 /* form H by an orthogonal similarity transformation */
00255 La_extern void
00256 F77_NAME(dgehrd)(const int* n, const int* ilo, const int* ihi,
00257          double* a, const int* lda, double* tau,
00258          double* work, const int* lwork, int* info);
00259 /* DGELQ2 - compute an LQ factorization of a real m by n matrix A */
00260 La_extern void
00261 F77_NAME(dgelq2)(const int* m, const int* n,
00262          double* a, const int* lda, double* tau,
00263          double* work, int* info);
00264 /* DGELQF - compute an LQ factorization of a real M-by-N matrix A */
00265 La_extern void
00266 F77_NAME(dgelqf)(const int* m, const int* n,
00267          double* a, const int* lda, double* tau,
00268          double* work, const int* lwork, int* info);
00269 /* DGELS - solve overdetermined or underdetermined real linear */
00270 /* systems involving an M-by-N matrix A, or its transpose, using a */
00271 /* QR or LQ factorization of A */
00272 La_extern void
00273 F77_NAME(dgels)(const char* trans, const int* m, const int* n,
00274         const int* nrhs, double* a, const int* lda,
00275         double* b, const int* ldb,
00276         double* work, const int* lwork, int* info);
00277 /* DGELSS - compute the minimum norm solution to a real linear */
00278 /* least squares problem */
00279 La_extern void
00280 F77_NAME(dgelss)(const int* m, const int* n, const int* nrhs,
00281          double* a, const int* lda, double* b, const int* ldb,
00282          double* s, double* rcond, int* rank,
00283          double* work, const int* lwork, int* info);
00284 /* DGELSY - compute the minimum-norm solution to a real linear */
00285 /* least squares problem */
00286 La_extern void
00287 F77_NAME(dgelsy)(const int* m, const int* n, const int* nrhs,
00288          double* a, const int* lda, double* b, const int* ldb,
00289          int* jpvt, const double* rcond, int* rank,
00290          double* work, const int* lwork, int* info);
00291 /* DGEQL2 - compute a QL factorization of a real m by n matrix A */
00292 La_extern void
00293 F77_NAME(dgeql2)(const int* m, const int* n, double* a, const int* lda,
00294          double* tau, double* work, int* info);
00295 /* DGEQLF - compute a QL factorization of a real M-by-N matrix A */
00296 La_extern void
00297 F77_NAME(dgeqlf)(const int* m, const int* n,
00298          double* a, const int* lda, double* tau,
00299          double* work, const int* lwork, int* info);
00300 /* DGEQP3 - compute a QR factorization with column pivoting of a */
00301 /* real M-by-N matrix A using level 3 BLAS */
00302 La_extern void
00303 F77_NAME(dgeqp3)(const int* m, const int* n, double* a, const int* lda,
00304          int* jpvt, double* tau, double* work, const int* lwork,
00305          int* info);
00306 /* DGEQR2 - compute a QR factorization of a real m by n matrix A */
00307 La_extern void
00308 F77_NAME(dgeqr2)(const int* m, const int* n, double* a, const int* lda,
00309          double* tau, double* work, int* info);
00310 /* DGEQRF - compute a QR factorization of a real M-by-N matrix A */
00311 La_extern void
00312 F77_NAME(dgeqrf)(const int* m, const int* n, double* a, const int* lda,
00313          double* tau, double* work, const int* lwork, int* info);
00314 /* DGERFS - improve the computed solution to a system of linear */
00315 /* equations and provides error bounds and backward error */
00316 /* estimates for the solution */
00317 La_extern void
00318 F77_NAME(dgerfs)(const char* trans, const int* n, const int* nrhs,
00319          double* a, const int* lda, double* af, const int* ldaf,
00320          int* ipiv, double* b, const int* ldb,
00321          double* x, const int* ldx, double* ferr, double* berr,
00322          double* work, int* iwork, int* info);
00323 /* DGERQ2 - compute an RQ factorization of a real m by n matrix A */
00324 La_extern void
00325 F77_NAME(dgerq2)(const int* m, const int* n, double* a, const int* lda,
00326          double* tau, double* work, int* info);
00327 /* DGERQF - compute an RQ factorization of a real M-by-N matrix A */
00328 La_extern void
00329 F77_NAME(dgerqf)(const int* m, const int* n, double* a, const int* lda,
00330          double* tau, double* work, const int* lwork, int* info);
00331 /* DGESV - compute the solution to a real system of linear */
00332 /* equations  A * X = B, */
00333 La_extern void
00334 F77_NAME(dgesv)(const int* n, const int* nrhs, double* a, const int* lda,
00335         int* ipiv, double* b, const int* ldb, int* info);
00336 /* DGESVD - compute the singular value decomposition (SVD); of a */
00337 /* real M-by-N matrix A, optionally computing the left and/or */
00338 /* right singular vectors */
00339 La_extern void
00340 F77_NAME(dgesvd)(const char* jobu, const char* jobvt, const int* m,
00341          const int* n, double* a, const int* lda, double* s,
00342          double* u, const int* ldu, double* vt, const int* ldvt,
00343          double* work, const int* lwork, int* info);
00344 /* DGESVX - use the LU factorization to compute the solution to a */
00345 /* real system of linear equations  A * X = B, */
00346 La_extern void
00347 F77_NAME(dgesvx)(const char* fact, const char* trans, const int* n,
00348          const int* nrhs, double* a, const int* lda,
00349          double* af, const int* ldaf, int* ipiv,
00350          char *equed, double* r, double* c,
00351          double* b, const int* ldb,
00352          double* x, const int* ldx,
00353          double* rcond, double* ferr, double* berr,
00354          double* work, int* iwork, int* info);
00355 /* DGETF2 - compute an LU factorization of a general m-by-n */
00356 /* matrix A using partial pivoting with row interchanges */
00357 La_extern void
00358 F77_NAME(dgetf2)(const int* m, const int* n, double* a, const int* lda,
00359          int* ipiv, int* info);
00360 /* DGETRF - compute an LU factorization of a general M-by-N */
00361 /* matrix A using partial pivoting with row interchanges */
00362 La_extern void
00363 F77_NAME(dgetrf)(const int* m, const int* n, double* a, const int* lda,
00364          int* ipiv, int* info);
00365 /* DGETRI - compute the inverse of a matrix using the LU */
00366 /* factorization computed by DGETRF */
00367 La_extern void
00368 F77_NAME(dgetri)(const int* n, double* a, const int* lda,
00369          int* ipiv, double* work, const int* lwork, int* info);
00370 /* DGETRS - solve a system of linear equations  A * X = B or A' * */
00371 /* X = B with a general N-by-N matrix A using the LU factorization */
00372 /* computed by DGETRF */
00373 La_extern void
00374 F77_NAME(dgetrs)(const char* trans, const int* n, const int* nrhs,
00375          const double* a, const int* lda, const int* ipiv,
00376          double* b, const int* ldb, int* info);
00377 
00378 
00379 //* Double precision General matrices Generalized problems -> DGG
00380 
00381 /* DGGBAK - form the right or left eigenvectors of a real */
00382 /* generalized eigenvalue problem A*x = lambda*B*x, by backward */
00383 /* transformation on the computed eigenvectors of the balanced */
00384 /* pair of matrices output by DGGBAL */
00385 La_extern void
00386 F77_NAME(dggbak)(const char* job, const char* side,
00387          const int* n, const int* ilo, const int* ihi,
00388          double* lscale, double* rscale, const int* m,
00389          double* v, const int* ldv, int* info);
00390 /* DGGBAL - balance a pair of general real matrices (A,B); */
00391 La_extern void
00392 F77_NAME(dggbal)(const char* job, const int* n, double* a, const int* lda,
00393          double* b, const int* ldb, int* ilo, int* ihi,
00394          double* lscale, double* rscale, double* work, int* info);
00395 /* DGGES - compute for a pair of N-by-N real nonsymmetric */
00396 /* matrices A, B the generalized eigenvalues, the generalized */
00397 /* real Schur form (S,T), optionally, the left and/or right matrices */
00398 /* of Schur vectors (VSL and VSR)*/
00399 La_extern void
00400 F77_NAME(dgges)(const char* jobvsl, const char* jobvsr, const char* sort,
00401         int (*delztg)(double*, double*, double*),
00402         const int* n, double* a, const int* lda,
00403         double* b, const int* ldb, double* alphar,
00404         double* alphai, const double* beta,
00405         double* vsl, const int* ldvsl,
00406         double* vsr, const int* ldvsr,
00407         double* work, const int* lwork, int* bwork, int* info);
00408 
00409 /* DGGGLM - solve a general Gauss-Markov linear model (GLM) problem */
00410 La_extern void
00411 F77_NAME(dggglm)(const int* n, const int* m, const int* p,
00412          double* a, const int* lda, double* b, const int* ldb,
00413          double* d, double* x, double* y,
00414          double* work, const int* lwork, int* info);
00415 /* DGGHRD - reduce a pair of real matrices (A,B); to generalized */
00416 /* upper Hessenberg form using orthogonal transformations, where A */
00417 /* is a general matrix and B is upper triangular */
00418 La_extern void
00419 F77_NAME(dgghrd)(const char* compq, const char* compz, const int* n,
00420          const int* ilo, const int* ihi, double* a, const int* lda,
00421          double* b, const int* ldb, double* q, const int* ldq,
00422          double* z, const int* ldz, int* info);
00423 /* DGGLSE - solve the linear equality-constrained least squares */
00424 /* (LSE) problem */
00425 La_extern void
00426 F77_NAME(dgglse)(const int* m, const int* n, const int* p,
00427          double* a, const int* lda,
00428          double* b, const int* ldb,
00429          double* c, double* d, double* x,
00430          double* work, const int* lwork, int* info);
00431 /* DGGQRF - compute a generalized QR factorization of an N-by-M */
00432 /* matrix A and an N-by-P matrix B */
00433 La_extern void
00434 F77_NAME(dggqrf)(const int* n, const int* m, const int* p,
00435          double* a, const int* lda, double* taua,
00436          double* b, const int* ldb, double* taub,
00437          double* work, const int* lwork, int* info);
00438 /* DGGRQF - compute a generalized RQ factorization of an M-by-N */
00439 /* matrix A and a P-by-N matrix B */
00440 La_extern void
00441 F77_NAME(dggrqf)(const int* m, const int* p, const int* n,
00442          double* a, const int* lda, double* taua,
00443          double* b, const int* ldb, double* taub,
00444          double* work, const int* lwork, int* info);
00445 
00446 //* Double precision General Tridiagonal matrices  -> DGT
00447 
00448 /* DGTCON - estimate the reciprocal of the condition number of a real */
00449 /* tridiagonal matrix A using the LU factorization as computed by DGTTRF */
00450 La_extern void
00451 F77_NAME(dgtcon)(const char* norm, const int* n, double* dl, double* d,
00452          double* du, double* du2, int* ipiv, const double* anorm,
00453          double* rcond, double* work, int* iwork, int* info);
00454 /* DGTRFS - improve the computed solution to a system of linear equations */
00455 /* when the coefficient matrix is tridiagonal, and provides error bounds */
00456 /* and backward error estimates for the solution */
00457 La_extern void
00458 F77_NAME(dgtrfs)(const char* trans, const int* n, const int* nrhs,
00459          double* dl, double* d, double* du, double* dlf,
00460          double* df, double* duf, double* du2,
00461          int* ipiv, double* b, const int* ldb,
00462          double* x, const int* ldx,
00463          double* ferr, double* berr,
00464          double* work, int* iwork, int* info);
00465 /* DGTSV - solve the equation   A*X = B, */
00466 La_extern void
00467 F77_NAME(dgtsv)(const int* n, const int* nrhs,
00468         double* dl, double* d, double* du,
00469         double* b, const int* ldb, int* info);
00470 /* DGTSVX - use the LU factorization to compute the solution to a */
00471 /* real system of linear equations A * X = B or A**T * X = B, */
00472 La_extern void
00473 F77_NAME(dgtsvx)(const int* fact, const char* trans,
00474          const int* n, const int* nrhs,
00475          double* dl, double* d, double* du,
00476          double* dlf, double* df, double* duf,
00477          double* du2, int* ipiv,
00478          double* b, const int* ldb,
00479          double* x, const int* ldx,
00480          double* rcond, double* ferr, double* berr,
00481          double* work, int* iwork, int* info);
00482 /* DGTTRF - compute an LU factorization of a real tridiagonal matrix */
00483 /* A using elimination with partial pivoting and row interchanges */
00484 La_extern void
00485 F77_NAME(dgttrf)(const int* n, double* dl, double* d,
00486          double* du, double* du2, int* ipiv, int* info);
00487 /* DGTTRS - solve one of the systems of equations  A*X = B or */
00488 /* A'*X = B, */
00489 La_extern void
00490 F77_NAME(dgttrs)(const char* trans, const int* n, const int* nrhs,
00491          double* dl, double* d, double* du, double* du2,
00492          int* ipiv, double* b, const int* ldb, int* info);
00493 
00494 
00495 //* Double precision Orthogonal matrices  -> DOP & DOR
00496 
00497 /* DOPGTR - generate a real orthogonal matrix Q which is defined */
00498 /* as the product of n-1 elementary reflectors H(i); of order n, */
00499 /* as returned by DSPTRD using packed storage */
00500 La_extern void
00501 F77_NAME(dopgtr)(const char* uplo, const int* n,
00502          const double* ap, const double* tau,
00503          double* q, const int* ldq,
00504          double* work, int* info);
00505 /* DOPMTR - overwrite the general real M-by-N matrix C with */
00506 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00507 La_extern void
00508 F77_NAME(dopmtr)(const char* side, const char* uplo,
00509          const char* trans, const int* m, const int* n,
00510          const double* ap, const double* tau,
00511          double* c, const int* ldc,
00512          double* work, int* info);
00513 /* DORG2L - generate an m by n real matrix Q with orthonormal */
00514 /* columns, */
00515 La_extern void
00516 F77_NAME(dorg2l)(const int* m, const int* n, const int* k,
00517          double* a, const int* lda,
00518          const double* tau, double* work, int* info);
00519 /* DORG2R - generate an m by n real matrix Q with orthonormal */
00520 /* columns, */
00521 La_extern void
00522 F77_NAME(dorg2r)(const int* m, const int* n, const int* k,
00523          double* a, const int* lda,
00524          const double* tau, double* work, int* info);
00525 /* DORGBR - generate one of the real orthogonal matrices Q or */
00526 /* P**T determined by DGEBRD when reducing a real matrix A to */
00527 /* bidiagonal form */
00528 La_extern void
00529 F77_NAME(dorgbr)(const char* vect, const int* m,
00530          const int* n, const int* k,
00531          double* a, const int* lda,
00532          const double* tau, double* work,
00533          const int* lwork, int* info);
00534 /* DORGHR - generate a real orthogonal matrix Q which is defined */
00535 /* as the product of IHI-ILO elementary reflectors of order N, as */
00536 /* returned by DGEHRD */
00537 La_extern void
00538 F77_NAME(dorghr)(const int* n, const int* ilo, const int* ihi,
00539          double* a, const int* lda, const double* tau,
00540          double* work, const int* lwork, int* info);
00541 /* DORGL2 - generate an m by n real matrix Q with orthonormal */
00542 /* rows, */
00543 La_extern void
00544 F77_NAME(dorgl2)(const int* m, const int* n, const int* k,
00545          double* a, const int* lda, const double* tau,
00546          double* work, int* info);
00547 /* DORGLQ - generate an M-by-N real matrix Q with orthonormal */
00548 /* rows, */
00549 La_extern void
00550 F77_NAME(dorglq)(const int* m, const int* n, const int* k,
00551          double* a, const int* lda,
00552          const double* tau, double* work,
00553          const int* lwork, int* info);
00554 /* DORGQL - generate an M-by-N real matrix Q with orthonormal */
00555 /* columns, */
00556 La_extern void
00557 F77_NAME(dorgql)(const int* m, const int* n, const int* k,
00558          double* a, const int* lda,
00559          const double* tau, double* work,
00560          const int* lwork, int* info);
00561 /* DORGQR - generate an M-by-N real matrix Q with orthonormal */
00562 /* columns, */
00563 La_extern void
00564 F77_NAME(dorgqr)(const int* m, const int* n, const int* k,
00565          double* a, const int* lda, const double* tau,
00566          double* work, const int* lwork, int* info);
00567 /* DORGR2 - generate an m by n real matrix Q with orthonormal */
00568 /* rows, */
00569 La_extern void
00570 F77_NAME(dorgr2)(const int* m, const int* n, const int* k,
00571          double* a, const int* lda, const double* tau,
00572          double* work, int* info);
00573 /* DORGRQ - generate an M-by-N real matrix Q with orthonormal rows */
00574 La_extern void
00575 F77_NAME(dorgrq)(const int* m, const int* n, const int* k,
00576          double* a, const int* lda, const double* tau,
00577          double* work, const int* lwork, int* info);
00578 /* DORGTR - generate a real orthogonal matrix Q which is defined */
00579 /* as the product of n-1 elementary reflectors of order const int* n, as */
00580 /* returned by DSYTRD */
00581 La_extern void
00582 F77_NAME(dorgtr)(const char* uplo, const int* n,
00583          double* a, const int* lda, const double* tau,
00584          double* work, const int* lwork, int* info);
00585 /* DORM2L - overwrite the general real m by n matrix C with   Q * */
00586 /* C if SIDE = 'L' and TRANS = 'N', or   Q'* C if SIDE = 'L' and */
00587 /* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
00588 /* Q' if SIDE = 'R' and TRANS = 'T', */
00589 La_extern void
00590 F77_NAME(dorm2l)(const char* side, const char* trans,
00591          const int* m, const int* n, const int* k,
00592          const double* a, const int* lda,
00593          const double* tau, double* c, const int* ldc,
00594          double* work, int* info);
00595 /* DORM2R - overwrite the general real m by n matrix C with   Q * C */
00596 /* if SIDE = 'L' and TRANS = 'N', or   Q'* C if SIDE = 'L' and */
00597 /* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
00598 /* Q' if SIDE = 'R' and TRANS = 'T', */
00599 La_extern void
00600 F77_NAME(dorm2r)(const char* side, const char* trans,
00601          const int* m, const int* n, const int* k,
00602          const double* a, const int* lda, const double* tau,
00603          double* c, const int* ldc, double* work, int* info);
00604 /* DORMBR - VECT = 'Q', DORMBR overwrites the general real M-by-N */
00605 /* matrix C with  SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00606 La_extern void
00607 F77_NAME(dormbr)(const char* vect, const char* side, const char* trans,
00608          const int* m, const int* n, const int* k,
00609          const double* a, const int* lda, const double* tau,
00610          double* c, const int* ldc,
00611          double* work, const int* lwork, int* info);
00612 /* DORMHR - overwrite the general real M-by-N matrix C with */
00613 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00614 La_extern void
00615 F77_NAME(dormhr)(const char* side, const char* trans, const int* m,
00616          const int* n, const int* ilo, const int* ihi,
00617          const double* a, const int* lda, const double* tau,
00618          double* c, const int* ldc,
00619          double* work, const int* lwork, int* info);
00620 /* DORML2 - overwrite the general real m by n matrix C with   Q * */
00621 /* C if SIDE = 'L' and TRANS = 'N', or   Q'* C if SIDE = 'L' and */
00622 /* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
00623 /* Q' if SIDE = 'R' and TRANS = 'T', */
00624 La_extern void
00625 F77_NAME(dorml2)(const char* side, const char* trans,
00626          const int* m, const int* n, const int* k,
00627          const double* a, const int* lda, const double* tau,
00628          double* c, const int* ldc, double* work, int* info);
00629 /* DORMLQ - overwrite the general real M-by-N matrix C with */
00630 /* SIDE = 'L' SIDE = 'R' TRANS = 'N'  */
00631 La_extern void
00632 F77_NAME(dormlq)(const char* side, const char* trans,
00633          const int* m, const int* n, const int* k,
00634          const double* a, const int* lda,
00635          const double* tau, double* c, const int* ldc,
00636          double* work, const int* lwork, int* info);
00637 /* DORMQL - overwrite the general real M-by-N matrix C with */
00638 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00639 La_extern void
00640 F77_NAME(dormql)(const char* side, const char* trans,
00641          const int* m, const int* n, const int* k,
00642          const double* a, const int* lda,
00643          const double* tau, double* c, const int* ldc,
00644          double* work, const int* lwork, int* info);
00645 /* DORMQR - overwrite the general real M-by-N matrix C with   SIDE = */
00646 /* 'L' SIDE = 'R' TRANS = 'N' */
00647 La_extern void
00648 F77_NAME(dormqr)(const char* side, const char* trans,
00649          const int* m, const int* n, const int* k,
00650          const double* a, const int* lda,
00651          const double* tau, double* c, const int* ldc,
00652          double* work, const int* lwork, int* info);
00653 /* DORMR2 - overwrite the general real m by n matrix C with   Q * */
00654 /* C if SIDE = 'L' and TRANS = 'N', or   Q'* C if SIDE = 'L' and */
00655 /* TRANS = 'T', or   C * Q if SIDE = 'R' and TRANS = 'N', or   C * */
00656 /* Q' if SIDE = 'R' and TRANS = 'T', */
00657 La_extern void
00658 F77_NAME(dormr2)(const char* side, const char* trans,
00659          const int* m, const int* n, const int* k,
00660          const double* a, const int* lda,
00661          const double* tau, double* c, const int* ldc,
00662          double* work, int* info);
00663 /* DORMRQ - overwrite the general real M-by-N matrix C with */
00664 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00665 La_extern void
00666 F77_NAME(dormrq)(const char* side, const char* trans,
00667          const int* m, const int* n, const int* k,
00668          const double* a, const int* lda,
00669          const double* tau, double* c, const int* ldc,
00670          double* work, const int* lwork, int* info);
00671 /* DORMTR - overwrite the general real M-by-N matrix C with */
00672 /* SIDE = 'L' SIDE = 'R' TRANS = 'N' */
00673 La_extern void
00674 F77_NAME(dormtr)(const char* side, const char* uplo,
00675          const char* trans, const int* m, const int* n,
00676          const double* a, const int* lda,
00677          const double* tau, double* c, const int* ldc,
00678          double* work, const int* lwork, int* info);
00679 
00680 
00681 //* Double precision Positive definite Band matrices  -> DPB
00682 
00683 /* DPBCON - estimate the reciprocal of the condition number (in */
00684 /* the 1-norm); of a real symmetric positive definite band matrix */
00685 /* using the Cholesky factorization A = U**T*U or A = L*L**T */
00686 /* computed by DPBTRF */
00687 La_extern void
00688 F77_NAME(dpbcon)(const char* uplo, const int* n, const int* kd,
00689          const double* ab, const int* ldab,
00690          const double* anorm, double* rcond,
00691          double* work, int* iwork, int* info);
00692 /* DPBEQU - compute row and column scalings intended to */
00693 /* equilibrate a symmetric positive definite band matrix A and */
00694 /* reduce its condition number (with respect to the two-norm); */
00695 La_extern void
00696 F77_NAME(dpbequ)(const char* uplo, const int* n, const int* kd,
00697          const double* ab, const int* ldab,
00698          double* s, double* scond, double* amax, int* info);
00699 /* DPBRFS - improve the computed solution to a system of linear */
00700 /* equations when the coefficient matrix is symmetric positive */
00701 /* definite and banded, and provides error bounds and backward */
00702 /* error estimates for the solution */
00703 La_extern void
00704 F77_NAME(dpbrfs)(const char* uplo, const int* n,
00705          const int* kd, const int* nrhs,
00706          const double* ab, const int* ldab,
00707          const double* afb, const int* ldafb,
00708          const double* b, const int* ldb,
00709          double* x, const int* ldx,
00710          double* ferr, double* berr,
00711          double* work, int* iwork, int* info);
00712 /* DPBSTF - compute a split Cholesky factorization of a real */
00713 /* symmetric positive definite band matrix A */
00714 La_extern void
00715 F77_NAME(dpbstf)(const char* uplo, const int* n, const int* kd,
00716          double* ab, const int* ldab, int* info);
00717 /* DPBSV - compute the solution to a real system of linear */
00718 /* equations  A * X = B, */
00719 La_extern void
00720 F77_NAME(dpbsv)(const char* uplo, const int* n,
00721         const int* kd, const int* nrhs,
00722         double* ab, const int* ldab,
00723         double* b, const int* ldb, int* info);
00724 /* DPBSVX - use the Cholesky factorization A = U**T*U or A = */
00725 /* L*L**T to compute the solution to a real system of linear */
00726 /* equations  A * X = B, */
00727 La_extern void
00728 F77_NAME(dpbsvx)(const int* fact, const char* uplo, const int* n,
00729          const int* kd, const int* nrhs,
00730          double* ab, const int* ldab,
00731          double* afb, const int* ldafb,
00732          char* equed, double* s,
00733          double* b, const int* ldb,
00734          double* x, const int* ldx, double* rcond,
00735          double* ferr, double* berr,
00736          double* work, int* iwork, int* info);
00737 /* DPBTF2 - compute the Cholesky factorization of a real */
00738 /* symmetric positive definite band matrix A */
00739 La_extern void
00740 F77_NAME(dpbtf2)(const char* uplo, const int* n, const int* kd,
00741          double* ab, const int* ldab, int* info);
00742 /* DPBTRF - compute the Cholesky factorization of a real */
00743 /* symmetric positive definite band matrix A */
00744 La_extern void
00745 F77_NAME(dpbtrf)(const char* uplo, const int* n, const int* kd,
00746          double* ab, const int* ldab, int* info);
00747 /* DPBTRS - solve a system of linear equations A*X = B with a */
00748 /* symmetric positive definite band matrix A using the Cholesky */
00749 /* factorization A = U**T*U or A = L*L**T computed by DPBTRF */
00750 La_extern void
00751 F77_NAME(dpbtrs)(const char* uplo, const int* n,
00752          const int* kd, const int* nrhs,
00753          const double* ab, const int* ldab,
00754          double* b, const int* ldb, int* info);
00755 
00756 
00757 //* Double precision Positive definite matrices  -> DPO
00758 
00759 /* DPOCON - estimate the reciprocal of the condition number (in */
00760 /* the 1-norm); of a real symmetric positive definite matrix using */
00761 /* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
00762 /* DPOTRF */
00763 La_extern void
00764 F77_NAME(dpocon)(const char* uplo, const int* n,
00765          const double* a, const int* lda,
00766          const double* anorm, double* rcond,
00767          double* work, int* iwork, int* info);
00768 /* DPOEQU - compute row and column scalings intended to */
00769 /* equilibrate a symmetric positive definite matrix A and reduce */
00770 /* its condition number (with respect to the two-norm); */
00771 La_extern void
00772 F77_NAME(dpoequ)(const int* n, const double* a, const int* lda,
00773          double* s, double* scond, double* amax, int* info);
00774 /* DPORFS - improve the computed solution to a system of linear */
00775 /* equations when the coefficient matrix is symmetric positive */
00776 /* definite, */
00777 La_extern void
00778 F77_NAME(dporfs)(const char* uplo, const int* n, const int* nrhs,
00779          const double* a, const int* lda,
00780          const double* af, const int* ldaf,
00781          const double* b, const int* ldb,
00782          double* x, const int* ldx,
00783          double* ferr, double* berr,
00784          double* work, int* iwork, int* info);
00785 /* DPOSV - compute the solution to a real system of linear */
00786 /* equations  A * X = B, */
00787 La_extern void
00788 F77_NAME(dposv)(const char* uplo, const int* n, const int* nrhs,
00789         double* a, const int* lda,
00790         double* b, const int* ldb, int* info);
00791 /* DPOSVX - use the Cholesky factorization A = U**T*U or A = */
00792 /* L*L**T to compute the solution to a real system of linear */
00793 /* equations  A * X = B, */
00794 La_extern void
00795 F77_NAME(dposvx)(const int* fact, const char* uplo,
00796          const int* n, const int* nrhs,
00797          double* a, const int* lda,
00798          double* af, const int* ldaf, char* equed,
00799          double* s, double* b, const int* ldb,
00800          double* x, const int* ldx, double* rcond,
00801          double* ferr, double* berr, double* work,
00802          int* iwork, int* info);
00803 /* DPOTF2 - compute the Cholesky factorization of a real */
00804 /* symmetric positive definite matrix A */
00805 La_extern void
00806 F77_NAME(dpotf2)(const char* uplo, const int* n,
00807          double* a, const int* lda, int* info);
00808 /* DPOTRF - compute the Cholesky factorization of a real */
00809 /* symmetric positive definite matrix A */
00810 La_extern void
00811 F77_NAME(dpotrf)(const char* uplo, const int* n,
00812          double* a, const int* lda, int* info);
00813 /* DPOTRI - compute the inverse of a real symmetric positive */
00814 /* definite matrix A using the Cholesky factorization A = U**T*U */
00815 /* or A = L*L**T computed by DPOTRF */
00816 La_extern void
00817 F77_NAME(dpotri)(const char* uplo, const int* n,
00818          double* a, const int* lda, int* info);
00819 /* DPOTRS - solve a system of linear equations A*X = B with a */
00820 /* symmetric positive definite matrix A using the Cholesky */
00821 /* factorization A = U**T*U or A = L*L**T computed by DPOTRF */
00822 La_extern void
00823 F77_NAME(dpotrs)(const char* uplo, const int* n,
00824          const int* nrhs, const double* a, const int* lda,
00825          double* b, const int* ldb, int* info);
00826 /* DPPCON - estimate the reciprocal of the condition number (in */
00827 /* the 1-norm); of a real symmetric positive definite packed */
00828 /* matrix using the Cholesky factorization A = U**T*U or A = */
00829 /* L*L**T computed by DPPTRF */
00830 La_extern void
00831 F77_NAME(dppcon)(const char* uplo, const int* n,
00832          const double* ap, const double* anorm, double* rcond,
00833          double* work, int* iwork, int* info);
00834 /* DPPEQU - compute row and column scalings intended to */
00835 /* equilibrate a symmetric positive definite matrix A in packed */
00836 /* storage and reduce its condition number (with respect to the */
00837 /* two-norm); */
00838 La_extern void
00839 F77_NAME(dppequ)(const char* uplo, const int* n,
00840          const double* ap, double* s, double* scond,
00841          double* amax, int* info);
00842 
00843 
00844 //* Double precision Positive definite matrices in Packed storage  -> DPP
00845 
00846 /* DPPRFS - improve the computed solution to a system of linear */
00847 /* equations when the coefficient matrix is symmetric positive */
00848 /* definite and packed, and provides error bounds and backward */
00849 /* error estimates for the solution */
00850 La_extern void
00851 F77_NAME(dpprfs)(const char* uplo, const int* n, const int* nrhs,
00852          const double* ap, const double* afp,
00853          const double* b, const int* ldb,
00854          double* x, const int* ldx,
00855          double* ferr, double* berr,
00856          double* work, int* iwork, int* info);
00857 /* DPPSV - compute the solution to a real system of linear */
00858 /* equations  A * X = B, */
00859 La_extern void
00860 F77_NAME(dppsv)(const char* uplo, const int* n,
00861         const int* nrhs, const double* ap,
00862         double* b, const int* ldb, int* info);
00863 /* DPPSVX - use the Cholesky factorization A = U**T*U or A = */
00864 /* L*L**T to compute the solution to a real system of linear */
00865 /* equations  A * X = B, */
00866 La_extern void
00867 F77_NAME(dppsvx)(const int* fact, const char* uplo,
00868          const int* n, const int* nrhs, double* ap,
00869          double* afp, char* equed, double* s,
00870          double* b, const int* ldb,
00871          double* x, const int* ldx,
00872          double* rcond, double* ferr, double* berr,
00873          double* work, int* iwork, int* info);
00874 /* DPPTRF - compute the Cholesky factorization of a real */
00875 /* symmetric positive definite matrix A stored in packed format */
00876 La_extern void
00877 F77_NAME(dpptrf)(const char* uplo, const int* n, double* ap, int* info);
00878 /* DPPTRI - compute the inverse of a real symmetric positive */
00879 /* definite matrix A using the Cholesky factorization A = U**T*U */
00880 /* or A = L*L**T computed by DPPTRF  */
00881 La_extern void
00882 F77_NAME(dpptri)(const char* uplo, const int* n, double* ap, int* info);
00883 /* DPPTRS - solve a system of linear equations A*X = B with a */
00884 /* symmetric positive definite matrix A in packed storage using */
00885 /* the Cholesky factorization A = U**T*U or A = L*L**T computed by */
00886 /* DPPTRF */
00887 La_extern void
00888 F77_NAME(dpptrs)(const char* uplo, const int* n,
00889          const int* nrhs, const double* ap,
00890          double* b, const int* ldb, int* info);
00891 
00892 //* Double precision symmetric Positive definite Tridiagonal matrices  -> DPT
00893 
00894 /* DPTCON - compute the reciprocal of the condition number (in */
00895 /* the 1-norm); of a real symmetric positive definite tridiagonal */
00896 /* matrix using the factorization A = L*D*L**T or A = U**T*D*U */
00897 /* computed by DPTTRF */
00898 La_extern void
00899 F77_NAME(dptcon)(const int* n,
00900          const double* d, const double* e,
00901          const double* anorm, double* rcond,
00902          double* work, int* info);
00903 /* DPTEQR - compute all eigenvalues and, optionally, eigenvectors */
00904 /* of a symmetric positive definite tridiagonal matrix by first */
00905 /* factoring the matrix using DPTTRF, and then calling DBDSQR to */
00906 /* compute the singular values of the bidiagonal factor */
00907 La_extern void
00908 F77_NAME(dpteqr)(const char* compz, const int* n, double* d,
00909          double* e, double* z, const int* ldz,
00910          double* work, int* info);
00911 /* DPTRFS - improve the computed solution to a system of linear */
00912 /* equations when the coefficient matrix is symmetric positive */
00913 /* definite and tridiagonal, and provides error bounds and */
00914 /* backward error estimates for the solution */
00915 La_extern void
00916 F77_NAME(dptrfs)(const int* n, const int* nrhs,
00917          const double* d, const double* e,
00918          const double* df, const double* ef,
00919          const double* b, const int* ldb,
00920          double* x, const int* ldx,
00921          double* ferr, double* berr,
00922          double* work, int* info);
00923 /* DPTSV - compute the solution to a real system of linear */
00924 /* equations A*X = B, where A is an N-by-N symmetric positive */
00925 /* definite tridiagonal matrix, and X and B are N-by-NRHS matrices */
00926 La_extern void
00927 F77_NAME(dptsv)(const int* n, const int* nrhs, double* d,
00928         double* e, double* b, const int* ldb, int* info);
00929 /* DPTSVX - use the factorization A = L*D*L**T to compute the */
00930 /* solution to a real system of linear equations A*X = B, where A */
00931 /* is an N-by-N symmetric positive definite tridiagonal matrix and */
00932 /* X and B are N-by-NRHS matrices */
00933 La_extern void
00934 F77_NAME(dptsvx)(const int* fact, const int* n,
00935          const int* nrhs,
00936          const double* d, const double* e,
00937          double* df, double* ef,
00938          const double* b, const int* ldb,
00939          double* x, const int* ldx, double* rcond,
00940          double* ferr, double* berr,
00941          double* work, int* info);
00942 /* DPTTRF - compute the factorization of a real symmetric */
00943 /* positive definite tridiagonal matrix A */
00944 La_extern void
00945 F77_NAME(dpttrf)(const int* n, double* d, double* e, int* info);
00946 /* DPTTRS - solve a system of linear equations A * X = B with a */
00947 /* symmetric positive definite tridiagonal matrix A using the */
00948 /* factorization A = L*D*L**T or A = U**T*D*U computed by DPTTRF */
00949 La_extern void
00950 F77_NAME(dpttrs)(const int* n, const int* nrhs,
00951          const double* d, const double* e,
00952          double* b, const int* ldb, int* info);
00953 /* DRSCL - multiply an n-element real vector x by the real scalar */
00954 /* 1/a */
00955 La_extern void
00956 F77_NAME(drscl)(const int* n, const double* da,
00957         double* x, const int* incx);
00958 
00959 //* Double precision Symmetric Band matrices  -> DSB
00960 
00961 /* DSBEV - compute all the eigenvalues and, optionally, */
00962 /* eigenvectors of a real symmetric band matrix A */
00963 La_extern void
00964 F77_NAME(dsbev)(const char* jobz, const char* uplo,
00965         const int* n, const int* kd,
00966         double* ab, const int* ldab,
00967         double* w, double* z, const int* ldz,
00968         double* work, int* info);
00969 /* DSBEVD - compute all the eigenvalues and, optionally, */
00970 /* eigenvectors of a real symmetric band matrix A */
00971 La_extern void
00972 F77_NAME(dsbevd)(const char* jobz, const char* uplo,
00973          const int* n, const int* kd,
00974          double* ab, const int* ldab,
00975          double* w, double* z, const int* ldz,
00976          double* work, const int* lwork,
00977          int* iwork, const int* liwork, int* info);
00978 /* DSBEVX - compute selected eigenvalues and, optionally, */
00979 /* eigenvectors of a real symmetric band matrix A */
00980 La_extern void
00981 F77_NAME(dsbevx)(const char* jobz, const char* range,
00982          const char* uplo, const int* n, const int* kd,
00983          double* ab, const int* ldab,
00984          double* q, const int* ldq,
00985          const double* vl, const double* vu,
00986          const int* il, const int* iu,
00987          const double* abstol,
00988          int* m, double* w,
00989          double* z, const int* ldz,
00990          double* work, int* iwork,
00991          int* ifail, int* info);
00992 /* DSBGST - reduce a real symmetric-definite banded generalized */
00993 /* eigenproblem A*x = lambda*B*x to standard form C*y = lambda*y, */
00994 La_extern void
00995 F77_NAME(dsbgst)(const char* vect, const char* uplo,
00996          const int* n, const int* ka, const int* kb,
00997          double* ab, const int* ldab,
00998          double* bb, const int* ldbb,
00999          double* x, const int* ldx,
01000          double* work, int* info);
01001 /* DSBGV - compute all the eigenvalues, and optionally, the */
01002 /* eigenvectors of a real generalized symmetric-definite banded */
01003 /* eigenproblem, of the form A*x=(lambda);*B*x */
01004 La_extern void
01005 F77_NAME(dsbgv)(const char* jobz, const char* uplo,
01006         const int* n, const int* ka, const int* kb,
01007         double* ab, const int* ldab,
01008         double* bb, const int* ldbb,
01009         double* w, double* z, const int* ldz,
01010         double* work, int* info);
01011 /* DSBTRD - reduce a real symmetric band matrix A to symmetric */
01012 /* tridiagonal form T by an orthogonal similarity transformation */
01013 La_extern void
01014 F77_NAME(dsbtrd)(const char* vect, const char* uplo,
01015          const int* n, const int* kd,
01016          double* ab, const int* ldab,
01017          double* d, double* e,
01018          double* q, const int* ldq,
01019          double* work, int* info);
01020 
01021 //* Double precision Symmetric Packed matrices  -> DSP
01022 
01023 /* DSPCON - estimate the reciprocal of the condition number (in */
01024 /* the 1-norm); of a real symmetric packed matrix A using the */
01025 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
01026 La_extern void
01027 F77_NAME(dspcon)(const char* uplo, const int* n,
01028          const double* ap, const int* ipiv,
01029          const double* anorm, double* rcond,
01030          double* work, int* iwork, int* info);
01031 /* DSPEV - compute all the eigenvalues and, optionally, */
01032 /* eigenvectors of a real symmetric matrix A in packed storage */
01033 La_extern void
01034 F77_NAME(dspev)(const char* jobz, const char* uplo, const int* n,
01035         double* ap, double* w, double* z, const int* ldz,
01036         double* work, int* info);
01037 /* DSPEVD - compute all the eigenvalues and, optionally, */
01038 /* eigenvectors of a real symmetric matrix A in packed storage */
01039 La_extern void
01040 F77_NAME(dspevd)(const char* jobz, const char* uplo,
01041          const int* n, double* ap, double* w,
01042          double* z, const int* ldz,
01043          double* work, const int* lwork,
01044          int* iwork, const int* liwork, int* info);
01045 /* DSPEVX - compute selected eigenvalues and, optionally, */
01046 /* eigenvectors of a real symmetric matrix A in packed storage */
01047 La_extern void
01048 F77_NAME(dspevx)(const char* jobz, const char* range,
01049          const char* uplo, const int* n, double* ap,
01050          const double* vl, const double* vu,
01051          const int* il, const int* iu,
01052          const double* abstol,
01053          int* m, double* w,
01054          double* z, const int* ldz,
01055          double* work, int* iwork,
01056          int* ifail, int* info);
01057 /* DSPGST - reduce a real symmetric-definite generalized */
01058 /* eigenproblem to standard form, using packed storage */
01059 La_extern void
01060 F77_NAME(dspgst)(const int* itype, const char* uplo,
01061          const int* n, double* ap, double* bp, int* info);
01062 /* DSPGV - compute all the eigenvalues and, optionally, the */
01063 /* eigenvectors of a real generalized symmetric-definite */
01064 /* eigenproblem, of the form A*x=(lambda)*B*x, A*Bx=(lambda)*x, */
01065 /* or B*A*x=(lambda)*x */
01066 La_extern void
01067 F77_NAME(dspgv)(const int* itype, const char* jobz,
01068         const char* uplo, const int* n,
01069         double* ap, double* bp, double* w,
01070         double* z, const int* ldz,
01071         double* work, int* info);
01072 
01073 /* DSPRFS - improve the computed solution to a system of linear */
01074 /* equations when the coefficient matrix is symmetric indefinite */
01075 /* and packed, and provides error bounds and backward error */
01076 /* estimates for the solution */
01077 La_extern void
01078 F77_NAME(dsprfs)(const char* uplo, const int* n,
01079          const int* nrhs, const double* ap,
01080          const double* afp, const int* ipiv,
01081          const double* b, const int* ldb,
01082          double* x, const int* ldx,
01083          double* ferr, double* berr,
01084          double* work, int* iwork, int* info);
01085 
01086 /* DSPSV - compute the solution to a real system of linear */
01087 /* equations  A * X = B, */
01088 La_extern void
01089 F77_NAME(dspsv)(const char* uplo, const int* n,
01090         const int* nrhs, double* ap, int* ipiv,
01091         double* b, const int* ldb, int* info);
01092 
01093 /* DSPSVX - use the diagonal pivoting factorization A = U*D*U**T */
01094 /* or A = L*D*L**T to compute the solution to a real system of */
01095 /* linear equations A * X = B, where A is an N-by-N symmetric */
01096 /* matrix stored in packed format and X and B are N-by-NRHS */
01097 /* matrices */
01098 La_extern void
01099 F77_NAME(dspsvx)(const int* fact, const char* uplo,
01100          const int* n, const int* nrhs,
01101          const double* ap, double* afp, int* ipiv,
01102          const double* b, const int* ldb,
01103          double* x, const int* ldx,
01104          double* rcond, double* ferr, double* berr,
01105          double* work, int* iwork, int* info);
01106 
01107 /* DSPTRD - reduce a real symmetric matrix A stored in packed */
01108 /* form to symmetric tridiagonal form T by an orthogonal */
01109 /* similarity transformation */
01110 La_extern void
01111 F77_NAME(dsptrd)(const char* uplo, const int* n,
01112          double* ap, double* d, double* e,
01113          double* tau, int* info);
01114 
01115 /* DSPTRF - compute the factorization of a real symmetric matrix */
01116 /* A stored in packed format using the Bunch-Kaufman diagonal */
01117 /* pivoting method */
01118 La_extern void
01119 F77_NAME(dsptrf)(const char* uplo, const int* n,
01120          double* ap, int* ipiv, int* info);
01121 
01122 /* DSPTRI - compute the inverse of a real symmetric indefinite */
01123 /* matrix A in packed storage using the factorization A = U*D*U**T */
01124 /* or A = L*D*L**T computed by DSPTRF */
01125 La_extern void
01126 F77_NAME(dsptri)(const char* uplo, const int* n,
01127          double* ap, const int* ipiv,
01128          double* work, int* info);
01129 
01130 /* DSPTRS - solve a system of linear equations A*X = B with a */
01131 /* real symmetric matrix A stored in packed format using the */
01132 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSPTRF */
01133 La_extern void
01134 F77_NAME(dsptrs)(const char* uplo, const int* n,
01135          const int* nrhs, const double* ap,
01136          const int* ipiv, double* b, const int* ldb, int* info);
01137 
01138 
01139 //* Double precision Symmetric Tridiagonal matrices  -> DST
01140 
01141 /* DSTEBZ - compute the eigenvalues of a symmetric tridiagonal */
01142 /* matrix T */
01143 La_extern void
01144 F77_NAME(dstebz)(const char* range, const char* order, const int* n,
01145          const double* vl, const double* vu,
01146          const int* il, const int* iu,
01147          const double *abstol,
01148          const double* d, const double* e,
01149          int* m, int* nsplit, double* w,
01150          int* iblock, int* isplit,
01151          double* work, int* iwork,
01152          int* info);
01153 /* DSTEDC - compute all eigenvalues and, optionally, eigenvectors */
01154 /* of a symmetric tridiagonal matrix using the divide and conquer */
01155 /* method */
01156 La_extern void
01157 F77_NAME(dstedc)(const char* compz, const int* n,
01158          double* d, double* e,
01159          double* z, const int* ldz,
01160          double* work, const int* lwork,
01161          int* iwork, const int* liwork, int* info);
01162 /* DSTEIN - compute the eigenvectors of a real symmetric */
01163 /* tridiagonal matrix T corresponding to specified eigenvalues, */
01164 /* using inverse iteration */
01165 La_extern void
01166 F77_NAME(dstein)(const int* n, const double* d, const double* e,
01167          const int* m, const double* w,
01168          const int* iblock, const int* isplit,
01169          double* z, const int* ldz,
01170          double* work, int* iwork,
01171          int* ifail, int* info);
01172 /* DSTEQR - compute all eigenvalues and, optionally, eigenvectors */
01173 /* of a symmetric tridiagonal matrix using the implicit QL or QR */
01174 /* method */
01175 La_extern void
01176 F77_NAME(dsteqr)(const char* compz, const int* n, double* d, double* e,
01177          double* z, const int* ldz, double* work, int* info);
01178 /* DSTERF - compute all eigenvalues of a symmetric tridiagonal */
01179 /* matrix using the Pal-Walker-Kahan variant of the QL or QR */
01180 /* algorithm */
01181 La_extern void
01182 F77_NAME(dsterf)(const int* n, double* d, double* e, int* info);
01183 /* DSTEV - compute all eigenvalues and, optionally, eigenvectors */
01184 /* of a real symmetric tridiagonal matrix A */
01185 La_extern void
01186 F77_NAME(dstev)(const char* jobz, const int* n,
01187         double* d, double* e,
01188         double* z, const int* ldz,
01189         double* work, int* info);
01190 /* DSTEVD - compute all eigenvalues and, optionally, eigenvectors */
01191 /* of a real symmetric tridiagonal matrix */
01192 La_extern void
01193 F77_NAME(dstevd)(const char* jobz, const int* n,
01194          double* d, double* e,
01195          double* z, const int* ldz,
01196          double* work, const int* lwork,
01197          int* iwork, const int* liwork, int* info);
01198 /* DSTEVX - compute selected eigenvalues and, optionally, */
01199 /* eigenvectors of a real symmetric tridiagonal matrix A */
01200 La_extern void
01201 F77_NAME(dstevx)(const char* jobz, const char* range,
01202          const int* n, double* d, double* e,
01203          const double* vl, const double* vu,
01204          const int* il, const int* iu,
01205          const double* abstol,
01206          int* m, double* w,
01207          double* z, const int* ldz,
01208          double* work, int* iwork,
01209          int* ifail, int* info);
01210 
01211 //* Double precision SYmmetric matrices  -> DSY
01212 
01213 /* DSYCON - estimate the reciprocal of the condition number (in */
01214 /* the 1-norm); of a real symmetric matrix A using the */
01215 /* factorization A = U*D*U**T or A = L*D*L**T computed by DSYTRF */
01216 La_extern void
01217 F77_NAME(dsycon)(const char* uplo, const int* n,
01218          const double* a, const int* lda,
01219          const int* ipiv,
01220          const double* anorm, double* rcond,
01221          double* work, int* iwork, int* info);
01222 /* DSYEV - compute all eigenvalues and, optionally, eigenvectors */
01223 /* of a real symmetric matrix A */
01224 La_extern void
01225 F77_NAME(dsyev)(const char* jobz, const char* uplo,
01226         const int* n, double* a, const int* lda,
01227         double* w, double* work, const int* lwork, int* info);
01228 /* DSYEVD - compute all eigenvalues and, optionally, eigenvectors */
01229 /* of a real symmetric matrix A */
01230 La_extern void
01231 F77_NAME(dsyevd)(const char* jobz, const char* uplo,
01232          const int* n, double* a, const int* lda,
01233          double* w, double* work, const int* lwork,
01234          int* iwork, const int* liwork, int* info);
01235 /* DSYEVX - compute selected eigenvalues and, optionally, */
01236 /* eigenvectors of a real symmetric matrix A */
01237 La_extern void
01238 F77_NAME(dsyevx)(const char* jobz, const char* range,
01239          const char* uplo, const int* n,
01240          double* a, const int* lda,
01241          const double* vl, const double* vu,
01242          const int* il, const int* iu,
01243          const double* abstol,
01244          int* m, double* w,
01245          double* z, const int* ldz,
01246          double* work, const int* lwork, int* iwork,
01247          int* ifail, int* info);
01248 /* DSYEVR - compute all eigenvalues and, optionally, eigenvectors   */
01249 /* of a real symmetric matrix A                    */
01250 La_extern void
01251 F77_NAME(dsyevr)(const char *jobz, const char *range, const char *uplo,
01252          const int *n, double *a, const int *lda,
01253          const double *vl, const double *vu,
01254          const int *il, const int *iu,
01255          const double *abstol, int *m, double *w,
01256          double *z, const int *ldz, int *isuppz,
01257          double *work, const int *lwork,
01258          int *iwork, const int *liwork,
01259          int *info);
01260 /* DSYGS2 - reduce a real symmetric-definite generalized */
01261 /* eigenproblem to standard form */
01262 La_extern void
01263 F77_NAME(dsygs2)(const int* itype, const char* uplo,
01264          const int* n, double* a, const int* lda,
01265          const double* b, const int* ldb, int* info);
01266 /* DSYGST - reduce a real symmetric-definite generalized */
01267 /* eigenproblem to standard form */
01268 La_extern void
01269 F77_NAME(dsygst)(const int* itype, const char* uplo,
01270          const int* n, double* a, const int* lda,
01271          const double* b, const int* ldb, int* info);
01272 /* DSYGV - compute all the eigenvalues, and optionally, the */
01273 /* eigenvectors of a real generalized symmetric-definite */
01274 /* eigenproblem, of the form A*x=(lambda);*B*x, A*Bx=(lambda);*x, */
01275 /* or B*A*x=(lambda);*x */
01276 La_extern void
01277 F77_NAME(dsygv)(const int* itype, const char* jobz,
01278         const char* uplo, const int* n,
01279         double* a, const int* lda,
01280         double* b, const int* ldb,
01281         double* w, double* work, const int* lwork,
01282         int* info);
01283 /* DSYRFS - improve the computed solution to a system of linear */
01284 /* equations when the coefficient matrix is symmetric indefinite, */
01285 /* and provides error bounds and backward error estimates for the */
01286 /* solution */
01287 La_extern void
01288 F77_NAME(dsyrfs)(const char* uplo, const int* n,
01289          const int* nrhs,
01290          const double* a, const int* lda,
01291          const double* af, const int* ldaf,
01292          const int* ipiv,
01293          const double* b, const int* ldb,
01294          double* x, const int* ldx,
01295          double* ferr, double* berr,
01296          double* work, int* iwork, int* info);
01297 
01298 /* DSYSV - compute the solution to a real system of linear */
01299 /* equations  A * X = B, */
01300 La_extern void
01301 F77_NAME(dsysv)(const char* uplo, const int* n,
01302         const int* nrhs,
01303         double* a, const int* lda, int* ipiv,
01304         double* b, const int* ldb,
01305         double* work, const int* lwork, int* info);
01306 
01307 /* DSYSVX - use the diagonal pivoting factorization to compute */
01308 /* the solution to a real system of linear equations A * X = B, */
01309 La_extern void
01310 F77_NAME(dsysvx)(const int* fact, const char* uplo,
01311          const int* n, const int* nrhs,
01312          const double* a, const int* lda,
01313          double* af, const int* ldaf, int* ipiv,
01314          const double* b, const int* ldb,
01315          double* x, const int* ldx, double* rcond,
01316          double* ferr, double* berr,
01317          double* work, const int* lwork,
01318          int* iwork, int* info);
01319 
01320 /* DSYTD2 - reduce a real symmetric matrix A to symmetric */
01321 /* tridiagonal form T by an orthogonal similarity transformation */
01322 La_extern void
01323 F77_NAME(dsytd2)(const char* uplo, const int* n,
01324          double* a, const int* lda,
01325          double* d, double* e, double* tau,
01326          int* info);
01327 
01328 /* DSYTF2 - compute the factorization of a real symmetric matrix */
01329 /* A using the Bunch-Kaufman diagonal pivoting method */
01330 La_extern void
01331 F77_NAME(dsytf2)(const char* uplo, const int* n,
01332          double* a, const int* lda,
01333          int* ipiv, int* info);
01334 
01335 /* DSYTRD - reduce a real symmetric matrix A to real symmetric */
01336 /* tridiagonal form T by an orthogonal similarity transformation */
01337 La_extern void
01338 F77_NAME(dsytrd)(const char* uplo, const int* n,
01339          double* a, const int* lda,
01340          double* d, double* e, double* tau,
01341          double* work, const int* lwork, int* info);
01342 
01343 /* DSYTRF - compute the factorization of a real symmetric matrix */
01344 /* A using the Bunch-Kaufman diagonal pivoting method */
01345 La_extern void
01346 F77_NAME(dsytrf)(const char* uplo, const int* n,
01347          double* a, const int* lda, int* ipiv,
01348          double* work, const int* lwork, int* info);
01349 
01350 /* DSYTRI - compute the inverse of a real symmetric indefinite */
01351 /* matrix A using the factorization A = U*D*U**T or A = L*D*L**T */
01352 /* computed by DSYTRF */
01353 La_extern void
01354 F77_NAME(dsytri)(const char* uplo, const int* n,
01355          double* a, const int* lda, const int* ipiv,
01356          double* work, int* info);
01357 
01358 /* DSYTRS - solve a system of linear equations A*X = B with a */
01359 /* real symmetric matrix A using the factorization A = U*D*U**T or */
01360 /* A = L*D*L**T computed by DSYTRF */
01361 La_extern void
01362 F77_NAME(dsytrs)(const char* uplo, const int* n,
01363          const int* nrhs,
01364          const double* a, const int* lda,
01365          const int* ipiv,
01366          double* b, const int* ldb, int* info);
01367 
01368 //* Double precision Triangular Band matrices  -> DTB
01369 
01370 /* DTBCON - estimate the reciprocal of the condition number of a */
01371 /* triangular band matrix A, in either the 1-norm or the */
01372 /* infinity-norm */
01373 La_extern void
01374 F77_NAME(dtbcon)(const char* norm, const char* uplo,
01375          const char* diag, const int* n, const int* kd,
01376          const double* ab, const int* ldab,
01377          double* rcond, double* work,
01378          int* iwork, int* info);
01379 /* DTBRFS - provide error bounds and backward error estimates for */
01380 /* the solution to a system of linear equations with a triangular */
01381 /* band coefficient matrix */
01382 La_extern void
01383 F77_NAME(dtbrfs)(const char* uplo, const char* trans,
01384          const char* diag, const int* n, const int* kd,
01385          const int* nrhs,
01386          const double* ab, const int* ldab,
01387          const double* b, const int* ldb,
01388          double* x, const int* ldx,
01389          double* ferr, double* berr,
01390          double* work, int* iwork, int* info);
01391 /* DTBTRS - solve a triangular system of the form   A * X = B or */
01392 /* A**T * X = B,  */
01393 La_extern void
01394 F77_NAME(dtbtrs)(const char* uplo, const char* trans,
01395          const char* diag, const int* n,
01396          const int* kd, const int* nrhs,
01397          const double* ab, const int* ldab,
01398          double* b, const int* ldb, int* info);
01399 
01400 //* Double precision Triangular matrices Generalized problems  -> DTG
01401 
01402 /* DTGEVC - compute some or all of the right and/or left */
01403 /* generalized eigenvectors of a pair of real upper triangular */
01404 /* matrices (A,B); */
01405 La_extern void
01406 F77_NAME(dtgevc)(const char* side, const char* howmny,
01407          const int* select, const int* n,
01408          const double* a, const int* lda,
01409          const double* b, const int* ldb,
01410          double* vl, const int* ldvl,
01411          double* vr, const int* ldvr,
01412          const int* mm, int* m, double* work, int* info);
01413 
01414 /* DTGSJA - compute the generalized singular value decomposition */
01415 /* (GSVD); of two real upper triangular (or trapezoidal); matrices */
01416 /* A and B */
01417 La_extern void
01418 F77_NAME(dtgsja)(const char* jobu, const char* jobv, const char* jobq,
01419          const int* m, const int* p, const int* n,
01420          const int* k, const int* l,
01421          double* a, const int* lda,
01422          double* b, const int* ldb,
01423          const double* tola, const double* tolb,
01424          double* alpha, double* beta,
01425          double* u, const int* ldu,
01426          double* v, const int* ldv,
01427          double* q, const int* ldq,
01428          double* work, int* ncycle, int* info);
01429 
01430 //* Double precision Triangular matrices Packed storage  -> DTP
01431 
01432 /* DTPCON - estimate the reciprocal of the condition number of a */
01433 /* packed triangular matrix A, in either the 1-norm or the */
01434 /* infinity-norm */
01435 La_extern void
01436 F77_NAME(dtpcon)(const char* norm, const char* uplo,
01437          const char* diag, const int* n,
01438          const double* ap, double* rcond,
01439          double* work, int* iwork, int* info);
01440 
01441 /* DTPRFS - provide error bounds and backward error estimates for */
01442 /* the solution to a system of linear equations with a triangular */
01443 /* packed coefficient matrix */
01444 La_extern void
01445 F77_NAME(dtprfs)(const char* uplo, const char* trans,
01446          const char* diag, const int* n,
01447          const int* nrhs, const double* ap,
01448          const double* b, const int* ldb,
01449          double* x, const int* ldx,
01450          double* ferr, double* berr,
01451          double* work, int* iwork, int* info);
01452 /* DTPTRI - compute the inverse of a real upper or lower */
01453 /* triangular matrix A stored in packed format */
01454 La_extern void
01455 F77_NAME(dtptri)(const char* uplo, const char* diag,
01456          const int* n, double* ap, int* info);
01457 
01458 /* DTPTRS - solve a triangular system of the form   A * X = B or */
01459 /* A**T * X = B, */
01460 La_extern void
01461 F77_NAME(dtptrs)(const char* uplo, const char* trans,
01462          const char* diag, const int* n,
01463          const int* nrhs, const double* ap,
01464          double* b, const int* ldb, int* info);
01465 
01466 
01467 //* Double precision TRiangular matrices -> DTR
01468 
01469 /* DTRCON - estimate the reciprocal of the condition number of a */
01470 /* triangular matrix A, in either the 1-norm or the infinity-norm */
01471 La_extern void
01472 F77_NAME(dtrcon)(const char* norm, const char* uplo,
01473          const char* diag, const int* n,
01474          const double* a, const int* lda,
01475          double* rcond, double* work,
01476          int* iwork, int* info);
01477 
01478 /* DTREVC - compute some or all of the right and/or left */
01479 /* eigenvectors of a real upper quasi-triangular matrix T */
01480 La_extern void
01481 F77_NAME(dtrevc)(const char* side, const char* howmny,
01482          const int* select, const int* n,
01483          const double* t, const int* ldt,
01484          double* vl, const int* ldvl,
01485          double* vr, const int* ldvr,
01486          const int* mm, int* m, double* work, int* info);
01487 
01488 /* DTREXC - reorder the real Schur factorization of a real matrix */
01489 /* A = Q*T*Q**T, so that the diagonal block of T with row index */
01490 /* IFST is moved to row ILST */
01491 La_extern void
01492 F77_NAME(dtrexc)(const char* compq, const int* n,
01493          double* t, const int* ldt,
01494          double* q, const int* ldq,
01495          int* ifst, int* ILST,
01496          double* work, int* info);
01497 
01498 /* DTRRFS - provide error bounds and backward error estimates for */
01499 /* the solution to a system of linear equations with a triangular */
01500 /* coefficient matrix */
01501 La_extern void
01502 F77_NAME(dtrrfs)(const char* uplo, const char* trans,
01503          const char* diag, const int* n, const int* nrhs,
01504          const double* a, const int* lda,
01505          const double* b, const int* ldb,
01506          double* x, const int* ldx,
01507          double* ferr, double* berr,
01508          double* work, int* iwork, int* info);
01509 
01510 /* DTRSEN - reorder the real Schur factorization of a real matrix */
01511 /* A = Q*T*Q**T, so that a selected cluster of eigenvalues appears */
01512 /* in the leading diagonal blocks of the upper quasi-triangular */
01513 /* matrix T, */
01514 La_extern void
01515 F77_NAME(dtrsen)(const char* job, const char* compq,
01516          const int* select, const int* n,
01517          double* t, const int* ldt,
01518          double* q, const int* ldq,
01519          double* wr, double* wi,
01520          int* m, double* s, double* sep,
01521          double* work, const int* lwork,
01522          int* iwork, const int* liwork, int* info);
01523 
01524 /* DTRSNA - estimate reciprocal condition numbers for specified */
01525 /* eigenvalues and/or right eigenvectors of a real upper */
01526 /* quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q */
01527 /* orthogonal); */
01528 La_extern void
01529 F77_NAME(dtrsna)(const char* job, const char* howmny,
01530          const int* select, const int* n,
01531          const double* t, const int* ldt,
01532          const double* vl, const int* ldvl,
01533          const double* vr, const int* ldvr,
01534          double* s, double* sep, const int* mm,
01535          int* m, double* work, const int* lwork,
01536          int* iwork, int* info);
01537 
01538 /* DTRSYL - solve the real Sylvester matrix equation */
01539 La_extern void
01540 F77_NAME(dtrsyl)(const char* trana, const char* tranb,
01541          const int* isgn, const int* m, const int* n,
01542          const double* a, const int* lda,
01543          const double* b, const int* ldb,
01544          double* c, const int* ldc,
01545          double* scale, int* info);
01546 
01547 /* DTRTI2 - compute the inverse of a real upper or lower */
01548 /* triangular matrix */
01549 La_extern void
01550 F77_NAME(dtrti2)(const char* uplo, const char* diag,
01551          const int* n, double* a, const int* lda,
01552          int* info);
01553 
01554 /* DTRTRI - compute the inverse of a real upper or lower */
01555 /* triangular matrix A */
01556 La_extern void
01557 F77_NAME(dtrtri)(const char* uplo, const char* diag,
01558          const int* n, double* a, const int* lda,
01559          int* info);
01560 
01561 /* DTRTRS - solve a triangular system of the form   A * X = B or */
01562 /* A**T * X = B  */
01563 La_extern void
01564 F77_NAME(dtrtrs)(const char* uplo, const char* trans,
01565          const char* diag, const int* n, const int* nrhs,
01566          const double* a, const int* lda,
01567          double* b, const int* ldb, int* info);
01568 
01569 
01570 
01571 //* Double precision utilities in Lapack 
01572 
01573 /* DHGEQZ - implement a single-/double-shift version of the QZ */
01574 /* method for finding the generalized eigenvalues */
01575 /* w(j);=(ALPHAR(j); + i*ALPHAI(j););/BETAR(j); of the equation */
01576 /* det( A - w(i); B ); = 0  In addition, the pair A,B may be */
01577 /* reduced to generalized Schur form */
01578 La_extern void
01579 F77_NAME(dhgeqz)(const char* job, const char* compq, const char* compz,
01580          const int* n, const int *ILO, const int* IHI,
01581          double* a, const int* lda,
01582          double* b, const int* ldb,
01583          double* alphar, double* alphai, const double* beta,
01584          double* q, const int* ldq,
01585          double* z, const int* ldz,
01586          double* work, const int* lwork, int* info);
01587 /* DHSEIN - use inverse iteration to find specified right and/or */
01588 /* left eigenvectors of a real upper Hessenberg matrix H */
01589 La_extern void
01590 F77_NAME(dhsein)(const char* side, const char* eigsrc,
01591          const char* initv, int* select,
01592          const int* n, double* h, const int* ldh,
01593          double* wr, double* wi,
01594          double* vl, const int* ldvl,
01595          double* vr, const int* ldvr,
01596          const int* mm, int* m, double* work,
01597          int* ifaill, int* ifailr, int* info);
01598 /* DHSEQR - compute the eigenvalues of a real upper Hessenberg */
01599 /* matrix H and, optionally, the matrices T and Z from the Schur */
01600 /* decomposition H = Z T Z**T, where T is an upper */
01601 /* quasi-triangular matrix (the Schur form);, and Z is the */
01602 /* orthogonal matrix of Schur vectors */
01603 La_extern void
01604 F77_NAME(dhseqr)(const char* job, const char* compz, const int* n,
01605          const int* ilo, const int* ihi,
01606          double* h, const int* ldh,
01607          double* wr, double* wi,
01608          double* z, const int* ldz,
01609          double* work, const int* lwork, int* info);
01610 /* DLABAD - take as input the values computed by SLAMCH for */
01611 /* underflow and overflow, and returns the square root of each of */
01612 /* these values if the log of LARGE is sufficiently large */
01613 La_extern void
01614 F77_NAME(dlabad)(double* small, double* large);
01615 /* DLABRD - reduce the first NB rows and columns of a real */
01616 /* general m by n matrix A to upper or lower bidiagonal form by an */
01617 /* orthogonal transformation Q' * A * P, and returns the matrices */
01618 /* X and Y which are needed to apply the transformation to the */
01619 /* unreduced part of A */
01620 La_extern void
01621 F77_NAME(dlabrd)(const int* m, const int* n, const int* nb,
01622          double* a, const int* lda, double* d, double* e,
01623          double* tauq, double* taup,
01624          double* x, const int* ldx, double* y, const int* ldy);
01625 /* DLACON - estimate the 1-norm of a square, real matrix A */
01626 La_extern void
01627 F77_NAME(dlacon)(const int* n, double* v, double* x,
01628          int* isgn, double* est, int* kase);
01629 /* DLACPY - copy all or part of a two-dimensional matrix A to */
01630 /* another matrix B */
01631 La_extern void
01632 F77_NAME(dlacpy)(const char* uplo, const int* m, const int* n,
01633          const double* a, const int* lda,
01634          double* b, const int* ldb);
01635 /* DLADIV - perform complex division in real arithmetic  */
01636 La_extern void
01637 F77_NAME(dladiv)(const double* a, const double* b,
01638          const double* c, const double* d,
01639          double* p, double* q);
01640 /* DLAE2 - compute the eigenvalues of a 2-by-2 symmetric matrix [ A B ] */
01641 /*                              [ B C ] */
01642 La_extern void
01643 F77_NAME(dlae2)(const double* a, const double* b, const double* c,
01644         double* rt1, double* rt2);
01645 /* DLAEBZ - contain the iteration loops which compute and use the */
01646 /* function N(w);, which is the count of eigenvalues of a */
01647 /* symmetric tridiagonal matrix T less than or equal to its */
01648 /* argument w  */
01649 La_extern void
01650 F77_NAME(dlaebz)(const int* ijob, const int* nitmax, const int* n,
01651          const int* mmax, const int* minp, const int* nbmin,
01652          const double* abstol, const double* reltol,
01653          const double* pivmin, double* d, double* e,
01654          double* e2, int* nval, double* ab, double* c,
01655          int* mout, int* nab, double* work, int* iwork,
01656          int* info);
01657 /* DLAED0 - compute all eigenvalues and corresponding */
01658 /* eigenvectors of a symmetric tridiagonal matrix using the divide */
01659 /* and conquer method */
01660 La_extern void
01661 F77_NAME(dlaed0)(const int* icompq, const int* qsiz, const int* n,
01662          double* d, double* e, double* q, const int* ldq,
01663          double* qstore, const int* ldqs,
01664          double* work, int* iwork, int* info);
01665 /* DLAED1 - compute the updated eigensystem of a diagonal matrix */
01666 /* after modification by a rank-one symmetric matrix */
01667 La_extern void
01668 F77_NAME(dlaed1)(const int* n, double* d, double* q, const int* ldq,
01669          int* indxq, const double* rho, const int* cutpnt,
01670          double* work, int* iwork, int* info);
01671 /* DLAED2 - merge the two sets of eigenvalues together into a */
01672 /* single sorted set */
01673 La_extern void
01674 F77_NAME(dlaed2)(const int* k, const int* n, double* d,
01675          double* q, const int* ldq, int* indxq,
01676          double* rho, double* z,
01677          double* dlamda, double* w, double* q2,
01678          int* indx, int* indxc, int* indxp,
01679          int* coltyp, int* info);
01680 /* DLAED3 - find the roots of the secular equation, as defined by */
01681 /* the values in double* d, W, and RHO, between KSTART and KSTOP */
01682 La_extern void
01683 F77_NAME(dlaed3)(const int* k, const int* n, const int* n1,
01684          double* d, double* q, const int* ldq,
01685          const double* rho, double* dlamda, double* q2, 
01686          int* indx, int* ctot, double* w,
01687          double* s, int* info);
01688 /* DLAED4 - subroutine computes the I-th updated eigenvalue of a */
01689 /* symmetric rank-one modification to a diagonal matrix whose */
01690 /* elements are given in the array d, and that   D(i); < D(j); for */
01691 /* i < j  and that RHO > 0 */
01692 La_extern void
01693 F77_NAME(dlaed4)(const int* n, const int* i, const double* d,
01694          const double* z, const double* delta,
01695          const double* rho, double* dlam, int* info);
01696 /* DLAED5 - subroutine computes the I-th eigenvalue of a */
01697 /* symmetric rank-one modification of a 2-by-2 diagonal matrix */
01698 /* diag( D ); + RHO  The diagonal elements in the array D are */
01699 /* assumed to satisfy   D(i); < D(j); for i < j  */
01700 La_extern void
01701 F77_NAME(dlaed5)(const int* i, const double* d, const double* z,
01702          double* delta, const double* rho, double* dlam);
01703 /* DLAED6 - compute the positive or negative root (closest to the */
01704 /* origin); of  z(1); z(2); z(3); f(x); = rho + --------- + */
01705 /* ---------- + ---------  d(1);-x d(2);-x d(3);-x  It is assumed */
01706 /* that   if ORGATI = .true  */
01707 La_extern void
01708 F77_NAME(dlaed6)(const int* kniter, const int* orgati,
01709          const double* rho, const double* d,
01710          const double* z, const double* finit,
01711          double* tau, int* info);
01712 /* DLAED7 - compute the updated eigensystem of a diagonal matrix */
01713 /* after modification by a rank-one symmetric matrix */
01714 La_extern void
01715 F77_NAME(dlaed7)(const int* icompq, const int* n,
01716          const int* qsiz, const int* tlvls,
01717          const int* curlvl, const int* curpbm,
01718          double* d, double* q, const int* ldq,
01719          int* indxq, const double* rho, const int* cutpnt,
01720          double* qstore, double* qptr, const int* prmptr,
01721          const int* perm, const int* givptr,
01722          const int* givcol, const double* givnum,
01723          double* work, int* iwork, int* info);
01724 /* DLAED8 - merge the two sets of eigenvalues together into a */
01725 /* single sorted set */
01726 La_extern void
01727 F77_NAME(dlaed8)(const int* icompq, const int* k,
01728          const int* n, const int* qsiz,
01729          double* d, double* q, const int* ldq,
01730          const int* indxq, double* rho,
01731          const int* cutpnt, const double* z,
01732          double* dlamda, double* q2, const int* ldq2,
01733          double* w, int* perm, int* givptr,
01734          int* givcol, double* givnum, int* indxp,
01735          int* indx, int* info);
01736 /* DLAED9 - find the roots of the secular equation, as defined by */
01737 /* the values in double* d, Z, and RHO, between KSTART and KSTOP */
01738 La_extern void
01739 F77_NAME(dlaed9)(const int* k, const int* kstart, const int* kstop,
01740          const int* n, double* d, double* q, const int* ldq,
01741          const double* rho, const double* dlamda,
01742          const double* w, double* s, const int* lds, int* info);
01743 /* DLAEDA - compute the Z vector corresponding to the merge step */
01744 /* in the CURLVLth step of the merge process with TLVLS steps for */
01745 /* the CURPBMth problem */
01746 La_extern void
01747 F77_NAME(dlaeda)(const int* n, const int* tlvls, const int* curlvl,
01748          const int* curpbm, const int* prmptr, const int* perm,
01749          const int* givptr, const int* givcol,
01750          const double* givnum, const double* q,
01751          const int* qptr, double* z, double* ztemp, int* info);
01752 /* DLAEIN - use inverse iteration to find a right or left */
01753 /* eigenvector corresponding to the eigenvalue (WR,WI); of a real */
01754 /* upper Hessenberg matrix H */
01755 La_extern void
01756 F77_NAME(dlaein)(const int* rightv, const int* noinit, const int* n,
01757          const double* h, const int* ldh,
01758          const double* wr, const double* wi,
01759          double* vr, double* vi,
01760          double* b, const int* ldb, double* work,
01761          const double* eps3, const double* smlnum,
01762          const double* bignum, int* info);
01763 /* DLAEV2 - compute the eigendecomposition of a 2-by-2 symmetric */
01764 /* matrix  [ A B ]  [ B C ] */
01765 La_extern void
01766 F77_NAME(dlaev2)(const double* a, const double* b, const double* c,
01767          double* rt1, double* rt2, double* cs1, double *sn1);
01768 /* DLAEXC - swap adjacent diagonal blocks T11 and T22 of order 1 */
01769 /* or 2 in an upper quasi-triangular matrix T by an orthogonal */
01770 /* similarity transformation */
01771 La_extern void
01772 F77_NAME(dlaexc)(const int* wantq, const int* n, double* t, const int* ldt,
01773           double* q, const int* ldq, const int* j1,
01774          const int* n1, const int* n2, double* work, int* info);
01775 /* DLAG2 - compute the eigenvalues of a 2 x 2 generalized */
01776 /* eigenvalue problem A - w B, with scaling as necessary to aextern void */
01777 /* over-/underflow */
01778 La_extern void
01779 F77_NAME(dlag2)(const double* a, const int* lda, const double* b,
01780         const int* ldb, const double* safmin,
01781         double* scale1, double* scale2,
01782         double* wr1, double* wr2, double* wi);
01783 /* DLAGS2 - compute 2-by-2 orthogonal matrices U, V and Q, such */
01784 /* that if ( UPPER ); then   U'*A*Q = U'*( A1 A2 );*Q = ( x 0 ); */
01785 /* ( 0 A3 ); ( x x ); and  V'*B*Q = V'*( B1 B2 );*Q = ( x 0 );  ( */
01786 /* 0 B3 ); ( x x );  or if ( .NOT.UPPER ); then   U'*A*Q = U'*( A1 */
01787 /* 0 );*Q = ( x x );  ( A2 A3 ); ( 0 x ); and  V'*B*Q = V'*( B1 0 */
01788 /* );*Q = ( x x );  ( B2 B3 ); ( 0 x );  The rows of the */
01789 /* transformed A and B are parallel, where   U = ( CSU SNU );, V = */
01790 /* ( CSV SNV );, Q = ( CSQ SNQ );  ( -SNU CSU ); ( -SNV CSV ); ( */
01791 /* -SNQ CSQ );  Z' denotes the transpose of Z */
01792 La_extern void
01793 F77_NAME(dlags2)(const int* upper,
01794          const double* a1, const double* a2, const double* a3,
01795          const double* b1, const double* b2, const double* b3,
01796          double* csu, double* snu,
01797          double* csv, double* snv, double *csq, double *snq);
01798 /* DLAGTF - factorize the matrix (T - lambda*I);, where T is an n */
01799 /* by n tridiagonal matrix and lambda is a scalar, as   T - */
01800 /* lambda*I = PLU, */
01801 La_extern void
01802 F77_NAME(dlagtf)(const int* n, double* a, const double* lambda,
01803          double* b, double* c, const double *tol,
01804          double* d, int* in, int* info);
01805 /* DLAGTM - perform a matrix-vector product of the form   B := */
01806 /* alpha * A * X + beta * B  where A is a tridiagonal matrix of */
01807 /* order N, B and X are N by NRHS matrices, and alpha and beta are */
01808 /* real scalars, each of which may be 0., 1., or -1 */
01809 La_extern void
01810 F77_NAME(dlagtm)(const char* trans, const int* n, const int* nrhs,
01811          const double* alpha, const double* dl,
01812          const double* d, const double* du,
01813          const double* x, const int* ldx, const double* beta,
01814          double* b, const int* ldb);
01815 /* DLAGTS - may be used to solve one of the systems of equations */
01816 /* (T - lambda*I);*x = y or (T - lambda*I);'*x = y, */
01817 La_extern void
01818 F77_NAME(dlagts)(const int* job, const int* n,
01819          const double* a, const double* b,
01820          const double* c, const double* d,
01821          const int* in, double* y, double* tol, int* info);
01822 /* DLAHQR - an auxiliary routine called by DHSEQR to update the */
01823 /* eigenvalues and Schur decomposition already computed by DHSEQR, */
01824 /* by dealing with the Hessenberg submatrix in rows and columns */
01825 /* ILO to IHI */
01826 La_extern void
01827 F77_NAME(dlahqr)(const int* wantt, const int* wantz, const int* n,
01828          const int* ilo, const int* ihi,
01829          double* H, const int* ldh, double* wr, double* wi,
01830          const int* iloz, const int* ihiz,
01831          double* z, const int* ldz, int* info);
01832 /* DLAIC1 - apply one step of incremental condition estimation in */
01833 /* its simplest version */
01834 La_extern void
01835 F77_NAME(dlaic1)(const int* job, const int* j, const double* x,
01836          const double* sest, const double* w,
01837          const double* gamma, double* sestpr,
01838          double* s, double* c);
01839 /* DLALN2 - solve a system of the form (ca A - w D ); X = s B or */
01840 /* (ca A' - w D); X = s B with possible scaling ("s"); and */
01841 /* perturbation of A */
01842 La_extern void
01843 F77_NAME(dlaln2)(const int* ltrans, const int* na, const int* nw,
01844          const double* smin, const double* ca,
01845          const double* a, const int* lda,
01846          const double* d1, const double* d2,
01847          const double* b, const int* ldb,
01848          const double* wr, const double* wi,
01849          double* x, const int* ldx, double* scale,
01850          double* xnorm, int* info);
01851 /* DLAMCH - determine double precision machine parameters */
01852 La_extern double
01853 F77_NAME(dlamch)(const char* cmach);
01854 /* DLAMRG - will create a permutation list which will merge the */
01855 /* elements of A (which is composed of two independently sorted */
01856 /* sets); into a single set which is sorted in ascending order */
01857 La_extern void
01858 F77_NAME(dlamrg)(const int* n1, const int* n2, const double* a,
01859          const int* dtrd1, const int* dtrd2, int* index);
01860 /* DLANGB - return the value of the one norm, or the Frobenius */
01861 /* norm, or the infinity norm, or the element of largest absolute */
01862 /* value of an n by n band matrix A, with kl sub-diagonals and ku */
01863 /* super-diagonals */
01864 La_extern double
01865 F77_NAME(dlangb)(const char* norm, const int* n,
01866          const int* kl, const int* ku, const double* ab,
01867          const int* ldab, double* work);
01868 /* DLANGE - return the value of the one norm, or the Frobenius */
01869 /* norm, or the infinity norm, or the element of largest absolute */
01870 /* value of a real matrix A */
01871 La_extern double
01872 F77_NAME(dlange)(const char* norm, const int* m, const int* n,
01873          const double* a, const int* lda, double* work);
01874 /* DLANGT - return the value of the one norm, or the Frobenius */
01875 /* norm, or the infinity norm, or the element of largest absolute */
01876 /* value of a real tridiagonal matrix A */
01877 La_extern double
01878 F77_NAME(dlangt)(const char* norm, const int* n,
01879          const double* dl, const double* d,
01880          const double* du);
01881 /* DLANHS - return the value of the one norm, or the Frobenius */
01882 /* norm, or the infinity norm, or the element of largest absolute */
01883 /* value of a Hessenberg matrix A */
01884 La_extern double
01885 F77_NAME(dlanhs)(const char* norm, const int* n,
01886          const double* a, const int* lda, double* work);
01887 /* DLANSB - return the value of the one norm, or the Frobenius */
01888 /* norm, or the infinity norm, or the element of largest absolute */
01889 /* value of an n by n symmetric band matrix A, with k */
01890 /* super-diagonals */
01891 La_extern double
01892 F77_NAME(dlansb)(const char* norm, const char* uplo,
01893          const int* n, const int* k,
01894          const double* ab, const int* ldab, double* work);
01895 /* DLANSP - return the value of the one norm, or the Frobenius */
01896 /* norm, or the infinity norm, or the element of largest absolute */
01897 /* value of a real symmetric matrix A, supplied in packed form */
01898 La_extern double
01899 F77_NAME(dlansp)(const char* norm, const char* uplo,
01900          const int* n, const double* ap, double* work);
01901 /* DLANST - return the value of the one norm, or the Frobenius */
01902 /* norm, or the infinity norm, or the element of largest absolute */
01903 /* value of a real symmetric tridiagonal matrix A */
01904 La_extern double
01905 F77_NAME(dlanst)(const char* norm, const int* n,
01906          const double* d, const double* e);
01907 /* DLANSY - return the value of the one norm, or the Frobenius */
01908 /* norm, or the infinity norm, or the element of largest absolute */
01909 /* value of a real symmetric matrix A */
01910 La_extern double
01911 F77_NAME(dlansy)(const char* norm, const char* uplo, const int* n,
01912          const double* a, const int* lda, double* work);
01913 /* DLANTB - return the value of the one norm, or the Frobenius */
01914 /* norm, or the infinity norm, or the element of largest absolute */
01915 /* value of an n by n triangular band matrix A, with ( k + 1 ) diagonals */
01916 La_extern double
01917 F77_NAME(dlantb)(const char* norm, const char* uplo,
01918          const char* diag, const int* n, const int* k,
01919          const double* ab, const int* ldab, double* work);
01920 /* DLANTP - return the value of the one norm, or the Frobenius */
01921 /* norm, or the infinity norm, or the element of largest absolute */
01922 /* value of a triangular matrix A, supplied in packed form */
01923 La_extern double
01924 F77_NAME(dlantp)(const char* norm, const char* uplo, const char* diag,
01925          const int* n, const double* ap, double* work);
01926 /* DLANTR - return the value of the one norm, or the Frobenius */
01927 /* norm, or the infinity norm, or the element of largest absolute */
01928 /* value of a trapezoidal or triangular matrix A */
01929 La_extern double
01930 F77_NAME(dlantr)(const char* norm, const char* uplo,
01931          const char* diag, const int* m, const int* n,
01932          const double* a, const int* lda, double* work);
01933 /* DLANV2 - compute the Schur factorization of a real 2-by-2 */
01934 /* nonsymmetric matrix in standard form */
01935 La_extern void
01936 F77_NAME(dlanv2)(double* a, double* b, double* c, double* d,
01937          double* rt1r, double* rt1i, double* rt2r, double* rt2i,
01938          double* cs, double *sn);
01939 /* DLAPLL - two column vectors X and Y, let A = ( X Y ); */
01940 La_extern void
01941 F77_NAME(dlapll)(const int* n, double* x, const int* incx,
01942          double* y, const int* incy, double* ssmin);
01943 /* DLAPMT - rearrange the columns of the M by N matrix X as */
01944 /* specified by the permutation K(1);,K(2);,...,K(N); of the */
01945 /* integers 1,...,N */
01946 La_extern void
01947 F77_NAME(dlapmt)(const int* forwrd, const int* m, const int* n,
01948          double* x, const int* ldx, const int* k);
01949 /* DLAPY2 - return sqrt(x**2+y**2);, taking care not to cause */
01950 /* unnecessary overflow */
01951 La_extern double
01952 F77_NAME(dlapy2)(const double* x, const double* y);
01953 /* DLAPY3 - return sqrt(x**2+y**2+z**2);, taking care not to */
01954 /* cause unnecessary overflow */
01955 La_extern double
01956 F77_NAME(dlapy3)(const double* x, const double* y, const double* z);
01957 /* DLAQGB - equilibrate a general M by N band matrix A with KL */
01958 /* subdiagonals and KU superdiagonals using the row and scaling */
01959 /* factors in the vectors R and C */
01960 La_extern void
01961 F77_NAME(dlaqgb)(const int* m, const int* n,
01962          const int* kl, const int* ku,
01963          double* ab, const int* ldab,
01964          double* r, double* c,
01965          double* rowcnd, double* colcnd,
01966          const double* amax, char* equed);
01967 /* DLAQGE - equilibrate a general M by N matrix A using the row */
01968 /* and scaling factors in the vectors R and C */
01969 La_extern void
01970 F77_NAME(dlaqge)(const int* m, const int* n,
01971          double* a, const int* lda,
01972          double* r, double* c,
01973          double* rowcnd, double* colcnd,
01974          const double* amax, char* equed);
01975 /* DLAQSB - equilibrate a symmetric band matrix A using the */
01976 /* scaling factors in the vector S */
01977 La_extern void
01978 F77_NAME(dlaqsb)(const char* uplo, const int* n, const int* kd,
01979          double* ab, const int* ldab, const double* s,
01980          const double* scond, const double* amax, char* equed);
01981 /* DLAQSP - equilibrate a symmetric matrix A using the scaling */
01982 /* factors in the vector S */
01983 La_extern void
01984 F77_NAME(dlaqsp)(const char* uplo, const int* n,
01985          double* ap, const double* s, const double* scond,
01986          const double* amax, int* equed);
01987 /* DLAQSY - equilibrate a symmetric matrix A using the scaling */
01988 /* factors in the vector S */
01989 La_extern void
01990 F77_NAME(dlaqsy)(const char* uplo, const int* n,
01991          double* a, const int* lda,
01992          const double* s, const double* scond,
01993          const double* amax, int* equed);
01994 /* DLAQTR - solve the real quasi-triangular system   */
01995 /* op(T) * p = scale*c */
01996 La_extern void
01997 F77_NAME(dlaqtr)(const int* ltran, const int* lreal, const int* n,
01998          const double* t, const int* ldt,
01999          const double* b, const double* w,
02000          double* scale, double* x, double* work, int* info);
02001 /* DLAR2V - apply a vector of real plane rotations from both */
02002 /* sides to a sequence of 2-by-2 real symmetric matrices, defined */
02003 /* by the elements of the vectors x, y and z  */
02004 La_extern void
02005 F77_NAME(dlar2v)(const int* n, double* x, double* y,
02006          double* z, const int* incx,
02007          const double* c, const double* s,
02008          const int* incc);
02009 /* DLARF - apply a real elementary reflector H to a real m by n */
02010 /* matrix C, from either the left or the right */
02011 La_extern void
02012 F77_NAME(dlarf)(const char* side, const int* m, const int* n,
02013         const double* v, const int* incv, const double* tau,
02014         double* c, const int* ldc, double* work);
02015 /* DLARFB - apply a real block reflector H or its transpose H' */
02016 /* to a real m by n matrix C, from either the left or the right */
02017 La_extern void
02018 F77_NAME(dlarfb)(const char* side, const char* trans,
02019          const char* direct, const char* storev,
02020          const int* m, const int* n, const int* k,
02021          const double* v, const int* ldv,
02022          const double* t, const int* ldt,
02023          double* c, const int* ldc,
02024          double* work, const int* lwork);
02025 /* DLARFG - generate a real elementary reflector H of order n, */
02026 /* such that   H * ( alpha ) = ( beta ), H' * H = I */
02027 La_extern void
02028 F77_NAME(dlarfg)(const int* n, const double* alpha,
02029          double* x, const int* incx, double* tau);
02030 /* DLARFT - form the triangular factor T of a real block */
02031 /* reflector H of order n, which is defined as a product of k */
02032 /* elementary reflectors */
02033 La_extern void
02034 F77_NAME(dlarft)(const char* direct, const char* storev,
02035          const int* n, const int* k, double* v, const int* ldv,
02036          const double* tau, double* t, const int* ldt);
02037 /* DLARFX - apply a real elementary reflector H to a real m by n */
02038 /* matrix C, from either the left or the right */
02039 La_extern void
02040 F77_NAME(dlarfx)(const char* side, const int* m, const int* n,
02041          const double* v, const double* tau,
02042          double* c, const int* ldc, double* work);
02043 /* DLARGV - generate a vector of real plane rotations, determined */
02044 /* by elements of the real vectors x and y */
02045 La_extern void
02046 F77_NAME(dlargv)(const int* n, double* x, const int* incx,
02047          double* y, const int* incy, double* c, const int* incc);
02048 /* DLARNV - return a vector of n random real numbers from a */
02049 /* uniform or normal distribution */
02050 La_extern void
02051 F77_NAME(dlarnv)(const int* idist, int* iseed, const int* n, double* x);
02052 /* DLARTG - generate a plane rotation so that   [ CS SN ]  */
02053 La_extern void
02054 F77_NAME(dlartg)(const double* f, const double* g, double* cs,
02055          double* sn, double *r);
02056 /* DLARTV - apply a vector of real plane rotations to elements of */
02057 /* the real vectors x and y */
02058 La_extern void
02059 F77_NAME(dlartv)(const int* n, double* x, const int* incx,
02060          double* y, const int* incy,
02061          const double* c, const double* s,
02062          const int* incc);
02063 /* DLARUV - return a vector of n random real numbers from a */
02064 /* uniform (0,1); */
02065 La_extern void
02066 F77_NAME(dlaruv)(int* iseed, const int* n, double* x);
02067 
02068 /* DLAS2 - compute the singular values of the 2-by-2 matrix */
02069 /* [ F G ]  [ 0 H ] */
02070 La_extern void
02071 F77_NAME(dlas2)(const double* f, const double* g, const double* h,
02072          double* ssmin, double* ssmax);
02073 
02074 /* DLASCL - multiply the M by N real matrix A by the real scalar */
02075 /* CTO/CFROM */
02076 La_extern void
02077 F77_NAME(dlascl)(const char* type,
02078          const int* kl,const int* ku,
02079          double* cfrom, double* cto,
02080          const int* m, const int* n,
02081          double* a, const int* lda, int* info);
02082 
02083 /* DLASET - initialize an m-by-n matrix A to BETA on the diagonal */
02084 /* and ALPHA on the offdiagonals */
02085 La_extern void
02086 F77_NAME(dlaset)(const char* uplo, const int* m, const int* n,
02087          const double* alpha, const double* beta,
02088          double* a, const int* lda);
02089 /* DLASQ1 - DLASQ1 computes the singular values of a real N-by-N */
02090 /* bidiagonal  matrix with diagonal D and off-diagonal E */
02091 La_extern void
02092 F77_NAME(dlasq1)(const int* n, double* d, double* e,
02093          double* work, int* info);
02094 /* DLASQ2 - DLASQ2 computes the singular values of a real N-by-N */
02095 /* unreduced  bidiagonal matrix with squared diagonal elements in */
02096 /* Q and  squared off-diagonal elements in E */
02097 La_extern void
02098 F77_NAME(dlasq2)(const int* m, double* q, double* e,
02099          double* qq, double* ee, const double* eps,
02100          const double* tol2, const double* small2,
02101          double* sup, int* kend, int* info);
02102 /* DLASQ3 - DLASQ3 is the workhorse of the whole bidiagonal SVD */
02103 /* algorithm */
02104 La_extern void
02105 F77_NAME(dlasq3)(int* n, double* q, double* e, double* qq,
02106          double* ee, double* sup, double *sigma,
02107          int* kend, int* off, int* iphase,
02108          const int* iconv, const double* eps,
02109          const double* tol2, const double* small2);
02110 /* DLASQ4 - DLASQ4 estimates TAU, the smallest eigenvalue of a */
02111 /* matrix */
02112 La_extern void
02113 F77_NAME(dlasq4)(const int* n, const double* q, const double* e,
02114          double* tau, double* sup);
02115 /* DLASR - perform the transformation   A := P*A, when SIDE = 'L' */
02116 /* or 'l' ( Left-hand side );   A := A*P', when SIDE = 'R' or 'r' */
02117 /* ( Right-hand side );  where A is an m by n real matrix and P is */
02118 /* an orthogonal matrix, */
02119 La_extern void
02120 F77_NAME(dlasr)(const char* side, const char* pivot,
02121         const char* direct, const int* m, const int* n,
02122         const double* c, const double* s,
02123         double* a, const int* lda);
02124 /* DLASRT - the numbers in D in increasing order (if ID = 'I'); */
02125 /* or in decreasing order (if ID = 'D' ); */
02126 La_extern void
02127 F77_NAME(dlasrt)(const char* id, const int* n, double* d, int* info);
02128 /* DLASSQ - return the values scl and smsq such that   ( scl**2 */
02129 /* );*smsq = x( 1 );**2 +...+ x( n );**2 + ( scale**2 );*sumsq, */
02130 La_extern void
02131 F77_NAME(dlassq)(const int* n, const double* x, const int* incx,
02132          double* scale, double* sumsq);
02133 /* DLASV2 - compute the singular value decomposition of a 2-by-2 */
02134 /* triangular matrix  [ F G ]  [ 0 H ] */
02135 La_extern void
02136 F77_NAME(dlasv2)(const double* f, const double* g, const double* h,
02137          double* ssmin, double* ssmax, double* snr, double* csr,
02138          double* snl, double* csl);
02139 /* DLASWP - perform a series of row interchanges on the matrix A */
02140 La_extern void
02141 F77_NAME(dlaswp)(const int* n, double* a, const int* lda,
02142          const int* k1, const int* k2,
02143          const int* ipiv, const int* incx);
02144 /* DLASY2 - solve for the N1 by N2 matrix double* x, 1 <= N1,N2 <= 2, in */
02145 /* op(TL);*X + ISGN*X*op(TR); = SCALE*B, */
02146 La_extern void
02147 F77_NAME(dlasy2)(const int* ltranl, const int* ltranr,
02148          const int* isgn, const int* n1, const int* n2,
02149          const double* tl, const int* ldtl,
02150          const double* tr, const int* ldtr,
02151          const double* b, const int* ldb,
02152          double* scale, double* x, const int* ldx,
02153          double* xnorm, int* info);
02154 /* DLASYF - compute a partial factorization of a real symmetric */
02155 /* matrix A using the Bunch-Kaufman diagonal pivoting method */
02156 La_extern void
02157 F77_NAME(dlasyf)(const char* uplo, const int* n,
02158          const int* nb, const int* kb,
02159          double* a, const int* lda, int* ipiv,
02160          double* w, const int* ldw, int* info);
02161 /* DLATBS - solve one of the triangular systems   A *x = s*b or */
02162 /* A'*x = s*b  with scaling to prevent overflow, where A is an */
02163 /* upper or lower triangular band matrix */
02164 La_extern void
02165 F77_NAME(dlatbs)(const char* uplo, const char* trans,
02166          const char* diag, const char* normin,
02167          const int* n, const int* kd,
02168          const double* ab, const int* ldab,
02169          double* x, double* scale, double* cnorm, int* info);
02170 /* DLATPS - solve one of the triangular systems   A *x = s*b or */
02171 /* A'*x = s*b  with scaling to prevent overflow, where A is an */
02172 /* upper or lower triangular matrix stored in packed form */
02173 La_extern void
02174 F77_NAME(dlatps)(const char* uplo, const char* trans,
02175          const char* diag, const char* normin,
02176          const int* n, const double* ap,
02177          double* x, double* scale, double* cnorm, int* info);
02178 /* DLATRD - reduce NB rows and columns of a real symmetric matrix */
02179 /* A to symmetric tridiagonal form by an orthogonal similarity */
02180 /* transformation Q' * A * Q, and returns the matrices V and W */
02181 /* which are needed to apply the transformation to the unreduced */
02182 /* part of A */
02183 La_extern void
02184 F77_NAME(dlatrd)(const char* uplo, const int* n, const int* nb,
02185          double* a, const int* lda, double* e, double* tau,
02186          double* w, const int* ldw);
02187 /* DLATRS - solve one of the triangular systems   A *x = s*b or */
02188 /* A'*x = s*b  with scaling to prevent overflow */
02189 La_extern void
02190 F77_NAME(dlatrs)(const char* uplo, const char* trans,
02191          const char* diag, const char* normin,
02192          const int* n, const double* a, const int* lda,
02193          double* x, double* scale, double* cnorm, int* info);
02194 /* DLAUU2 - compute the product U * U' or L' * const int* l, where the */
02195 /* triangular factor U or L is stored in the upper or lower */
02196 /* triangular part of the array A */
02197 La_extern void
02198 F77_NAME(dlauu2)(const char* uplo, const int* n,
02199          double* a, const int* lda, int* info);
02200 /* DLAUUM - compute the product U * U' or L' * L, where the */
02201 /* triangular factor U or L is stored in the upper or lower */
02202 /* triangular part of the array A */
02203 La_extern void
02204 F77_NAME(dlauum)(const char* uplo, const int* n,
02205          double* a, const int* lda, int* info);
02206 
02207 /* ======================================================================== */
02208 
02209 
02210 //* Selected Double Complex Lapack Routines
02211 /*  ========
02212  */
02213 
02214 /* IZMAX1 finds the index of the element whose real part has maximum
02215  * absolute value. */
02216 La_extern int
02217 F77_NAME(izmax1)(const int *n, Rcomplex *cx, const int *incx);
02218 
02219 
02220 /*  ZGECON estimates the reciprocal of the condition number of a general
02221  *  complex matrix A, in either the 1-norm or the infinity-norm, using
02222  *  the LU factorization computed by ZGETRF.
02223  */
02224 La_extern void
02225 F77_NAME(zgecon)(const char *norm, const int *n,
02226          const Rcomplex *a, const int *lda,
02227          const double *anorm, double *rcond,
02228          Rcomplex *work, double *rwork, int *info);
02229 
02230 /* ZGESV computes the solution to a complex system of linear equations */
02231 La_extern void
02232 F77_NAME(zgesv)(const int *n, const int *nrhs, Rcomplex *a,
02233         const int *lda, int *ipiv, Rcomplex *b,
02234         const int *ldb, int *info);
02235 
02236 /*  ZGEQP3 computes a QR factorization with column pivoting */
02237 La_extern void
02238 F77_NAME(zgeqp3)(const int *m, const int *n,
02239          Rcomplex *a, const int *lda,
02240          int *jpvt, Rcomplex *tau,
02241          Rcomplex *work, const int *lwork,
02242          double *rwork, int *info);
02243 
02244 /* ZUNMQR applies Q or Q**H from the Left or Right */
02245 La_extern void
02246 F77_NAME(zunmqr)(const char *side, const char *trans,
02247          const int *m, const int *n, const int *k,
02248          Rcomplex *a, const int *lda,
02249          Rcomplex *tau,
02250          Rcomplex *c, const int *ldc,
02251          Rcomplex *work, const int *lwork, int *info);
02252 
02253 /*  ZTRTRS solves triangular systems */
02254 La_extern void
02255 F77_NAME(ztrtrs)(const char *uplo, const char *trans, const char *diag,
02256          const int *n, const int *nrhs,
02257          Rcomplex *a, const int *lda,
02258          Rcomplex *b, const int *ldb, int *info);
02259 /* ZGESVD - compute the singular value decomposition (SVD); of a   */
02260 /* real M-by-N matrix A, optionally computing the left and/or      */
02261 /* right singular vectors                      */
02262 La_extern void
02263 F77_NAME(zgesvd)(const char *jobu, const char *jobvt,
02264          const int *m, const int *n,
02265          Rcomplex *a, const int *lda, double *s,
02266          Rcomplex *u, const int *ldu,
02267          Rcomplex *vt, const int *ldvt,
02268          Rcomplex *work, const int *lwork, double *rwork,
02269          int *info);
02270 
02271 /* ZGHEEV - compute all eigenvalues and, optionally, eigenvectors */
02272 /* of a Hermitian matrix A */
02273 La_extern void
02274 F77_NAME(zheev)(const char *jobz, const char *uplo,
02275         const int *n, Rcomplex *a, const int *lda,
02276         double *w, Rcomplex *work, const int *lwork,
02277         double *rwork, int *info);
02278 
02279 /* ZGGEEV - compute all eigenvalues and, optionally, eigenvectors */
02280 /* of a complex non-symmetric matrix A */
02281 La_extern void
02282 F77_NAME(zgeev)(const char *jobvl, const char *jobvr,
02283         const int *n, Rcomplex *a, const int *lda,
02284         Rcomplex *wr, Rcomplex *vl, const int *ldvl,
02285         Rcomplex *vr, const int *ldvr,
02286         Rcomplex *work, const int *lwork,
02287         double *rwork, int *info);
02288 
02289 
02290 /* NOTE: The following entry points were traditionally in this file,
02291    but are not provided by R's libRlapack */
02292 
02293 /* DZSUM1 - take the sum of the absolute values of a complex */
02294 /* vector and returns a double precision result  */
02295 La_extern double
02296 F77_NAME(dzsum1)(const int *n, Rcomplex *CX, const int *incx);
02297 
02298 /*  ZLACN2 estimates the 1-norm of a square, complex matrix A.
02299  *  Reverse communication is used for evaluating matrix-vector products.
02300 */
02301 La_extern void
02302 F77_NAME(zlacn2)(const int *n, Rcomplex *v, Rcomplex *x,
02303                  double *est, int *kase, int *isave);
02304 
02305 /* ZLANTR  -  return the value of the one norm, or the Frobenius norm, */
02306 /* or the infinity norm, or the element of largest absolute value of */
02307 /* a trapezoidal or triangular matrix A */
02308 La_extern double
02309 F77_NAME(zlantr)(const char *norm, const char *uplo, const char *diag,
02310          const int *m, const int *n, Rcomplex *a,
02311          const int *lda, double *work);
02312 
02313 /* ======================================================================== */
02314 
02315 //* Other double precision and double complex Lapack routines provided by libRlapack.
02316 /*
02317    These are extracted from the CLAPACK headers.
02318 */
02319 
02320 La_extern void
02321 F77_NAME(dbdsdc)(char *uplo, char *compq, int *n, double *
02322     d, double *e, double *u, int *ldu, double *vt,
02323     int *ldvt, double *q, int *iq, double *work, int * iwork, int *info);
02324 
02325 La_extern void
02326 F77_NAME(dgelsd)(int *m, int *n, int *nrhs,
02327     double *a, int *lda, double *b, int *ldb, double *
02328     s, double *rcond, int *rank, double *work, int *lwork,
02329      int *iwork, int *info);
02330 
02331 La_extern void
02332 F77_NAME(dgesc2)(int *n, double *a, int *lda,
02333     double *rhs, int *ipiv, int *jpiv, double *scale);
02334 
02335 /* DGESDD - compute the singular value decomposition (SVD); of a   */
02336 /* real M-by-N matrix A, optionally computing the left and/or      */
02337 /* right singular vectors.  If singular vectors are desired, it uses a */
02338 /* divide-and-conquer algorithm.                   */
02339 La_extern void
02340 F77_NAME(dgesdd)(const char *jobz,
02341          const int *m, const int *n,
02342          double *a, const int *lda, double *s,
02343          double *u, const int *ldu,
02344          double *vt, const int *ldvt,
02345          double *work, const int *lwork, int *iwork, int *info);
02346 
02347 La_extern void
02348 F77_NAME(dgetc2)(int *n, double *a, int *lda, int
02349     *ipiv, int *jpiv, int *info);
02350 
02351 typedef int (*L_fp)();
02352 La_extern void
02353 F77_NAME(dggesx)(char *jobvsl, char *jobvsr, char *sort, L_fp
02354     delctg, char *sense, int *n, double *a, int *lda,
02355     double *b, int *ldb, int *sdim, double *alphar,
02356     double *alphai, double *beta, double *vsl, int *ldvsl,
02357      double *vsr, int *ldvsr, double *rconde, double *
02358     rcondv, double *work, int *lwork, int *iwork, int *
02359     liwork, int *bwork, int *info);
02360 
02361 La_extern void
02362 F77_NAME(dggev)(char *jobvl, char *jobvr, int *n, double *
02363     a, int *lda, double *b, int *ldb, double *alphar,
02364     double *alphai, double *beta, double *vl, int *ldvl,
02365     double *vr, int *ldvr, double *work, int *lwork,
02366     int *info);
02367 
02368 La_extern void
02369 F77_NAME(dggevx)(char *balanc, char *jobvl, char *jobvr, char *
02370     sense, int *n, double *a, int *lda, double *b,
02371     int *ldb, double *alphar, double *alphai, double *
02372     beta, double *vl, int *ldvl, double *vr, int *ldvr,
02373     int *ilo, int *ihi, double *lscale, double *rscale,
02374     double *abnrm, double *bbnrm, double *rconde, double *
02375     rcondv, double *work, int *lwork, int *iwork, int *
02376     bwork, int *info);
02377 
02378 La_extern void
02379 F77_NAME(dgtts2)(int *itrans, int *n, int *nrhs,
02380     double *dl, double *d, double *du, double *du2,
02381     int *ipiv, double *b, int *ldb);
02382 La_extern void
02383 F77_NAME(dlagv2)(double *a, int *lda, double *b, int *ldb, double *alphar,
02384          double *alphai, double * beta, double *csl, double *snl,
02385          double *csr, double * snr);
02386 
02387 La_extern void
02388 F77_NAME(dlals0)(int *icompq, int *nl, int *nr,
02389     int *sqre, int *nrhs, double *b, int *ldb, double
02390     *bx, int *ldbx, int *perm, int *givptr, int *givcol,
02391     int *ldgcol, double *givnum, int *ldgnum, double *
02392     poles, double *difl, double *difr, double *z, int *
02393     k, double *c, double *s, double *work, int *info);
02394 
02395 La_extern void
02396 F77_NAME(dlalsa)(int *icompq, int *smlsiz, int *n,
02397     int *nrhs, double *b, int *ldb, double *bx, int *
02398     ldbx, double *u, int *ldu, double *vt, int *k,
02399     double *difl, double *difr, double *z, double *
02400     poles, int *givptr, int *givcol, int *ldgcol, int *
02401     perm, double *givnum, double *c, double *s, double *
02402     work, int *iwork, int *info);
02403 
02404 La_extern void
02405 F77_NAME(dlalsd)(char *uplo, int *smlsiz, int *n, int
02406     *nrhs, double *d, double *e, double *b, int *ldb,
02407     double *rcond, int *rank, double *work, int *iwork,
02408     int *info);
02409 
02410 La_extern void
02411 F77_NAME(dlamc1)(int *beta, int *t, int *rnd, int
02412     *ieee1);
02413 
02414 La_extern void
02415 F77_NAME(dlamc2)(int *beta, int *t, int *rnd,
02416     double *eps, int *emin, double *rmin, int *emax,
02417     double *rmax);
02418 
02419 La_extern double
02420 F77_NAME(dlamc3)(double *a, double *b);
02421 
02422 La_extern void
02423 F77_NAME(dlamc4)(int *emin, double *start, int *base);
02424 
02425 La_extern void
02426 F77_NAME(dlamc5)(int *beta, int *p, int *emin,
02427     int *ieee, int *emax, double *rmax);
02428 
02429 La_extern void
02430 F77_NAME(dlaqp2)(int *m, int *n, int *offset,
02431     double *a, int *lda, int *jpvt, double *tau,
02432     double *vn1, double *vn2, double *work);
02433 
02434 La_extern void
02435 F77_NAME(dlaqps)(int *m, int *n, int *offset, int
02436     *nb, int *kb, double *a, int *lda, int *jpvt,
02437     double *tau, double *vn1, double *vn2, double *auxv,
02438     double *f, int *ldf);
02439 
02440 La_extern void
02441 F77_NAME(dlar1v)(int *n, int *b1, int *bn, double
02442     *sigma, double *d, double *l, double *ld, double *
02443     lld, double *gersch, double *z, double *ztz, double
02444     *mingma, int *r, int *isuppz, double *work);
02445 
02446 La_extern void
02447 F77_NAME(dlarrb)(int *n, double *d, double *l,
02448     double *ld, double *lld, int *ifirst, int *ilast,
02449     double *sigma, double *reltol, double *w, double *
02450     wgap, double *werr, double *work, int *iwork, int *
02451     info);
02452 
02453 La_extern void
02454 F77_NAME(dlarre)(int *n, double *d, double *e,
02455     double *tol, int *nsplit, int *isplit, int *m,
02456     double *w, double *woff, double *gersch, double *work,
02457      int *info);
02458 
02459 La_extern void
02460 F77_NAME(dlarrf)(int *n, double *d, double *l,
02461     double *ld, double *lld, int *ifirst, int *ilast,
02462     double *w, double *dplus, double *lplus, double *work,
02463      int *iwork, int *info);
02464 
02465 La_extern void
02466 F77_NAME(dlarrv)(int *n, double *d, double *l,
02467     int *isplit, int *m, double *w, int *iblock,
02468     double *gersch, double *tol, double *z, int *ldz,
02469     int *isuppz, double *work, int *iwork, int *info);
02470 
02471 La_extern void
02472 F77_NAME(dlarz)(char *side, int *m, int *n, int *l,
02473     double *v, int *incv, double *tau, double *c,
02474     int *ldc, double *work);
02475 
02476 La_extern void
02477 F77_NAME(dlarzb)(char *side, char *trans, char *direct, char *
02478     storev, int *m, int *n, int *k, int *l, double *v,
02479      int *ldv, double *t, int *ldt, double *c, int *
02480     ldc, double *work, int *ldwork);
02481 
02482 La_extern void
02483 F77_NAME(dlarzt)(char *direct, char *storev, int *n, int *
02484     k, double *v, int *ldv, double *tau, double *t,
02485     int *ldt);
02486 
02487 La_extern void
02488 F77_NAME(dlasd0)(int *n, int *sqre, double *d,
02489     double *e, double *u, int *ldu, double *vt, int *
02490     ldvt, int *smlsiz, int *iwork, double *work, int *
02491     info);
02492 
02493 La_extern void
02494 F77_NAME(dlasd1)(int *nl, int *nr, int *sqre,
02495     double *d, double *alpha, double *beta, double *u,
02496     int *ldu, double *vt, int *ldvt, int *idxq, int *
02497     iwork, double *work, int *info);
02498 
02499 La_extern void
02500 F77_NAME(dlasd2)(int *nl, int *nr, int *sqre, int
02501     *k, double *d, double *z, double *alpha, double *
02502     beta, double *u, int *ldu, double *vt, int *ldvt,
02503     double *dsigma, double *u2, int *ldu2, double *vt2,
02504     int *ldvt2, int *idxp, int *idx, int *idxc, int *
02505     idxq, int *coltyp, int *info);
02506 
02507 La_extern void
02508 F77_NAME(dlasd3)(int *nl, int *nr, int *sqre, int
02509     *k, double *d, double *q, int *ldq, double *dsigma,
02510     double *u, int *ldu, double *u2, int *ldu2,
02511     double *vt, int *ldvt, double *vt2, int *ldvt2,
02512     int *idxc, int *ctot, double *z, int *info);
02513 
02514 La_extern void
02515 F77_NAME(dlasd4)(int *n, int *i, double *d,
02516     double *z, double *delta, double *rho, double *
02517     sigma, double *work, int *info);
02518 
02519 La_extern void
02520 F77_NAME(dlasd5)(int *i, double *d, double *z,
02521     double *delta, double *rho, double *dsigma, double *
02522     work);
02523 
02524 La_extern void
02525 F77_NAME(dlasd6)(int *icompq, int *nl, int *nr,
02526     int *sqre, double *d, double *vf, double *vl,
02527     double *alpha, double *beta, int *idxq, int *perm,
02528     int *givptr, int *givcol, int *ldgcol, double *givnum,
02529      int *ldgnum, double *poles, double *difl, double *
02530     difr, double *z, int *k, double *c, double *s,
02531     double *work, int *iwork, int *info);
02532 
02533 La_extern void
02534 F77_NAME(dlasd7)(int *icompq, int *nl, int *nr,
02535     int *sqre, int *k, double *d, double *z,
02536     double *zw, double *vf, double *vfw, double *vl,
02537     double *vlw, double *alpha, double *beta, double *
02538     dsigma, int *idx, int *idxp, int *idxq, int *perm,
02539     int *givptr, int *givcol, int *ldgcol, double *givnum,
02540      int *ldgnum, double *c, double *s, int *info);
02541 
02542 La_extern void
02543 F77_NAME(dlasd8)(int *icompq, int *k, double *d,
02544     double *z, double *vf, double *vl, double *difl,
02545     double *difr, int *lddifr, double *dsigma, double *
02546     work, int *info);
02547 
02548 La_extern void
02549 F77_NAME(dlasd9)(int *icompq, int *ldu, int *k,
02550     double *d, double *z, double *vf, double *vl,
02551     double *difl, double *difr, double *dsigma, double *
02552     work, int *info);
02553 
02554 La_extern void
02555 F77_NAME(dlasda)(int *icompq, int *smlsiz, int *n,
02556     int *sqre, double *d, double *e, double *u, int
02557     *ldu, double *vt, int *k, double *difl, double *difr,
02558     double *z, double *poles, int *givptr, int *givcol,
02559     int *ldgcol, int *perm, double *givnum, double *c,
02560     double *s, double *work, int *iwork, int *info);
02561 
02562 La_extern void
02563 F77_NAME(dlasdq)(char *uplo, int *sqre, int *n, int *
02564     ncvt, int *nru, int *ncc, double *d, double *e,
02565     double *vt, int *ldvt, double *u, int *ldu,
02566     double *c, int *ldc, double *work, int *info);
02567 
02568 La_extern void
02569 F77_NAME(dlasdt)(int *n, int *lvl, int *nd, int *
02570     inode, int *ndiml, int *ndimr, int *msub);
02571 
02572 La_extern void
02573 F77_NAME(dlasq5)(int *i0, int *n0, double *z,
02574     int *pp, double *tau, double *dmin, double *dmin1,
02575     double *dmin2, double *dn, double *dnm1, double *dnm2,
02576      int *ieee);
02577 
02578 La_extern void
02579 F77_NAME(dlasq6)(int *i0, int *n0, double *z,
02580     int *pp, double *dmin, double *dmin1, double *dmin2,
02581      double *dn, double *dnm1, double *dnm2);
02582 
02583 La_extern void
02584 F77_NAME(dlatdf)(int *ijob, int *n, double *z,
02585     int *ldz, double *rhs, double *rdsum, double *rdscal,
02586     int *ipiv, int *jpiv);
02587 
02588 La_extern void
02589 F77_NAME(dlatrz)(int *m, int *n, int *l, double *
02590     a, int *lda, double *tau, double *work);
02591 
02592 La_extern void
02593 F77_NAME(dormr3)(char *side, char *trans, int *m, int *n,
02594     int *k, int *l, double *a, int *lda, double *tau,
02595     double *c, int *ldc, double *work, int *info);
02596 
02597 La_extern void
02598 F77_NAME(dormrz)(char *side, char *trans, int *m, int *n,
02599     int *k, int *l, double *a, int *lda, double *tau,
02600     double *c, int *ldc, double *work, int *lwork,
02601     int *info);
02602 
02603 La_extern void
02604 F77_NAME(dptts2)(int *n, int *nrhs, double *d,
02605     double *e, double *b, int *ldb);
02606 
02607 La_extern void
02608 F77_NAME(dsbgvd)(char *jobz, char *uplo, int *n, int *ka,
02609     int *kb, double *ab, int *ldab, double *bb, int *
02610     ldbb, double *w, double *z, int *ldz, double *work,
02611     int *lwork, int *iwork, int *liwork, int *info);
02612 
02613 La_extern void
02614 F77_NAME(dsbgvx)(char *jobz, char *range, char *uplo, int *n,
02615     int *ka, int *kb, double *ab, int *ldab, double *
02616     bb, int *ldbb, double *q, int *ldq, double *vl,
02617     double *vu, int *il, int *iu, double *abstol, int
02618     *m, double *w, double *z, int *ldz, double *work,
02619     int *iwork, int *ifail, int *info);
02620 
02621 La_extern void
02622 F77_NAME(dspgvd)(int *itype, char *jobz, char *uplo, int *
02623     n, double *ap, double *bp, double *w, double *z,
02624     int *ldz, double *work, int *lwork, int *iwork,
02625     int *liwork, int *info);
02626 
02627 La_extern void
02628 F77_NAME(dspgvx)(int *itype, char *jobz, char *range, char *
02629     uplo, int *n, double *ap, double *bp, double *vl,
02630     double *vu, int *il, int *iu, double *abstol, int
02631     *m, double *w, double *z, int *ldz, double *work,
02632     int *iwork, int *ifail, int *info);
02633 
02634 La_extern void
02635 F77_NAME(dstegr)(char *jobz, char *range, int *n, double *
02636     d, double *e, double *vl, double *vu, int *il,
02637     int *iu, double *abstol, int *m, double *w,
02638     double *z, int *ldz, int *isuppz, double *work,
02639     int *lwork, int *iwork, int *liwork, int *info);
02640 
02641 La_extern void
02642 F77_NAME(dstevr)(char *jobz, char *range, int *n, double *
02643     d, double *e, double *vl, double *vu, int *il,
02644     int *iu, double *abstol, int *m, double *w,
02645     double *z, int *ldz, int *isuppz, double *work,
02646     int *lwork, int *iwork, int *liwork, int *info);
02647 
02648 La_extern void
02649 F77_NAME(dsygvd)(int *itype, char *jobz, char *uplo, int *
02650     n, double *a, int *lda, double *b, int *ldb,
02651     double *w, double *work, int *lwork, int *iwork,
02652     int *liwork, int *info);
02653 
02654 La_extern void
02655 F77_NAME(dsygvx)(int *itype, char *jobz, char *range, char *
02656     uplo, int *n, double *a, int *lda, double *b, int
02657     *ldb, double *vl, double *vu, int *il, int *iu,
02658     double *abstol, int *m, double *w, double *z,
02659     int *ldz, double *work, int *lwork, int *iwork,
02660     int *ifail, int *info);
02661 
02662 La_extern void
02663 F77_NAME(dtgex2)(int *wantq, int *wantz, int *n,
02664     double *a, int *lda, double *b, int *ldb, double *
02665     q, int *ldq, double *z, int *ldz, int *j1, int *
02666     n1, int *n2, double *work, int *lwork, int *info);
02667 
02668 La_extern void
02669 F77_NAME(dtgexc)(int *wantq, int *wantz, int *n,
02670     double *a, int *lda, double *b, int *ldb, double *
02671     q, int *ldq, double *z, int *ldz, int *ifst,
02672     int *ilst, double *work, int *lwork, int *info);
02673 
02674 La_extern void
02675 F77_NAME(dtgsen)(int *ijob, int *wantq, int *wantz,
02676     int *select, int *n, double *a, int *lda, double *
02677     b, int *ldb, double *alphar, double *alphai, double *
02678     beta, double *q, int *ldq, double *z, int *ldz,
02679     int *m, double *pl, double *pr, double *dif,
02680     double *work, int *lwork, int *iwork, int *liwork,
02681     int *info);
02682 
02683 La_extern void
02684 F77_NAME(dtgsna)(char *job, char *howmny, int *select,
02685     int *n, double *a, int *lda, double *b, int *ldb,
02686     double *vl, int *ldvl, double *vr, int *ldvr,
02687     double *s, double *dif, int *mm, int *m, double *
02688     work, int *lwork, int *iwork, int *info);
02689 
02690 La_extern void
02691 F77_NAME(dtgsy2)(char *trans, int *ijob, int *m, int *
02692     n, double *a, int *lda, double *b, int *ldb,
02693     double *c, int *ldc, double *d, int *ldd,
02694     double *e, int *lde, double *f, int *ldf, double *
02695     scale, double *rdsum, double *rdscal, int *iwork, int
02696     *pq, int *info);
02697 
02698 La_extern void
02699 F77_NAME(dtgsyl)(char *trans, int *ijob, int *m, int *
02700     n, double *a, int *lda, double *b, int *ldb,
02701     double *c, int *ldc, double *d, int *ldd,
02702     double *e, int *lde, double *f, int *ldf, double *
02703     scale, double *dif, double *work, int *lwork, int *
02704     iwork, int *info);
02705 
02706 La_extern void
02707 F77_NAME(dtzrzf)(int *m, int *n, double *a, int *
02708     lda, double *tau, double *work, int *lwork, int *info);
02709 
02710 La_extern void
02711 F77_NAME(dpstrf)(const char* uplo, const int* n,
02712          double* a, const int* lda, int* piv, int* rank,
02713          double* tol, double *work, int* info);
02714 
02715 
02716 La_extern int
02717 F77_NAME(lsame)(char *ca, char *cb);
02718 
02719 La_extern void
02720 F77_NAME(zbdsqr)(char *uplo, int *n, int *ncvt, int *
02721     nru, int *ncc, double *d, double *e, Rcomplex *vt,
02722     int *ldvt, Rcomplex *u, int *ldu, Rcomplex *c,
02723     int *ldc, double *rwork, int *info);
02724 
02725 La_extern void
02726 F77_NAME(zdrot)(int *n, Rcomplex *cx, int *incx,
02727     Rcomplex *cy, int *incy, double *c, double *s);
02728 
02729 La_extern void
02730 F77_NAME(zgebak)(char *job, char *side, int *n, int *ilo,
02731     int *ihi, double *scale, int *m, Rcomplex *v,
02732     int *ldv, int *info);
02733 
02734 La_extern void
02735 F77_NAME(zgebal)(char *job, int *n, Rcomplex *a, int
02736     *lda, int *ilo, int *ihi, double *scale, int *info);
02737 
02738 La_extern void
02739 F77_NAME(zgebd2)(int *m, int *n, Rcomplex *a,
02740     int *lda, double *d, double *e, Rcomplex *tauq,
02741     Rcomplex *taup, Rcomplex *work, int *info);
02742 
02743 La_extern void
02744 F77_NAME(zgebrd)(int *m, int *n, Rcomplex *a,
02745     int *lda, double *d, double *e, Rcomplex *tauq,
02746     Rcomplex *taup, Rcomplex *work, int *lwork, int *
02747     info);
02748 La_extern void
02749 F77_NAME(zgehd2)(int *n, int *ilo, int *ihi,
02750     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02751     work, int *info);
02752 
02753 La_extern void
02754 F77_NAME(zgehrd)(int *n, int *ilo, int *ihi,
02755     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02756     work, int *lwork, int *info);
02757 
02758 La_extern void
02759 F77_NAME(zgelq2)(int *m, int *n, Rcomplex *a,
02760     int *lda, Rcomplex *tau, Rcomplex *work, int *info);
02761 
02762 La_extern void
02763 F77_NAME(zgelqf)(int *m, int *n, Rcomplex *a,
02764     int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
02765      int *info);
02766 
02767 La_extern void
02768 F77_NAME(zgeqr2)(int *m, int *n, Rcomplex *a,
02769     int *lda, Rcomplex *tau, Rcomplex *work, int *info);
02770 
02771 La_extern void
02772 F77_NAME(zgeqrf)(int *m, int *n, Rcomplex *a,
02773          int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
02774          int *info);
02775 
02776 La_extern void
02777 F77_NAME(zgetf2)(int *m, int *n, Rcomplex *a,
02778     int *lda, int *ipiv, int *info);
02779 
02780 La_extern void
02781 F77_NAME(zgetrf)(int *m, int *n, Rcomplex *a,
02782     int *lda, int *ipiv, int *info);
02783 
02784 La_extern void
02785 F77_NAME(zgetrs)(char *trans, int *n, int *nrhs,
02786     Rcomplex *a, int *lda, int *ipiv, Rcomplex *b,
02787     int *ldb, int *info);
02788 
02789 
02790 La_extern void
02791 F77_NAME(zhetd2)(char *uplo, int *n, Rcomplex *a, int *lda, double *d,
02792          double *e, Rcomplex *tau, int *info);
02793 
02794 La_extern void
02795 F77_NAME(zhetrd)(char *uplo, int *n, Rcomplex *a,
02796     int *lda, double *d, double *e, Rcomplex *tau,
02797     Rcomplex *work, int *lwork, int *info);
02798 
02799 La_extern void
02800 F77_NAME(zhseqr)(char *job, char *compz, int *n, int *ilo,
02801      int *ihi, Rcomplex *h, int *ldh, Rcomplex *w,
02802     Rcomplex *z, int *ldz, Rcomplex *work, int *lwork,
02803      int *info);
02804 
02805 La_extern void
02806 F77_NAME(zlabrd)(int *m, int *n, int *nb,
02807     Rcomplex *a, int *lda, double *d, double *e,
02808     Rcomplex *tauq, Rcomplex *taup, Rcomplex *x, int *
02809     ldx, Rcomplex *y, int *ldy);
02810 
02811 La_extern void
02812 F77_NAME(zlacgv)(int *n, Rcomplex *x, int *incx);
02813 
02814 La_extern void
02815 F77_NAME(zlacpy)(char *uplo, int *m, int *n,
02816     Rcomplex *a, int *lda, Rcomplex *b, int *ldb);
02817 
02818 La_extern void
02819 F77_NAME(zlahqr)(int *wantt, int *wantz, int *n,
02820     int *ilo, int *ihi, Rcomplex *h, int *ldh,
02821     Rcomplex *w, int *iloz, int *ihiz, Rcomplex *z,
02822     int *ldz, int *info);
02823 
02824 La_extern double
02825 F77_NAME(zlange)(char *norm, int *m, int *n, Rcomplex *a, int *lda,
02826          double *work);
02827 
02828 La_extern double
02829 F77_NAME(zlanhe)(char *norm,  char *uplo, int *n, Rcomplex *a,
02830          int *lda, double *work);
02831 
02832 La_extern double
02833 F77_NAME(zlanhs)(char *norm, int *n, Rcomplex *a, int *lda, double *work);
02834 
02835 
02836 La_extern void
02837 F77_NAME(zlaqp2)(int *m, int *n, int *offset,
02838     Rcomplex *a, int *lda, int *jpvt, Rcomplex *tau,
02839     double *vn1, double *vn2, Rcomplex *work);
02840 
02841 La_extern void
02842 F77_NAME(zlaqps)(int *m, int *n, int *offset, int
02843     *nb, int *kb, Rcomplex *a, int *lda, int *jpvt,
02844     Rcomplex *tau, double *vn1, double *vn2, Rcomplex *
02845     auxv, Rcomplex *f, int *ldf);
02846 
02847 La_extern void
02848 F77_NAME(zlarf)(char *side, int *m, int *n, Rcomplex
02849     *v, int *incv, Rcomplex *tau, Rcomplex *c, int *
02850     ldc, Rcomplex *work);
02851 
02852 La_extern void
02853 F77_NAME(zlarfb)(char *side, char *trans, char *direct, char *
02854     storev, int *m, int *n, int *k, Rcomplex *v, int
02855     *ldv, Rcomplex *t, int *ldt, Rcomplex *c, int *
02856     ldc, Rcomplex *work, int *ldwork);
02857 
02858 La_extern void
02859 F77_NAME(zlarfg)(int *n, Rcomplex *alpha, Rcomplex *
02860     x, int *incx, Rcomplex *tau);
02861 
02862 La_extern void
02863 F77_NAME(zlarft)(char *direct, char *storev, int *n, int *
02864     k, Rcomplex *v, int *ldv, Rcomplex *tau, Rcomplex *
02865     t, int *ldt);
02866 
02867 La_extern void
02868 F77_NAME(zlarfx)(char *side, int *m, int *n,
02869     Rcomplex *v, Rcomplex *tau, Rcomplex *c, int *
02870     ldc, Rcomplex *work);
02871 
02872 La_extern void
02873 F77_NAME(zlascl)(char *type, int *kl, int *ku,
02874     double *cfrom, double *cto, int *m, int *n,
02875     Rcomplex *a, int *lda, int *info);
02876 
02877 La_extern void
02878 F77_NAME(zlaset)(char *uplo, int *m, int *n,
02879     Rcomplex *alpha, Rcomplex *beta, Rcomplex *a, int *
02880     lda);
02881 
02882 La_extern void
02883 F77_NAME(zlasr)(char *side, char *pivot, char *direct, int *m,
02884      int *n, double *c, double *s, Rcomplex *a,
02885     int *lda);
02886 
02887 La_extern void
02888 F77_NAME(zlassq)(int *n, Rcomplex *x, int *incx,
02889     double *scale, double *sumsq);
02890 
02891 La_extern void
02892 F77_NAME(zlaswp)(int *n, Rcomplex *a, int *lda,
02893     int *k1, int *k2, int *ipiv, int *incx);
02894 
02895 La_extern void
02896 F77_NAME(zlatrd)(char *uplo, int *n, int *nb,
02897     Rcomplex *a, int *lda, double *e, Rcomplex *tau,
02898     Rcomplex *w, int *ldw);
02899 
02900 La_extern void
02901 F77_NAME(zlatrs)(char *uplo, char *trans, char *diag, char *
02902     normin, int *n, Rcomplex *a, int *lda, Rcomplex *x,
02903     double *scale, double *cnorm, int *info);
02904 
02905 La_extern void
02906 F77_NAME(zsteqr)(char *compz, int *n, double *d,
02907     double *e, Rcomplex *z, int *ldz, double *work,
02908     int *info);
02909 
02910 /* ZTRCON estimates the reciprocal of the condition number of a
02911  * triangular matrix A, in either the 1-norm or the infinity-norm.
02912  */
02913 La_extern void
02914 F77_NAME(ztrcon)(const char *norm, const char *uplo, const char *diag,
02915                  const int *n, const Rcomplex *a, const int *lda,
02916          double *rcond, Rcomplex *work, double *rwork, int *info);
02917 
02918 La_extern void
02919 F77_NAME(ztrevc)(char *side, char *howmny, int *select,
02920     int *n, Rcomplex *t, int *ldt, Rcomplex *vl,
02921     int *ldvl, Rcomplex *vr, int *ldvr, int *mm, int
02922     *m, Rcomplex *work, double *rwork, int *info);
02923 
02924 La_extern void
02925 F77_NAME(zung2l)(int *m, int *n, int *k,
02926     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02927     work, int *info);
02928 
02929 La_extern void
02930 F77_NAME(zung2r)(int *m, int *n, int *k,
02931     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02932     work, int *info);
02933 
02934 La_extern void
02935 F77_NAME(zungbr)(char *vect, int *m, int *n, int *k,
02936     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02937     work, int *lwork, int *info);
02938 
02939 La_extern void
02940 F77_NAME(zunghr)(int *n, int *ilo, int *ihi,
02941     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02942     work, int *lwork, int *info);
02943 
02944 La_extern void
02945 F77_NAME(zungl2)(int *m, int *n, int *k,
02946     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02947     work, int *info);
02948 
02949 La_extern void
02950 F77_NAME(zunglq)(int *m, int *n, int *k,
02951     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02952     work, int *lwork, int *info);
02953 
02954 La_extern void
02955 F77_NAME(zungql)(int *m, int *n, int *k,
02956     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02957     work, int *lwork, int *info);
02958 
02959 La_extern void
02960 F77_NAME(zungqr)(int *m, int *n, int *k,
02961     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02962     work, int *lwork, int *info);
02963 
02964 La_extern void
02965 F77_NAME(zungr2)(int *m, int *n, int *k,
02966     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02967     work, int *info);
02968 
02969 La_extern void
02970 F77_NAME(zungrq)(int *m, int *n, int *k,
02971     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *
02972     work, int *lwork, int *info);
02973 
02974 La_extern void
02975 F77_NAME(zungtr)(char *uplo, int *n, Rcomplex *a,
02976     int *lda, Rcomplex *tau, Rcomplex *work, int *lwork,
02977      int *info);
02978 
02979 La_extern void
02980 F77_NAME(zunm2r)(char *side, char *trans, int *m, int *n,
02981     int *k, Rcomplex *a, int *lda, Rcomplex *tau,
02982     Rcomplex *c, int *ldc, Rcomplex *work, int *info);
02983 
02984 La_extern void
02985 F77_NAME(zunmbr)(char *vect, char *side, char *trans, int *m,
02986     int *n, int *k, Rcomplex *a, int *lda, Rcomplex
02987     *tau, Rcomplex *c, int *ldc, Rcomplex *work, int *
02988     lwork, int *info);
02989 
02990 La_extern void
02991 F77_NAME(zunml2)(char *side, char *trans, int *m, int *n,
02992     int *k, Rcomplex *a, int *lda, Rcomplex *tau,
02993     Rcomplex *c, int *ldc, Rcomplex *work, int *info);
02994 
02995 La_extern void
02996 F77_NAME(zunmlq)(char *side, char *trans, int *m, int *n,
02997     int *k, Rcomplex *a, int *lda, Rcomplex *tau,
02998     Rcomplex *c, int *ldc, Rcomplex *work, int *lwork,
02999      int *info);
03000 
03001 /* Added in R 3.1.0 */
03002 /* ZGESVD - compute the singular value decomposition (SVD); of a   */
03003 /* real M-by-N matrix A, optionally computing the left and/or      */
03004 /* right singular vectors                      */
03005 La_extern void
03006 F77_NAME(zgesdd)(const char *jobz,
03007          const int *m, const int *n,
03008          Rcomplex *a, const int *lda, double *s,
03009          Rcomplex *u, const int *ldu,
03010          Rcomplex *vt, const int *ldvt,
03011          Rcomplex *work, const int *lwork, double *rwork,
03012          int *iwork, int *info);
03013 La_extern void
03014 F77_NAME(zgelsd)(int *m, int *n, int *nrhs,
03015     Rcomplex *a, int *lda, Rcomplex *b, int *ldb, double *s,
03016         double *rcond, int *rank, 
03017         Rcomplex *work, int *lwork, double *rwork, int *iwork, int *info);
03018 
03019 /* =========================== DEPRECATED ==============================
03020 
03021    Routines below were deprecated in LAPACK 3.6.0, and are not
03022    included in a default build of LAPACK.
03023 
03024    Currently dgegv, dgeqpf, dggsvd and dggsvp are included in R, but
03025    that may change before release of R 3.3.0.
03026  */
03027 
03028 /* DGEGV - compute for a pair of n-by-n real nonsymmetric */
03029 /* matrices A and B, the generalized eigenvalues (alphar +/- */
03030 /* alphai*i, beta);, and optionally, the left and/or right */
03031 /* generalized eigenvectors (VL and VR); */
03032 La_extern void
03033 F77_NAME(dgegv)(const char* jobvl, const char* jobvr,
03034         const int* n, double* a, const int* lda,
03035         double* b, const int* ldb,
03036         double* alphar, double* alphai,
03037         const double* beta, double* vl, const int* ldvl,
03038         double* vr, const int* ldvr,
03039         double* work, const int* lwork, int* info);
03040 
03041 /* DGEQPF - compute a QR factorization with column pivoting of a */
03042 /* real M-by-N matrix A */
03043 La_extern void
03044 F77_NAME(dgeqpf)(const int* m, const int* n, double* a, const int* lda,
03045          int* jpvt, double* tau, double* work, int* info);
03046 
03047 /* DGGSVD - compute the generalized singular value decomposition */
03048 /* (GSVD) of an M-by-N real matrix A and P-by-N real matrix B */
03049 La_extern void
03050 F77_NAME(dggsvd)(const char* jobu, const char* jobv, const char* jobq,
03051          const int* m, const int* n, const int* p,
03052          const int* k, const int* l,
03053          double* a, const int* lda,
03054          double* b, const int* ldb,
03055          const double* alpha, const double* beta,
03056          double* u, const int* ldu,
03057          double* v, const int* ldv,
03058          double* q, const int* ldq,
03059          double* work, int* iwork, int* info);
03060 
03061 /* DTZRQF - reduce the M-by-N ( M<=N ); real upper trapezoidal */
03062 /* matrix A to upper triangular form by means of orthogonal */
03063 /* transformations  */
03064 La_extern void
03065 F77_NAME(dtzrqf)(const int* m, const int* n,
03066          double* a, const int* lda,
03067          double* tau, int* info);
03068 
03069 /* DLAHRD - reduce the first NB columns of a real general */
03070 /* n-by-(n-k+1); matrix A so that elements below the k-th */
03071 /* subdiagonal are zero */
03072 La_extern void
03073 F77_NAME(dlahrd)(const int* n, const int* k, const int* nb,
03074          double* a, const int* lda,
03075          double* tau, double* t, const int* ldt,
03076          double* y, const int* ldy);
03077 
03078 /* DLATZM - apply a Householder matrix generated by DTZRQF to a */
03079 /* matrix */
03080 La_extern void
03081 F77_NAME(dlatzm)(const char* side, const int* m, const int* n,
03082          const double* v, const int* incv,
03083          const double* tau, double* c1, double* c2,
03084          const int* ldc, double* work);
03085 
03086 La_extern void
03087 F77_NAME(dgegs)(char *jobvsl, char *jobvsr, int *n,
03088     double *a, int *lda, double *b, int *ldb, double *
03089     alphar, double *alphai, double *beta, double *vsl,
03090     int *ldvsl, double *vsr, int *ldvsr, double *work,
03091     int *lwork, int *info);
03092 
03093 La_extern void
03094 F77_NAME(dgelsx)(int *m, int *n, int *nrhs,
03095     double *a, int *lda, double *b, int *ldb, int *
03096     jpvt, double *rcond, int *rank, double *work, int *
03097     info);
03098 
03099 La_extern void
03100 F77_NAME(dggsvp)(char *jobu, char *jobv, char *jobq, int *m,
03101     int *p, int *n, double *a, int *lda, double *b,
03102     int *ldb, double *tola, double *tolb, int *k, int
03103     *l, double *u, int *ldu, double *v, int *ldv,
03104     double *q, int *ldq, int *iwork, double *tau,
03105     double *work, int *info);
03106 
03107 La_extern void
03108 F77_NAME(zlahrd)(int *n, int *k, int *nb,
03109     Rcomplex *a, int *lda, Rcomplex *tau, Rcomplex *t,
03110     int *ldt, Rcomplex *y, int *ldy);
03111 
03112 
03113 #ifdef  __cplusplus
03114 }
03115 #endif
03116 
03117 #endif /* R_LAPACK_H */
03118 
03119 // Local variables: ***
03120 // mode: outline-minor ***
03121 // outline-regexp: "^\^L\\|^//[*]+" ***
03122 // End: ***
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines