RAPI
|
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: ***