1 /++ 2 LAPACK bindings for D. 3 4 Authors: William V. Baxter III, Lars Tandle Kyllingstad, Ilya Yaroshenko 5 Copyright: Copyright (c) 2009, Lars T. Kyllingstad; Copyright © 2017, Symmetry Investments & Kaleidic Associates 6 +/ 7 module lapack.lapack; 8 9 version(CBLAS_STD_COMPLEX) 10 { 11 import std.complex : Complex; 12 } 13 else 14 { 15 import mir.complex : Complex; 16 } 17 18 alias _cfloat = Complex!float; 19 alias _cdouble = Complex!double; 20 21 version(LAPACKNATIVEINT) 22 { 23 /// 24 alias lapackint = ptrdiff_t; 25 } 26 else 27 { 28 /// 29 alias lapackint = int; 30 } 31 32 /* 33 Copyright (C) 2006--2008 William V. Baxter III, OLM Digital, Inc. 34 35 This software is provided 'as-is', without any express or implied 36 warranty. In no event will the authors be held liable for any 37 damages arising from the use of this software. 38 39 Permission is granted to anyone to use this software for any 40 purpose, including commercial applications, and to alter it and 41 redistribute it freely, subject to the following restrictions: 42 43 1. The origin of this software must not be misrepresented; you must 44 not claim that you wrote the original software. If you use this 45 software in a product, an acknowledgment in the product 46 documentation would be appreciated but is not required. 47 48 2. Altered source versions must be plainly marked as such, and must 49 not be misrepresented as being the original software. 50 3. This notice may not be removed or altered from any source distribution. 51 52 William Baxter wbaxter@gmail.com 53 */ 54 55 56 // Prototypes for the raw Fortran interface to BLAS 57 pure nothrow @nogc extern(C): 58 59 alias FCB_CGEES_SELECT = lapackint function(_cfloat *); 60 alias FCB_CGEESX_SELECT = lapackint function(_cfloat *); 61 alias FCB_CGGES_SELCTG = lapackint function(_cfloat *, _cfloat *); 62 alias FCB_CGGESX_SELCTG = lapackint function(_cfloat *, _cfloat *); 63 alias FCB_DGEES_SELECT = lapackint function(double *, double *); 64 alias FCB_DGEESX_SELECT = lapackint function(double *, double *); 65 alias FCB_DGGES_DELCTG = lapackint function(double *, double *, double *); 66 alias FCB_DGGESX_DELCTG = lapackint function(double *, double *, double *); 67 alias FCB_SGEES_SELECT = lapackint function(float *, float *); 68 alias FCB_SGEESX_SELECT = lapackint function(float *, float *); 69 alias FCB_SGGES_SELCTG = lapackint function(float *, float *, float *); 70 alias FCB_SGGESX_SELCTG = lapackint function(float *, float *, float *); 71 alias FCB_ZGEES_SELECT = lapackint function(_cdouble *); 72 alias FCB_ZGEESX_SELECT = lapackint function(_cdouble *); 73 alias FCB_ZGGES_DELCTG = lapackint function(_cdouble *, _cdouble *); 74 alias FCB_ZGGESX_DELCTG = lapackint function(_cdouble *, _cdouble *); 75 76 version (FORTRAN_FLOAT_FUNCTIONS_RETURN_DOUBLE) 77 { 78 alias lapack_float_ret_t = double; 79 } 80 else 81 { 82 alias lapack_float_ret_t = float; 83 } 84 85 /* LAPACK routines */ 86 87 //-------------------------------------------------------- 88 // ---- SIMPLE and DIVIDE AND CONQUER DRIVER routines ---- 89 //--------------------------------------------------------- 90 91 /// Solves a general system of linear equations AX=B. 92 void sgesv_(ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 93 void dgesv_(ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 94 void cgesv_(ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 95 void zgesv_(ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 96 97 /// Solves a general banded system of linear equations AX=B. 98 void sgbsv_(ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, float *ab, ref lapackint ldab, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 99 void dgbsv_(ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, double *ab, ref lapackint ldab, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 100 void cgbsv_(ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 101 void zgbsv_(ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 102 103 /// Solves a general tridiagonal system of linear equations AX=B. 104 void sgtsv_(ref lapackint n, ref lapackint nrhs, float *dl, float *d, float *du, float *b, ref lapackint ldb, ref lapackint info); 105 void dgtsv_(ref lapackint n, ref lapackint nrhs, double *dl, double *d, double *du, double *b, ref lapackint ldb, ref lapackint info); 106 void cgtsv_(ref lapackint n, ref lapackint nrhs, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *b, ref lapackint ldb, ref lapackint info); 107 void zgtsv_(ref lapackint n, ref lapackint nrhs, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *b, ref lapackint ldb, ref lapackint info); 108 109 /// Solves a symmetric positive definite system of linear 110 /// equations AX=B. 111 void sposv_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, ref lapackint info); 112 void dposv_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, ref lapackint info); 113 void cposv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, ref lapackint info); 114 void zposv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, ref lapackint info); 115 116 /// Solves a symmetric positive definite system of linear 117 /// equations AX=B, where A is held in packed storage. 118 void sppsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *b, ref lapackint ldb, ref lapackint info); 119 void dppsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *b, ref lapackint ldb, ref lapackint info); 120 void cppsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *b, ref lapackint ldb, ref lapackint info); 121 void zppsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *b, ref lapackint ldb, ref lapackint info); 122 123 /// Solves a symmetric positive definite banded system 124 /// of linear equations AX=B. 125 void spbsv_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *b, ref lapackint ldb, ref lapackint info); 126 void dpbsv_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *b, ref lapackint ldb, ref lapackint info); 127 void cpbsv_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *b, ref lapackint ldb, ref lapackint info); 128 void zpbsv_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *b, ref lapackint ldb, ref lapackint info); 129 130 /// Solves a symmetric positive definite tridiagonal system 131 /// of linear equations AX=B. 132 void sptsv_(ref lapackint n, ref lapackint nrhs, float *d, float *e, float *b, ref lapackint ldb, ref lapackint info); 133 void dptsv_(ref lapackint n, ref lapackint nrhs, double *d, double *e, double *b, ref lapackint ldb, ref lapackint info); 134 void cptsv_(ref lapackint n, ref lapackint nrhs, float *d, _cfloat *e, _cfloat *b, ref lapackint ldb, ref lapackint info); 135 void zptsv_(ref lapackint n, ref lapackint nrhs, double *d, _cdouble *e, _cdouble *b, ref lapackint ldb, ref lapackint info); 136 137 138 /// Solves a real symmetric indefinite system of linear equations AX=B. 139 void ssysv_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, float *work, ref lapackint lwork, ref lapackint info); 140 void dsysv_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, double *work, ref lapackint lwork, ref lapackint info); 141 void csysv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 142 void zsysv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 143 144 /// Solves a real symmetric indefinite system of linear equations AX=B. Rook method (LDL decomposition) 145 void ssysv_rk_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *e, lapackint *ipiv, float *b, ref lapackint ldb, float *work, ref lapackint lwork, ref lapackint info); 146 void dsysv_rk_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *e, lapackint *ipiv, double *b, ref lapackint ldb, double *work, ref lapackint lwork, ref lapackint info); 147 void csysv_rk_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *e, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 148 void zsysv_rk_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *e, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 149 150 /// Solves a real symmetric indefinite system of linear equations AX=B. Rook method (LDL decomposition) 151 void ssysv_rook_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, float *work, ref lapackint lwork, ref lapackint info); 152 void dsysv_rook_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, double *work, ref lapackint lwork, ref lapackint info); 153 void csysv_rook_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 154 void zsysv_rook_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 155 156 /// Solves a complex Hermitian indefinite system of linear equations AX=B. 157 void chesv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 158 void zhesv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 159 160 /// Solves a real symmetric indefinite system of linear equations AX=B, 161 /// where A is held in packed storage. 162 void sspsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 163 void dspsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 164 void cspsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 165 void zspsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 166 167 /// Solves a complex Hermitian indefinite system of linear equations AX=B, 168 /// where A is held in packed storage. 169 void chpsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 170 void zhpsv_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 171 172 /// Computes the least squares solution to an over-determined system 173 /// of linear equations, A X=B or A**H X=B, or the minimum norm 174 /// solution of an under-determined system, where A is a general 175 /// rectangular matrix of full rank, using a QR or LQ factorization 176 /// of A. 177 void sgels_(ref char trans, ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *work, ref lapackint lwork, ref lapackint info); 178 void dgels_(ref char trans, ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *work, ref lapackint lwork, ref lapackint info); 179 void cgels_(ref char trans, ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 180 void zgels_(ref char trans, ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 181 182 /// Computes the least squares solution to an over-determined system 183 /// of linear equations, A X=B or A**H X=B, or the minimum norm 184 /// solution of an under-determined system, using a divide and conquer 185 /// method, where A is a general rectangular matrix of full rank, 186 /// using a QR or LQ factorization of A. 187 void sgelsd_(ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *s, ref const float rcond, ref lapackint rank, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 188 void dgelsd_(ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *s, ref const double rcond, ref lapackint rank, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 189 void cgelsd_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *s, ref const float rcond, ref lapackint rank, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, ref lapackint info); 190 void zgelsd_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *s, ref const double rcond, ref lapackint rank, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, ref lapackint info); 191 192 /// Solves the LSE (Constrained Linear Least Squares Problem) using 193 /// the GRQ (Generalized RQ) factorization 194 void sgglse_(ref lapackint m, ref lapackint n, ref lapackint p, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *c, float *d, float *x, float *work, ref lapackint lwork, ref lapackint info); 195 void dgglse_(ref lapackint m, ref lapackint n, ref lapackint p, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *c, double *d, double *x, double *work, ref lapackint lwork, ref lapackint info); 196 void cgglse_(ref lapackint m, ref lapackint n, ref lapackint p, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *c, _cfloat *d, _cfloat *x, _cfloat *work, ref lapackint lwork, ref lapackint info); 197 void zgglse_(ref lapackint m, ref lapackint n, ref lapackint p, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *c, _cdouble *d, _cdouble *x, _cdouble *work, ref lapackint lwork, ref lapackint info); 198 199 /// Solves the GLM (Generalized Linear Regression Model) using 200 /// the GQR (Generalized QR) factorization 201 void sggglm_(ref lapackint n, ref lapackint m, ref lapackint p, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *d, float *x, float *y, float *work, ref lapackint lwork, ref lapackint info); 202 void dggglm_(ref lapackint n, ref lapackint m, ref lapackint p, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *d, double *x, double *y, double *work, ref lapackint lwork, ref lapackint info); 203 void cggglm_(ref lapackint n, ref lapackint m, ref lapackint p, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *d, _cfloat *x, _cfloat *y, _cfloat *work, ref lapackint lwork, ref lapackint info); 204 void zggglm_(ref lapackint n, ref lapackint m, ref lapackint p, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *d, _cdouble *x, _cdouble *y, _cdouble *work, ref lapackint lwork, ref lapackint info); 205 206 /// Computes all eigenvalues, and optionally, eigenvectors of a real 207 /// symmetric matrix. 208 void ssyev_(ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *w, float *work, ref lapackint lwork, ref lapackint info); 209 void dsyev_(ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *w, double *work, ref lapackint lwork, ref lapackint info); 210 void ssyev_2stage_(ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *w, float *work, ref lapackint lwork, ref lapackint info); 211 void dsyev_2stage_(ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *w, double *work, ref lapackint lwork, ref lapackint info); 212 213 214 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 215 /// Hermitian matrix. 216 void cheev_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *w, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 217 void zheev_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *w, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 218 void cheev_2stage_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *w, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 219 void zheev_2stage_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *w, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 220 221 222 /// Computes all eigenvalues, and optionally, eigenvectors of a real 223 /// symmetric matrix. If eigenvectors are desired, it uses a divide 224 /// and conquer algorithm. 225 void ssyevd_(ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *w, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 226 void dsyevd_(ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *w, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 227 void ssyevd_2stage_(ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *w, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 228 void dsyevd_2stage_(ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *w, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 229 230 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 231 /// Hermitian matrix. If eigenvectors are desired, it uses a divide 232 /// and conquer algorithm. 233 void cheevd_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *w, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 234 void zheevd_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *w, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 235 void cheevd_2stage_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *w, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 236 void zheevd_2stage_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *w, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 237 238 /// Computes all eigenvalues, and optionally, eigenvectors of a real 239 /// symmetric matrix in packed storage. 240 void sspev_(ref char jobz, ref char uplo, ref lapackint n, float *ap, float *w, float *z, ref lapackint ldz, float *work, ref lapackint info); 241 void dspev_(ref char jobz, ref char uplo, ref lapackint n, double *ap, double *w, double *z, ref lapackint ldz, double *work, ref lapackint info); 242 243 /// Computes selected eigenvalues, and optionally, eigenvectors of a complex 244 /// Hermitian matrix. Eigenvalues are computed by the dqds 245 /// algorithm, and eigenvectors are computed from various "good" LDL^T 246 /// representations (also known as Relatively Robust Representations). 247 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 248 /// Hermitian matrix in packed storage. 249 void chpev_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *ap, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, ref lapackint info); 250 void zhpev_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *ap, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, ref lapackint info); 251 252 /// Computes all eigenvalues, and optionally, eigenvectors of a real 253 /// symmetric matrix in packed storage. If eigenvectors are desired, 254 /// it uses a divide and conquer algorithm. 255 void sspevd_(ref char jobz, ref char uplo, ref lapackint n, float *ap, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 256 void dspevd_(ref char jobz, ref char uplo, ref lapackint n, double *ap, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 257 258 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 259 /// Hermitian matrix in packed storage. If eigenvectors are desired, it 260 /// uses a divide and conquer algorithm. 261 void chpevd_(ref char jobz, ref char uplo, ref lapackint n, _cfloat *ap, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 262 void zhpevd_(ref char jobz, ref char uplo, ref lapackint n, _cdouble *ap, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 263 264 /// Computes all eigenvalues, and optionally, eigenvectors of a real 265 /// symmetric band matrix. 266 void ssbev_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *w, float *z, ref lapackint ldz, float *work, ref lapackint info); 267 void dsbev_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *w, double *z, ref lapackint ldz, double *work, ref lapackint info); 268 269 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 270 /// Hermitian band matrix. 271 void chbev_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, ref lapackint info); 272 void zhbev_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, ref lapackint info); 273 274 /// Computes all eigenvalues, and optionally, eigenvectors of a real 275 /// symmetric band matrix. If eigenvectors are desired, it uses a 276 /// divide and conquer algorithm. 277 void ssbevd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 278 void dsbevd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 279 280 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 281 /// Hermitian band matrix. If eigenvectors are desired, it uses a divide 282 /// and conquer algorithm. 283 void chbevd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 284 void zhbevd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 285 286 /// Computes all eigenvalues, and optionally, eigenvectors of a real 287 /// symmetric tridiagonal matrix. 288 void sstev_(ref char jobz, ref lapackint n, float *d, float *e, float *z, ref lapackint ldz, float *work, ref lapackint info); 289 void dstev_(ref char jobz, ref lapackint n, double *d, double *e, double *z, ref lapackint ldz, double *work, ref lapackint info); 290 291 /// Computes all eigenvalues, and optionally, eigenvectors of a real 292 /// symmetric tridiagonal matrix. If eigenvectors are desired, it uses 293 /// a divide and conquer algorithm. 294 void sstevd_(ref char jobz, ref lapackint n, float *d, float *e, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 295 void dstevd_(ref char jobz, ref lapackint n, double *d, double *e, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 296 297 /// Computes the eigenvalues and Schur factorization of a general 298 /// matrix, and orders the factorization so that selected eigenvalues 299 /// are at the top left of the Schur form. 300 void sgees_(ref char jobvs, ref char sort, FCB_SGEES_SELECT select, ref lapackint n, float *a, ref lapackint lda, lapackint *sdim, float *wr, float *wi, float *vs, ref lapackint ldvs, float *work, ref lapackint lwork, lapackint *bwork, ref lapackint info); 301 void dgees_(ref char jobvs, ref char sort, FCB_DGEES_SELECT select, ref lapackint n, double *a, ref lapackint lda, lapackint *sdim, double *wr, double *wi, double *vs, ref lapackint ldvs, double *work, ref lapackint lwork, lapackint *bwork, ref lapackint info); 302 void cgees_(ref char jobvs, ref char sort, FCB_CGEES_SELECT select, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *sdim, _cfloat *w, _cfloat *vs, ref lapackint ldvs, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *bwork, ref lapackint info); 303 void zgees_(ref char jobvs, ref char sort, FCB_ZGEES_SELECT select, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *sdim, _cdouble *w, _cdouble *vs, ref lapackint ldvs, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *bwork, ref lapackint info); 304 305 /// Computes the eigenvalues and left and right eigenvectors of 306 /// a general matrix. 307 void sgeev_(ref char jobvl, ref char jobvr, ref lapackint n, float *a, ref lapackint lda, float *wr, float *wi, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, float *work, ref lapackint lwork, ref lapackint info); 308 void dgeev_(ref char jobvl, ref char jobvr, ref lapackint n, double *a, ref lapackint lda, double *wr, double *wi, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, double *work, ref lapackint lwork, ref lapackint info); 309 void cgeev_(ref char jobvl, ref char jobvr, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *w, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 310 void zgeev_(ref char jobvl, ref char jobvr, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *w, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 311 312 /// Computes the singular value decomposition (SVD) of a general 313 /// rectangular matrix. 314 void sgesvd_(ref char jobu, ref char jobvt, ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *s, float *u, ref lapackint ldu, float *vt, ref lapackint ldvt, float *work, ref lapackint lwork, ref lapackint info); 315 void dgesvd_(ref char jobu, ref char jobvt, ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *s, double *u, ref lapackint ldu, double *vt, ref lapackint ldvt, double *work, ref lapackint lwork, ref lapackint info); 316 void cgesvd_(ref char jobu, ref char jobvt, ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, float *s, _cfloat *u, ref lapackint ldu, _cfloat *vt, ref lapackint ldvt, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 317 void zgesvd_(ref char jobu, ref char jobvt, ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, double *s, _cdouble *u, ref lapackint ldu, _cdouble *vt, ref lapackint ldvt, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 318 319 /// Computes the singular value decomposition (SVD) of a general 320 /// rectangular matrix using divide-and-conquer. 321 void sgesdd_(ref char jobz, ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *s, float *u, ref lapackint ldu, float *vt, ref lapackint ldvt, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 322 void dgesdd_(ref char jobz, ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *s, double *u, ref lapackint ldu, double *vt, ref lapackint ldvt, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 323 void cgesdd_(ref char jobz, ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, float *s, _cfloat *u, ref lapackint ldu, _cfloat *vt, ref lapackint ldvt, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, ref lapackint info); 324 void zgesdd_(ref char jobz, ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, double *s, _cdouble *u, ref lapackint ldu, _cdouble *vt, ref lapackint ldvt, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, ref lapackint info); 325 326 /// Computes all eigenvalues and the eigenvectors of a generalized 327 /// symmetric-definite generalized eigenproblem, 328 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 329 void ssygv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *w, float *work, ref lapackint lwork, ref lapackint info); 330 void dsygv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *w, double *work, ref lapackint lwork, ref lapackint info); 331 332 /// Computes all eigenvalues and the eigenvectors of a generalized 333 /// Hermitian-definite generalized eigenproblem, 334 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 335 void chegv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *w, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 336 void zhegv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *w, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 337 338 /// Computes all eigenvalues and the eigenvectors of a generalized 339 /// symmetric-definite generalized eigenproblem, 340 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 341 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 342 void ssygvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *w, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 343 void dsygvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *w, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 344 /// Computes all eigenvalues and the eigenvectors of a generalized 345 /// Hermitian-definite generalized eigenproblem, 346 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 347 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 348 void chegvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *w, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 349 void zhegvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *w, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 350 351 /// Computes all eigenvalues and eigenvectors of a generalized 352 /// symmetric-definite generalized eigenproblem, Ax= lambda 353 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 354 /// storage. 355 void sspgv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, float *ap, float *bp, float *w, float *z, ref lapackint ldz, float *work, ref lapackint info); 356 void dspgv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, double *ap, double *bp, double *w, double *z, ref lapackint ldz, double *work, ref lapackint info); 357 358 /// Computes all eigenvalues and eigenvectors of a generalized 359 /// Hermitian-definite generalized eigenproblem, Ax= lambda 360 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 361 /// storage. 362 void chpgv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cfloat *ap, _cfloat *bp, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, ref lapackint info); 363 void zhpgv_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cdouble *ap, _cdouble *bp, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, ref lapackint info); 364 365 /// Computes all eigenvalues and eigenvectors of a generalized 366 /// symmetric-definite generalized eigenproblem, Ax= lambda 367 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 368 /// storage. 369 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 370 void sspgvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, float *ap, float *bp, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 371 void dspgvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, double *ap, double *bp, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 372 373 /// Computes all eigenvalues and eigenvectors of a generalized 374 /// Hermitian-definite generalized eigenproblem, Ax= lambda 375 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 376 /// storage. 377 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 378 void chpgvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cfloat *ap, _cfloat *bp, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 379 void zhpgvd_(lapackint *itype, ref char jobz, ref char uplo, ref lapackint n, _cdouble *ap, _cdouble *bp, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 380 381 /// Computes all the eigenvalues, and optionally, the eigenvectors 382 /// of a real generalized symmetric-definite banded eigenproblem, of 383 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 384 /// and banded, and B is also positive definite. 385 void ssbgv_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, float *ab, ref lapackint ldab, float *bb, ref lapackint ldbb, float *w, float *z, ref lapackint ldz, float *work, ref lapackint info); 386 void dsbgv_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, double *ab, ref lapackint ldab, double *bb, ref lapackint ldbb, double *w, double *z, ref lapackint ldz, double *work, ref lapackint info); 387 388 /// Computes all the eigenvalues, and optionally, the eigenvectors 389 /// of a complex generalized Hermitian-definite banded eigenproblem, of 390 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 391 /// and banded, and B is also positive definite. 392 void chbgv_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cfloat *ab, ref lapackint ldab, _cfloat *bb, ref lapackint ldbb, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, ref lapackint info); 393 void zhbgv_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cdouble *ab, ref lapackint ldab, _cdouble *bb, ref lapackint ldbb, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, ref lapackint info); 394 395 /// Computes all the eigenvalues, and optionally, the eigenvectors 396 /// of a real generalized symmetric-definite banded eigenproblem, of 397 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 398 /// and banded, and B is also positive definite. 399 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 400 void ssbgvd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, float *ab, ref lapackint ldab, float *bb, ref lapackint ldbb, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 401 void dsbgvd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, double *ab, ref lapackint ldab, double *bb, ref lapackint ldbb, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 402 403 /// Computes all the eigenvalues, and optionally, the eigenvectors 404 /// of a complex generalized Hermitian-definite banded eigenproblem, of 405 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 406 /// and banded, and B is also positive definite. 407 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 408 void chbgvd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cfloat *ab, ref lapackint ldab, _cfloat *bb, ref lapackint ldbb, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 409 void zhbgvd_(ref char jobz, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cdouble *ab, ref lapackint ldab, _cdouble *bb, ref lapackint ldbb, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 410 411 /// Computes the generalized eigenvalues, Schur form, and left and/or 412 /// right Schur vectors for a pair of nonsymmetric matrices 413 void sgegs_(ref char jobvsl, ref char jobvsr, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *vsl, ref lapackint ldvsl, float *vsr, ref lapackint ldvsr, float *work, ref lapackint lwork, ref lapackint info); 414 void dgegs_(ref char jobvsl, ref char jobvsr, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *vsl, ref lapackint ldvsl, double *vsr, ref lapackint ldvsr, double *work, ref lapackint lwork, ref lapackint info); 415 void cgegs_(ref char jobvsl, ref char jobvsr, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphav, _cfloat *betav, _cfloat *vsl, ref lapackint ldvsl, _cfloat *vsr, ref lapackint ldvsr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 416 void zgegs_(ref char jobvsl, ref char jobvsr, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphav, _cdouble *betav, _cdouble *vsl, ref lapackint ldvsl, _cdouble *vsr, ref lapackint ldvsr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 417 418 /// Computes the generalized eigenvalues, Schur form, and left and/or 419 /// right Schur vectors for a pair of nonsymmetric matrices 420 void sgges_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_SGGES_SELCTG selctg, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, lapackint *sdim, float *alphar, float *alphai, float *betav, float *vsl, ref lapackint ldvsl, float *vsr, ref lapackint ldvsr, float *work, ref lapackint lwork, lapackint *bwork, ref lapackint info); 421 void dgges_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_DGGES_DELCTG delctg, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, lapackint *sdim, double *alphar, double *alphai, double *betav, double *vsl, ref lapackint ldvsl, double *vsr, ref lapackint ldvsr, double *work, ref lapackint lwork, lapackint *bwork, ref lapackint info); 422 void cgges_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_CGGES_SELCTG selctg, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, lapackint *sdim, _cfloat *alphav, _cfloat *betav, _cfloat *vsl, ref lapackint ldvsl, _cfloat *vsr, ref lapackint ldvsr, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *bwork, ref lapackint info); 423 void zgges_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_ZGGES_DELCTG delctg, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, lapackint *sdim, _cdouble *alphav, _cdouble *betav, _cdouble *vsl, ref lapackint ldvsl, _cdouble *vsr, ref lapackint ldvsr, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *bwork, ref lapackint info); 424 425 /// Computes the generalized eigenvalues, and left and/or right 426 /// generalized eigenvectors for a pair of nonsymmetric matrices 427 void sgegv_(ref char jobvl, ref char jobvr, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, float *work, ref lapackint lwork, ref lapackint info); 428 void dgegv_(ref char jobvl, ref char jobvr, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, double *work, ref lapackint lwork, ref lapackint info); 429 void cgegv_(ref char jobvl, ref char jobvr, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphar, _cfloat *betav, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 430 void zgegv_(ref char jobvl, ref char jobvr, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphar, _cdouble *betav, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 431 432 /// Computes the generalized eigenvalues, and left and/or right 433 /// generalized eigenvectors for a pair of nonsymmetric matrices 434 void sggev_(ref char jobvl, ref char jobvr, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, float *work, ref lapackint lwork, ref lapackint info); 435 void dggev_(ref char jobvl, ref char jobvr, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, double *work, ref lapackint lwork, ref lapackint info); 436 void cggev_(ref char jobvl, ref char jobvr, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphav, _cfloat *betav, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 437 void zggev_(ref char jobvl, ref char jobvr, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphav, _cdouble *betav, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 438 439 /// Computes the Generalized Singular Value Decomposition 440 void sggsvd_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint n, ref lapackint p, ref lapackint k, ref lapackint l, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphav, float *betav, float *u, ref lapackint ldu, float *v, ref lapackint ldv, float *q, ref lapackint ldq, float *work, lapackint *iwork, ref lapackint info); 441 void dggsvd_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint n, ref lapackint p, ref lapackint k, ref lapackint l, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphav, double *betav, double *u, ref lapackint ldu, double *v, ref lapackint ldv, double *q, ref lapackint ldq, double *work, lapackint *iwork, ref lapackint info); 442 void cggsvd_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint n, ref lapackint p, ref lapackint k, ref lapackint l, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *alphav, float *betav, _cfloat *u, ref lapackint ldu, _cfloat *v, ref lapackint ldv, _cfloat *q, ref lapackint ldq, _cfloat *work, float *rwork, lapackint *iwork, ref lapackint info); 443 void zggsvd_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint n, ref lapackint p, ref lapackint k, ref lapackint l, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *alphav, double *betav, _cdouble *u, ref lapackint ldu, _cdouble *v, ref lapackint ldv, _cdouble *q, ref lapackint ldq, _cdouble *work, double *rwork, lapackint *iwork, ref lapackint info); 444 445 //----------------------------------------------------- 446 // ---- EXPERT and RRR DRIVER routines ---- 447 //----------------------------------------------------- 448 449 /// Solves a general system of linear equations AX=B, A**T X=B 450 /// or A**H X=B, and provides an estimate of the condition number 451 /// and error bounds on the solution. 452 void sgesvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, lapackint *ipiv, ref char equed, float *r, float *c, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 453 void dgesvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, lapackint *ipiv, ref char equed, double *r, double *c, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 454 void cgesvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, ref char equed, float *r, float *c, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 455 void zgesvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, ref char equed, double *r, double *c, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 456 457 /// Solves a general banded system of linear equations AX=B, 458 /// A**T X=B or A**H X=B, and provides an estimate of the condition 459 /// number and error bounds on the solution. 460 void sgbsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, float *ab, ref lapackint ldab, float *afb, ref lapackint ldafb, lapackint *ipiv, ref char equed, float *r, float *c, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 461 void dgbsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, double *ab, ref lapackint ldab, double *afb, ref lapackint ldafb, lapackint *ipiv, ref char equed, double *r, double *c, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 462 void cgbsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *afb, ref lapackint ldafb, lapackint *ipiv, ref char equed, float *r, float *c, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 463 void zgbsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *afb, ref lapackint ldafb, lapackint *ipiv, ref char equed, double *r, double *c, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 464 465 /// Solves a general tridiagonal system of linear equations AX=B, 466 /// A**T X=B or A**H X=B, and provides an estimate of the condition 467 /// number and error bounds on the solution. 468 void sgtsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, float *dl, float *d, float *du, float *dlf, float *df, float *duf, float *du2, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 469 void dgtsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, double *dl, double *d, double *du, double *dlf, double *df, double *duf, double *du2, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 470 void cgtsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *dlf, _cfloat *df, _cfloat *duf, _cfloat *du2, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 471 void zgtsvx_(ref char fact, ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *dlf, _cdouble *df, _cdouble *duf, _cdouble *du2, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 472 473 /// Solves a symmetric positive definite system of linear 474 /// equations AX=B, and provides an estimate of the condition number 475 /// and error bounds on the solution. 476 void sposvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, ref char equed, float *s, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 477 void dposvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, ref char equed, double *s, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 478 void cposvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, ref char equed, float *s, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 479 void zposvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, ref char equed, double *s, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 480 481 /// Solves a symmetric positive definite system of linear 482 /// equations AX=B, where A is held in packed storage, and provides 483 /// an estimate of the condition number and error bounds on the 484 /// solution. 485 void sppsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *afp, ref char equed, float *s, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 486 void dppsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *afp, ref char equed, double *s, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 487 void cppsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, ref char equed, float *s, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 488 void zppsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, ref char equed, double *s, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 489 490 /// Solves a symmetric positive definite banded system 491 /// of linear equations AX=B, and provides an estimate of the condition 492 /// number and error bounds on the solution. 493 void spbsvx_(ref char fact, ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *afb, ref lapackint ldafb, ref char equed, float *s, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 494 void dpbsvx_(ref char fact, ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *afb, ref lapackint ldafb, ref char equed, double *s, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 495 void cpbsvx_(ref char fact, ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *afb, ref lapackint ldafb, ref char equed, float *s, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 496 void zpbsvx_(ref char fact, ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *afb, ref lapackint ldafb, ref char equed, double *s, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 497 498 /// Solves a symmetric positive definite tridiagonal 499 /// system of linear equations AX=B, and provides an estimate of 500 /// the condition number and error bounds on the solution. 501 void sptsvx_(ref char fact, ref lapackint n, ref lapackint nrhs, float *d, float *e, float *df, float *ef, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, ref lapackint info); 502 void dptsvx_(ref char fact, ref lapackint n, ref lapackint nrhs, double *d, double *e, double *df, double *ef, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, ref lapackint info); 503 void cptsvx_(ref char fact, ref lapackint n, ref lapackint nrhs, float *d, _cfloat *e, float *df, _cfloat *ef, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 504 void zptsvx_(ref char fact, ref lapackint n, ref lapackint nrhs, double *d, _cdouble *e, double *df, _cdouble *ef, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 505 506 /// Solves a real symmetric 507 /// indefinite system of linear equations AX=B, and provides an 508 /// estimate of the condition number and error bounds on the solution. 509 void ssysvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 510 void dsysvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 511 void csysvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 512 void zsysvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 513 514 /// Solves a complex Hermitian 515 /// indefinite system of linear equations AX=B, and provides an 516 /// estimate of the condition number and error bounds on the solution. 517 void chesvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 518 void zhesvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 519 520 /// Solves a real symmetric 521 /// indefinite system of linear equations AX=B, where A is held 522 /// in packed storage, and provides an estimate of the condition 523 /// number and error bounds on the solution. 524 void sspsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *afp, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 525 void dspsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *afp, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 526 void cspsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 527 void zspsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 528 529 /// Solves a complex Hermitian 530 /// indefinite system of linear equations AX=B, where A is held 531 /// in packed storage, and provides an estimate of the condition 532 /// number and error bounds on the solution. 533 void chpsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, ref float rcond, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 534 void zhpsvx_(ref char fact, ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, ref double rcond, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 535 536 /// Computes the minimum norm least squares solution to an over- 537 /// or under-determined system of linear equations A X=B, using a 538 /// complete orthogonal factorization of A. 539 void sgelsx_(ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, lapackint *jpvt, ref float rcond, ref lapackint rank, float *work, ref lapackint info); 540 void dgelsx_(ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, lapackint *jpvt, ref double rcond, ref lapackint rank, double *work, ref lapackint info); 541 void cgelsx_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, lapackint *jpvt, ref float rcond, ref lapackint rank, _cfloat *work, float *rwork, ref lapackint info); 542 void zgelsx_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, lapackint *jpvt, ref double rcond, ref lapackint rank, _cdouble *work, double *rwork, ref lapackint info); 543 544 /// Computes the minimum norm least squares solution to an over- 545 /// or under-determined system of linear equations A X=B, using a 546 /// complete orthogonal factorization of A. 547 void sgelsy_(ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, lapackint *jpvt, ref float rcond, ref lapackint rank, float *work, ref lapackint lwork, ref lapackint info); 548 void dgelsy_(ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, lapackint *jpvt, ref double rcond, ref lapackint rank, double *work, ref lapackint lwork, ref lapackint info); 549 void cgelsy_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, lapackint *jpvt, ref float rcond, ref lapackint rank, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 550 void zgelsy_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, lapackint *jpvt, ref double rcond, ref lapackint rank, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 551 552 /// Computes the minimum norm least squares solution to an over- 553 /// or under-determined system of linear equations A X=B, using 554 /// the singular value decomposition of A. 555 void sgelss_(ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *s, ref float rcond, ref lapackint rank, float *work, ref lapackint lwork, ref lapackint info); 556 void dgelss_(ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *s, ref double rcond, ref lapackint rank, double *work, ref lapackint lwork, ref lapackint info); 557 void cgelss_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *s, ref float rcond, ref lapackint rank, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 558 void zgelss_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *s, ref double rcond, ref lapackint rank, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 559 560 /// Computes selected eigenvalues and eigenvectors of a symmetric matrix. 561 void ssyevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 562 void dsyevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 563 564 /// Computes selected eigenvalues and eigenvectors of a Hermitian matrix. 565 void cheevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 566 void zheevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 567 568 /// Computes selected eigenvalues, and optionally, eigenvectors of a real 569 /// symmetric matrix. Eigenvalues are computed by the dqds 570 /// algorithm, and eigenvectors are computed from various "good" LDL^T 571 /// representations (also known as Relatively Robust Representations). 572 void ssyevr_(ref char jobz, ref char range, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, lapackint *isuppz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 573 void dsyevr_(ref char jobz, ref char range, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, lapackint *isuppz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 574 575 /// Computes selected eigenvalues, and optionally, eigenvectors of a complex 576 /// Hermitian matrix. Eigenvalues are computed by the dqds 577 /// algorithm, and eigenvectors are computed from various "good" LDL^T 578 /// representations (also known as Relatively Robust Representations). 579 void cheevr_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, lapackint *isuppz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 580 void zheevr_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, lapackint *isuppz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 581 582 583 /// Computes selected eigenvalues, and optionally, the eigenvectors of 584 /// a generalized symmetric-definite generalized eigenproblem, 585 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 586 void ssygvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 587 void dsygvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 588 589 /// Computes selected eigenvalues, and optionally, the eigenvectors of 590 /// a generalized Hermitian-definite generalized eigenproblem, 591 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 592 void chegvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 593 void zhegvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 594 595 /// Computes selected eigenvalues and eigenvectors of a 596 /// symmetric matrix in packed storage. 597 void sspevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, float *ap, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 598 void dspevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, double *ap, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 599 600 /// Computes selected eigenvalues and eigenvectors of a 601 /// Hermitian matrix in packed storage. 602 void chpevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cfloat *ap, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 603 void zhpevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, _cdouble *ap, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 604 605 /// Computes selected eigenvalues, and optionally, eigenvectors of 606 /// a generalized symmetric-definite generalized eigenproblem, Ax= lambda 607 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 608 /// storage. 609 void sspgvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, float *ap, float *bp, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 610 void dspgvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, double *ap, double *bp, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 611 612 /// Computes selected eigenvalues, and optionally, the eigenvectors of 613 /// a generalized Hermitian-definite generalized eigenproblem, Ax= lambda 614 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 615 /// storage. 616 void chpgvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, _cfloat *ap, _cfloat *bp, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 617 void zhpgvx_(lapackint *itype, ref char jobz, ref char range, ref char uplo, ref lapackint n, _cdouble *ap, _cdouble *bp, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 618 619 /// Computes selected eigenvalues and eigenvectors of a 620 /// symmetric band matrix. 621 void ssbevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *q, ref lapackint ldq, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 622 void dsbevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *q, ref lapackint ldq, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 623 624 /// Computes selected eigenvalues and eigenvectors of a 625 /// Hermitian band matrix. 626 void chbevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, _cfloat *q, ref lapackint ldq, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 627 void zhbevx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, _cdouble *q, ref lapackint ldq, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 628 629 /// Computes selected eigenvalues, and optionally, the eigenvectors 630 /// of a real generalized symmetric-definite banded eigenproblem, of 631 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 632 /// and banded, and B is also positive definite. 633 void ssbgvx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, float *ab, ref lapackint ldab, float *bb, ref lapackint ldbb, float *q, ref lapackint ldq, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 634 void dsbgvx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, double *ab, ref lapackint ldab, double *bb, ref lapackint ldbb, double *q, ref lapackint ldq, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 635 636 /// Computes selected eigenvalues, and optionally, the eigenvectors 637 /// of a complex generalized Hermitian-definite banded eigenproblem, of 638 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 639 /// and banded, and B is also positive definite. 640 void chbgvx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cfloat *ab, ref lapackint ldab, _cfloat *bb, ref lapackint ldbb, _cfloat *q, ref lapackint ldq, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, _cfloat *work, float *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 641 void zhbgvx_(ref char jobz, ref char range, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cdouble *ab, ref lapackint ldab, _cdouble *bb, ref lapackint ldbb, _cdouble *q, ref lapackint ldq, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, _cdouble *work, double *rwork, lapackint *iwork, lapackint *ifail, ref lapackint info); 642 643 /// Computes selected eigenvalues and eigenvectors of a real 644 /// symmetric tridiagonal matrix. 645 void sstevx_(ref char jobz, ref char range, ref lapackint n, float *d, float *e, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 646 void dstevx_(ref char jobz, ref char range, ref lapackint n, double *d, double *e, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 647 648 /// Computes selected eigenvalues, and optionally, eigenvectors of a real 649 /// symmetric tridiagonal matrix. Eigenvalues are computed by the dqds 650 /// algorithm, and eigenvectors are computed from various "good" LDL^T 651 /// representations (also known as Relatively Robust Representations). 652 void sstevr_(ref char jobz, ref char range, ref lapackint n, float *d, float *e, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, lapackint *isuppz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 653 void dstevr_(ref char jobz, ref char range, ref lapackint n, double *d, double *e, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, lapackint *isuppz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 654 655 /// Computes the eigenvalues and Schur factorization of a general 656 /// matrix, orders the factorization so that selected eigenvalues 657 /// are at the top left of the Schur form, and computes reciprocal 658 /// condition numbers for the average of the selected eigenvalues, 659 /// and for the associated right invariant subspace. 660 void sgeesx_(ref char jobvs, ref char sort, FCB_SGEESX_SELECT select, ref char sense, ref lapackint n, float *a, ref lapackint lda, lapackint *sdim, float *wr, float *wi, float *vs, ref lapackint ldvs, ref float rconde, ref float rcondv, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 661 void dgeesx_(ref char jobvs, ref char sort, FCB_DGEESX_SELECT select, ref char sense, ref lapackint n, double *a, ref lapackint lda, lapackint *sdim, double *wr, double *wi, double *vs, ref lapackint ldvs, ref double rconde, ref double rcondv, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 662 void cgeesx_(ref char jobvs, ref char sort, FCB_CGEESX_SELECT select, ref char sense, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *sdim, _cfloat *w, _cfloat *vs, ref lapackint ldvs, ref float rconde, ref float rcondv, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *bwork, ref lapackint info); 663 void zgeesx_(ref char jobvs, ref char sort, FCB_ZGEESX_SELECT select, ref char sense, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *sdim, _cdouble *w, _cdouble *vs, ref lapackint ldvs, ref double rconde, ref double rcondv, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *bwork, ref lapackint info); 664 665 /// Computes the generalized eigenvalues, the real Schur form, and, 666 /// optionally, the left and/or right matrices of Schur vectors. 667 void sggesx_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_SGGESX_SELCTG selctg, ref char sense, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, lapackint *sdim, float *alphar, float *alphai, float *betav, float *vsl, ref lapackint ldvsl, float *vsr, ref lapackint ldvsr, ref float rconde, ref float rcondv, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 668 void dggesx_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_DGGESX_DELCTG delctg, ref char sense, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, lapackint *sdim, double *alphar, double *alphai, double *betav, double *vsl, ref lapackint ldvsl, double *vsr, ref lapackint ldvsr, ref double rconde, ref double rcondv, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 669 void cggesx_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_CGGESX_SELCTG selctg, ref char sense, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, lapackint *sdim, _cfloat *alphav, _cfloat *betav, _cfloat *vsl, ref lapackint ldvsl, _cfloat *vsr, ref lapackint ldvsr, ref float rconde, ref float rcondv, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 670 void zggesx_(ref char jobvsl, ref char jobvsr, ref char sort, FCB_ZGGESX_DELCTG delctg, ref char sense, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, lapackint *sdim, _cdouble *alphav, _cdouble *betav, _cdouble *vsl, ref lapackint ldvsl, _cdouble *vsr, ref lapackint ldvsr, ref double rconde, ref double rcondv, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, lapackint *liwork, lapackint *bwork, ref lapackint info); 671 672 /// Computes the eigenvalues and left and right eigenvectors of 673 /// a general matrix, with preliminary balancing of the matrix, 674 /// and computes reciprocal condition numbers for the eigenvalues 675 /// and right eigenvectors. 676 void sgeevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, float *a, ref lapackint lda, float *wr, float *wi, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, float *scale, ref float abnrm, ref float rconde, ref float rcondv, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 677 void dgeevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, double *a, ref lapackint lda, double *wr, double *wi, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, double *scale, ref double abnrm, ref double rconde, ref double rcondv, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 678 void cgeevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *w, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, float *scale, ref float abnrm, ref float rconde, ref float rcondv, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 679 void zgeevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *w, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, double *scale, ref double abnrm, ref double rconde, ref double rcondv, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 680 681 /// Computes the generalized eigenvalues, and optionally, the left 682 /// and/or right generalized eigenvectors. 683 void sggevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, float *lscale, float *rscale, ref float abnrm, ref float bbnrm, ref float rconde, ref float rcondv, float *work, ref lapackint lwork, lapackint *iwork, lapackint *bwork, ref lapackint info); 684 void dggevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, double *lscale, double *rscale, ref double abnrm, ref double bbnrm, ref double rconde, ref double rcondv, double *work, ref lapackint lwork, lapackint *iwork, lapackint *bwork, ref lapackint info); 685 void cggevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphav, _cfloat *betav, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, float *lscale, float *rscale, ref float abnrm, ref float bbnrm, ref float rconde, ref float rcondv, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *iwork, lapackint *bwork, ref lapackint info); 686 void zggevx_(ref char balanc, ref char jobvl, ref char jobvr, ref char sense, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphav, _cdouble *betav, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, ref lapackint ilo, ref lapackint ihi, double *lscale, double *rscale, ref double abnrm, ref double bbnrm, ref double rconde, ref double rcondv, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *iwork, lapackint *bwork, ref lapackint info); 687 688 689 690 //---------------------------------------- 691 // ---- COMPUTATIONAL routines ---- 692 //---------------------------------------- 693 694 695 /// Computes the singular value decomposition (SVD) of a real bidiagonal 696 /// matrix, using a divide and conquer method. 697 void sbdsdc_(ref char uplo, ref char compq, ref lapackint n, float *d, float *e, float *u, ref lapackint ldu, float *vt, ref lapackint ldvt, float *q, lapackint *iq, float *work, lapackint *iwork, ref lapackint info); 698 void dbdsdc_(ref char uplo, ref char compq, ref lapackint n, double *d, double *e, double *u, ref lapackint ldu, double *vt, ref lapackint ldvt, double *q, lapackint *iq, double *work, lapackint *iwork, ref lapackint info); 699 700 /// Computes the singular value decomposition (SVD) of a real bidiagonal 701 /// matrix, using the bidiagonal QR algorithm. 702 void sbdsqr_(ref char uplo, ref lapackint n, ref lapackint ncvt, ref lapackint nru, ref lapackint ncc, float *d, float *e, float *vt, ref lapackint ldvt, float *u, ref lapackint ldu, float *c, ref lapackint ldc, float *work, ref lapackint info); 703 void dbdsqr_(ref char uplo, ref lapackint n, ref lapackint ncvt, ref lapackint nru, ref lapackint ncc, double *d, double *e, double *vt, ref lapackint ldvt, double *u, ref lapackint ldu, double *c, ref lapackint ldc, double *work, ref lapackint info); 704 void cbdsqr_(ref char uplo, ref lapackint n, ref lapackint ncvt, ref lapackint nru, ref lapackint ncc, float *d, float *e, _cfloat *vt, ref lapackint ldvt, _cfloat *u, ref lapackint ldu, _cfloat *c, ref lapackint ldc, float *rwork, ref lapackint info); 705 void zbdsqr_(ref char uplo, ref lapackint n, ref lapackint ncvt, ref lapackint nru, ref lapackint ncc, double *d, double *e, _cdouble *vt, ref lapackint ldvt, _cdouble *u, ref lapackint ldu, _cdouble *c, ref lapackint ldc, double *rwork, ref lapackint info); 706 707 /// Computes the reciprocal condition numbers for the eigenvectors of a 708 /// real symmetric or complex Hermitian matrix or for the left or right 709 /// singular vectors of a general matrix. 710 void sdisna_(ref char job, ref lapackint m, ref lapackint n, float *d, float *sep, ref lapackint info); 711 void ddisna_(ref char job, ref lapackint m, ref lapackint n, double *d, double *sep, ref lapackint info); 712 713 /// Reduces a general band matrix to real upper bidiagonal form 714 /// by an orthogonal transformation. 715 void sgbbrd_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint ncc, ref lapackint kl, ref lapackint ku, float *ab, ref lapackint ldab, float *d, float *e, float *q, ref lapackint ldq, float *pt, ref lapackint ldpt, float *c, ref lapackint ldc, float *work, ref lapackint info); 716 void dgbbrd_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint ncc, ref lapackint kl, ref lapackint ku, double *ab, ref lapackint ldab, double *d, double *e, double *q, ref lapackint ldq, double *pt, ref lapackint ldpt, double *c, ref lapackint ldc, double *work, ref lapackint info); 717 void cgbbrd_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint ncc, ref lapackint kl, ref lapackint ku, _cfloat *ab, ref lapackint ldab, float *d, float *e, _cfloat *q, ref lapackint ldq, _cfloat *pt, ref lapackint ldpt, _cfloat *c, ref lapackint ldc, _cfloat *work, float *rwork, ref lapackint info); 718 void zgbbrd_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint ncc, ref lapackint kl, ref lapackint ku, _cdouble *ab, ref lapackint ldab, double *d, double *e, _cdouble *q, ref lapackint ldq, _cdouble *pt, ref lapackint ldpt, _cdouble *c, ref lapackint ldc, _cdouble *work, double *rwork, ref lapackint info); 719 720 /// Estimates the reciprocal of the condition number of a general 721 /// band matrix, in either the 1-norm or the infinity-norm, using 722 /// the LU factorization computed by SGBTRF. 723 void sgbcon_(ref char norm, ref lapackint n, ref lapackint kl, ref lapackint ku, float *ab, ref lapackint ldab, lapackint *ipiv, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 724 void dgbcon_(ref char norm, ref lapackint n, ref lapackint kl, ref lapackint ku, double *ab, ref lapackint ldab, lapackint *ipiv, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 725 void cgbcon_(ref char norm, ref lapackint n, ref lapackint kl, ref lapackint ku, _cfloat *ab, ref lapackint ldab, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 726 void zgbcon_(ref char norm, ref lapackint n, ref lapackint kl, ref lapackint ku, _cdouble *ab, ref lapackint ldab, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 727 728 /// Computes row and column scalings to equilibrate a general band 729 /// matrix and reduce its condition number. 730 void sgbequ_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, float *ab, ref lapackint ldab, float *r, float *c, float *rowcnd, float *colcnd, float *amax, ref lapackint info); 731 void dgbequ_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, double *ab, ref lapackint ldab, double *r, double *c, double *rowcnd, double *colcnd, double *amax, ref lapackint info); 732 void cgbequ_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, _cfloat *ab, ref lapackint ldab, float *r, float *c, float *rowcnd, float *colcnd, float *amax, ref lapackint info); 733 void zgbequ_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, _cdouble *ab, ref lapackint ldab, double *r, double *c, double *rowcnd, double *colcnd, double *amax, ref lapackint info); 734 735 /// Improves the computed solution to a general banded system of 736 /// linear equations AX=B, A**T X=B or A**H X=B, and provides forward 737 /// and backward error bounds for the solution. 738 void sgbrfs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, float *ab, ref lapackint ldab, float *afb, ref lapackint ldafb, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 739 void dgbrfs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, double *ab, ref lapackint ldab, double *afb, ref lapackint ldafb, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 740 void cgbrfs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *afb, ref lapackint ldafb, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 741 void zgbrfs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *afb, ref lapackint ldafb, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 742 743 /// Computes an LU factorization of a general band matrix, using 744 /// partial pivoting with row interchanges. 745 void sgbtrf_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, float *ab, ref lapackint ldab, lapackint *ipiv, ref lapackint info); 746 void dgbtrf_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, double *ab, ref lapackint ldab, lapackint *ipiv, ref lapackint info); 747 void cgbtrf_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, _cfloat *ab, ref lapackint ldab, lapackint *ipiv, ref lapackint info); 748 void zgbtrf_(ref lapackint m, ref lapackint n, ref lapackint kl, ref lapackint ku, _cdouble *ab, ref lapackint ldab, lapackint *ipiv, ref lapackint info); 749 750 /// Solves a general banded system of linear equations AX=B, 751 /// A**T X=B or A**H X=B, using the LU factorization computed 752 /// by SGBTRF. 753 void sgbtrs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, float *ab, ref lapackint ldab, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 754 void dgbtrs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, double *ab, ref lapackint ldab, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 755 void cgbtrs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 756 void zgbtrs_(ref char trans, ref lapackint n, ref lapackint kl, ref lapackint ku, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 757 758 /// Transforms eigenvectors of a balanced matrix to those of the 759 /// original matrix supplied to SGEBAL. 760 void sgebak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *scale, ref lapackint m, float *v, ref lapackint ldv, ref lapackint info); 761 void dgebak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *scale, ref lapackint m, double *v, ref lapackint ldv, ref lapackint info); 762 void cgebak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *scale, ref lapackint m, _cfloat *v, ref lapackint ldv, ref lapackint info); 763 void zgebak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *scale, ref lapackint m, _cdouble *v, ref lapackint ldv, ref lapackint info); 764 765 /// Balances a general matrix in order to improve the accuracy 766 /// of computed eigenvalues. 767 void sgebal_(ref char job, ref lapackint n, float *a, ref lapackint lda, ref lapackint ilo, ref lapackint ihi, float *scale, ref lapackint info); 768 void dgebal_(ref char job, ref lapackint n, double *a, ref lapackint lda, ref lapackint ilo, ref lapackint ihi, double *scale, ref lapackint info); 769 void cgebal_(ref char job, ref lapackint n, _cfloat *a, ref lapackint lda, ref lapackint ilo, ref lapackint ihi, float *scale, ref lapackint info); 770 void zgebal_(ref char job, ref lapackint n, _cdouble *a, ref lapackint lda, ref lapackint ilo, ref lapackint ihi, double *scale, ref lapackint info); 771 772 /// Reduces a general rectangular matrix to real bidiagonal form 773 /// by an orthogonal transformation. 774 void sgebrd_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *d, float *e, float *tauq, float *taup, float *work, ref lapackint lwork, ref lapackint info); 775 void dgebrd_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *d, double *e, double *tauq, double *taup, double *work, ref lapackint lwork, ref lapackint info); 776 void cgebrd_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, float *d, float *e, _cfloat *tauq, _cfloat *taup, _cfloat *work, ref lapackint lwork, ref lapackint info); 777 void zgebrd_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, double *d, double *e, _cdouble *tauq, _cdouble *taup, _cdouble *work, ref lapackint lwork, ref lapackint info); 778 779 /// Estimates the reciprocal of the condition number of a general 780 /// matrix, in either the 1-norm or the infinity-norm, using the 781 /// LU factorization computed by SGETRF. 782 void sgecon_(ref char norm, ref lapackint n, float *a, ref lapackint lda, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 783 void dgecon_(ref char norm, ref lapackint n, double *a, ref lapackint lda, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 784 void cgecon_(ref char norm, ref lapackint n, _cfloat *a, ref lapackint lda, float *anorm, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 785 void zgecon_(ref char norm, ref lapackint n, _cdouble *a, ref lapackint lda, double *anorm, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 786 787 /// Computes row and column scalings to equilibrate a general 788 /// rectangular matrix and reduce its condition number. 789 void sgeequ_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *r, float *c, float *rowcnd, float *colcnd, float *amax, ref lapackint info); 790 void dgeequ_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *r, double *c, double *rowcnd, double *colcnd, double *amax, ref lapackint info); 791 void cgeequ_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, float *r, float *c, float *rowcnd, float *colcnd, float *amax, ref lapackint info); 792 void zgeequ_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, double *r, double *c, double *rowcnd, double *colcnd, double *amax, ref lapackint info); 793 794 /// Reduces a general matrix to upper Hessenberg form by an 795 /// orthogonal similarity transformation. 796 void sgehrd_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 797 void dgehrd_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 798 void cgehrd_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 799 void zgehrd_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 800 801 /// Computes an LQ factorization of a general rectangular matrix. 802 void sgelqf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 803 void dgelqf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 804 void cgelqf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 805 void zgelqf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 806 807 /// Computes a QL factorization of a general rectangular matrix. 808 void sgeqlf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 809 void dgeqlf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 810 void cgeqlf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 811 void zgeqlf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 812 813 /// Computes a QR factorization with column pivoting of a general 814 /// rectangular matrix using Level 3 BLAS. 815 void sgeqp3_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, lapackint *jpvt, float *tau, float *work, ref lapackint lwork, ref lapackint info); 816 void dgeqp3_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, lapackint *jpvt, double *tau, double *work, ref lapackint lwork, ref lapackint info); 817 void cgeqp3_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *jpvt, _cfloat *tau, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 818 void zgeqp3_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *jpvt, _cdouble *tau, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 819 820 /// Computes a QR factorization with column pivoting of a general 821 /// rectangular matrix. 822 void sgeqpf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, lapackint *jpvt, float *tau, float *work, ref lapackint info); 823 void dgeqpf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, lapackint *jpvt, double *tau, double *work, ref lapackint info); 824 void cgeqpf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *jpvt, _cfloat *tau, _cfloat *work, float *rwork, ref lapackint info); 825 void zgeqpf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *jpvt, _cdouble *tau, _cdouble *work, double *rwork, ref lapackint info); 826 827 /// Computes a QR factorization of a general rectangular matrix. 828 void sgeqrf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 829 void dgeqrf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 830 void cgeqrf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 831 void zgeqrf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 832 833 /// Improves the computed solution to a general system of linear 834 /// equations AX=B, A**T X=B or A**H X=B, and provides forward and 835 /// backward error bounds for the solution. 836 void sgerfs_(ref char trans, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 837 void dgerfs_(ref char trans, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 838 void cgerfs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 839 void zgerfs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 840 841 /// Computes an RQ factorization of a general rectangular matrix. 842 void sgerqf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 843 void dgerqf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 844 void cgerqf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 845 void zgerqf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 846 847 /// Computes an LU factorization of a general matrix, using partial 848 /// pivoting with row interchanges. 849 void sgetrf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, lapackint *ipiv, ref lapackint info); 850 void dgetrf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, lapackint *ipiv, ref lapackint info); 851 void cgetrf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, ref lapackint info); 852 void zgetrf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, ref lapackint info); 853 854 /// Computes the inverse of a general matrix, using the LU factorization 855 /// computed by SGETRF. 856 void sgetri_(ref lapackint n, float *a, ref lapackint lda, lapackint *ipiv, float *work, ref lapackint lwork, ref lapackint info); 857 void dgetri_(ref lapackint n, double *a, ref lapackint lda, lapackint *ipiv, double *work, ref lapackint lwork, ref lapackint info); 858 void cgetri_(ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *work, ref lapackint lwork, ref lapackint info); 859 void zgetri_(ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *work, ref lapackint lwork, ref lapackint info); 860 861 /// Solves a general system of linear equations AX=B, A**T X=B 862 /// or A**H X=B, using the LU factorization computed by SGETRF. 863 void sgetrs_(ref char trans, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 864 void dgetrs_(ref char trans, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 865 void cgetrs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 866 void zgetrs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 867 868 /// Forms the right or left eigenvectors of the generalized eigenvalue 869 /// problem by backward transformation on the computed eigenvectors of 870 /// the balanced pair of matrices output by SGGBAL. 871 void sggbak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *lscale, float *rscale, ref lapackint m, float *v, ref lapackint ldv, ref lapackint info); 872 void dggbak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *lscale, double *rscale, ref lapackint m, double *v, ref lapackint ldv, ref lapackint info); 873 void cggbak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *lscale, float *rscale, ref lapackint m, _cfloat *v, ref lapackint ldv, ref lapackint info); 874 void zggbak_(ref char job, ref char side, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *lscale, double *rscale, ref lapackint m, _cdouble *v, ref lapackint ldv, ref lapackint info); 875 876 /// Balances a pair of general real matrices for the generalized 877 /// eigenvalue problem A x = lambda B x. 878 void sggbal_(ref char job, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, ref lapackint ilo, ref lapackint ihi, float *lscale, float *rscale, float *work, ref lapackint info); 879 void dggbal_(ref char job, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, ref lapackint ilo, ref lapackint ihi, double *lscale, double *rscale, double *work, ref lapackint info); 880 void cggbal_(ref char job, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, ref lapackint ilo, ref lapackint ihi, float *lscale, float *rscale, float *work, ref lapackint info); 881 void zggbal_(ref char job, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, ref lapackint ilo, ref lapackint ihi, double *lscale, double *rscale, double *work, ref lapackint info); 882 883 /// Reduces a pair of real matrices to generalized upper 884 /// Hessenberg form using orthogonal transformations 885 void sgghrd_(ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *q, ref lapackint ldq, float *z, ref lapackint ldz, ref lapackint info); 886 void dgghrd_(ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *q, ref lapackint ldq, double *z, ref lapackint ldz, ref lapackint info); 887 void cgghrd_(ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *q, ref lapackint ldq, _cfloat *z, ref lapackint ldz, ref lapackint info); 888 void zgghrd_(ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *q, ref lapackint ldq, _cdouble *z, ref lapackint ldz, ref lapackint info); 889 890 /// Computes a generalized QR factorization of a pair of matrices. 891 void sggqrf_(ref lapackint n, ref lapackint m, ref lapackint p, float *a, ref lapackint lda, float *taua, float *b, ref lapackint ldb, float *taub, float *work, ref lapackint lwork, ref lapackint info); 892 void dggqrf_(ref lapackint n, ref lapackint m, ref lapackint p, double *a, ref lapackint lda, double *taua, double *b, ref lapackint ldb, double *taub, double *work, ref lapackint lwork, ref lapackint info); 893 void cggqrf_(ref lapackint n, ref lapackint m, ref lapackint p, _cfloat *a, ref lapackint lda, _cfloat *taua, _cfloat *b, ref lapackint ldb, _cfloat *taub, _cfloat *work, ref lapackint lwork, ref lapackint info); 894 void zggqrf_(ref lapackint n, ref lapackint m, ref lapackint p, _cdouble *a, ref lapackint lda, _cdouble *taua, _cdouble *b, ref lapackint ldb, _cdouble *taub, _cdouble *work, ref lapackint lwork, ref lapackint info); 895 896 /// Computes a generalized RQ factorization of a pair of matrices. 897 void sggrqf_(ref lapackint m, ref lapackint p, ref lapackint n, float *a, ref lapackint lda, float *taua, float *b, ref lapackint ldb, float *taub, float *work, ref lapackint lwork, ref lapackint info); 898 void dggrqf_(ref lapackint m, ref lapackint p, ref lapackint n, double *a, ref lapackint lda, double *taua, double *b, ref lapackint ldb, double *taub, double *work, ref lapackint lwork, ref lapackint info); 899 void cggrqf_(ref lapackint m, ref lapackint p, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *taua, _cfloat *b, ref lapackint ldb, _cfloat *taub, _cfloat *work, ref lapackint lwork, ref lapackint info); 900 void zggrqf_(ref lapackint m, ref lapackint p, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *taua, _cdouble *b, ref lapackint ldb, _cdouble *taub, _cdouble *work, ref lapackint lwork, ref lapackint info); 901 902 /// Computes orthogonal matrices as a preprocessing step 903 /// for computing the generalized singular value decomposition 904 void sggsvp_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, float *a, float *b, ref lapackint ldb, float *tola, float *tolb, ref lapackint k, ref lapackint ldu, float *v, ref lapackint ldv, float *q, ref lapackint ldq, lapackint *iwork, float *tau, float *work, ref lapackint info); 905 void dggsvp_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, double *a, double *b, ref lapackint ldb, double *tola, double *tolb, ref lapackint k, ref lapackint ldu, double *v, ref lapackint ldv, double *q, ref lapackint ldq, lapackint *iwork, double *tau, double *work, ref lapackint info); 906 void cggsvp_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, _cfloat *a, _cfloat *b, ref lapackint ldb, float *tola, float *tolb, ref lapackint k, ref lapackint ldu, _cfloat *v, ref lapackint ldv, _cfloat *q, ref lapackint ldq, lapackint *iwork, float *rwork, _cfloat *tau, _cfloat *work, ref lapackint info); 907 void zggsvp_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, _cdouble *a, _cdouble *b, ref lapackint ldb, double *tola, double *tolb, ref lapackint k, ref lapackint ldu, _cdouble *v, ref lapackint ldv, _cdouble *q, ref lapackint ldq, lapackint *iwork, double *rwork, _cdouble *tau, _cdouble *work, ref lapackint info); 908 909 /// Estimates the reciprocal of the condition number of a general 910 /// tridiagonal matrix, in either the 1-norm or the infinity-norm, 911 /// using the LU factorization computed by SGTTRF. 912 void sgtcon_(ref char norm, ref lapackint n, float *dl, float *d, float *du, float *du2, lapackint *ipiv, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 913 void dgtcon_(ref char norm, ref lapackint n, double *dl, double *d, double *du, double *du2, lapackint *ipiv, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 914 void cgtcon_(ref char norm, ref lapackint n, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *du2, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, ref lapackint info); 915 void zgtcon_(ref char norm, ref lapackint n, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *du2, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, ref lapackint info); 916 917 /// Improves the computed solution to a general tridiagonal system 918 /// of linear equations AX=B, A**T X=B or A**H X=B, and provides 919 /// forward and backward error bounds for the solution. 920 void sgtrfs_(ref char trans, ref lapackint n, ref lapackint nrhs, float *dl, float *d, float *du, float *dlf, float *df, float *duf, float *du2, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 921 void dgtrfs_(ref char trans, ref lapackint n, ref lapackint nrhs, double *dl, double *d, double *du, double *dlf, double *df, double *duf, double *du2, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 922 void cgtrfs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *dlf, _cfloat *df, _cfloat *duf, _cfloat *du2, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 923 void zgtrfs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *dlf, _cdouble *df, _cdouble *duf, _cdouble *du2, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 924 925 /// Computes an LU factorization of a general tridiagonal matrix, 926 /// using partial pivoting with row interchanges. 927 void sgttrf_(ref lapackint n, float *dl, float *d, float *du, float *du2, lapackint *ipiv, ref lapackint info); 928 void dgttrf_(ref lapackint n, double *dl, double *d, double *du, double *du2, lapackint *ipiv, ref lapackint info); 929 void cgttrf_(ref lapackint n, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *du2, lapackint *ipiv, ref lapackint info); 930 void zgttrf_(ref lapackint n, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *du2, lapackint *ipiv, ref lapackint info); 931 932 /// Solves a general tridiagonal system of linear equations AX=B, 933 /// A**T X=B or A**H X=B, using the LU factorization computed by 934 /// SGTTRF. 935 void sgttrs_(ref char trans, ref lapackint n, ref lapackint nrhs, float *dl, float *d, float *du, float *du2, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 936 void dgttrs_(ref char trans, ref lapackint n, ref lapackint nrhs, double *dl, double *d, double *du, double *du2, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 937 void cgttrs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cfloat *dl, _cfloat *d, _cfloat *du, _cfloat *du2, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 938 void zgttrs_(ref char trans, ref lapackint n, ref lapackint nrhs, _cdouble *dl, _cdouble *d, _cdouble *du, _cdouble *du2, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 939 940 /// Implements a single-/double-shift version of the QZ method for 941 /// finding the generalized eigenvalues of the equation 942 /// det(A - w(i) B) = 0 943 void shgeqz_(ref char job, ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *q, ref lapackint ldq, float *z, ref lapackint ldz, float *work, ref lapackint lwork, ref lapackint info); 944 void dhgeqz_(ref char job, ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *q, ref lapackint ldq, double *z, ref lapackint ldz, double *work, ref lapackint lwork, ref lapackint info); 945 void chgeqz_(ref char job, ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphav, _cfloat *betav, _cfloat *q, ref lapackint ldq, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, ref lapackint info); 946 void zhgeqz_(ref char job, ref char compq, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphav, _cdouble *betav, _cdouble *q, ref lapackint ldq, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, ref lapackint info); 947 948 /// Computes specified right and/or left eigenvectors of an upper 949 /// Hessenberg matrix by inverse iteration. 950 void shsein_(ref char side, ref char eigsrc, ref char initv, ref lapackint select, ref lapackint n, float *h, ref lapackint ldh, float *wr, float *wi, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, float *work, ref lapackint ifaill, ref lapackint ifailr, ref lapackint info); 951 void dhsein_(ref char side, ref char eigsrc, ref char initv, ref lapackint select, ref lapackint n, double *h, ref lapackint ldh, double *wr, double *wi, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, double *work, ref lapackint ifaill, ref lapackint ifailr, ref lapackint info); 952 void chsein_(ref char side, ref char eigsrc, ref char initv, ref const lapackint select, ref lapackint n, _cfloat *h, ref lapackint ldh, _cfloat *w, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cfloat *work, float *rwork, ref lapackint ifaill, ref lapackint ifailr, ref lapackint info); 953 void zhsein_(ref char side, ref char eigsrc, ref char initv, ref const lapackint select, ref lapackint n, _cdouble *h, ref lapackint ldh, _cdouble *w, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cdouble *work, double *rwork, ref lapackint ifaill, ref lapackint ifailr, ref lapackint info); 954 955 /// Computes the eigenvalues and Schur factorization of an upper 956 /// Hessenberg matrix, using the multishift QR algorithm. 957 void shseqr_(ref char job, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *h, ref lapackint ldh, float *wr, float *wi, float *z, ref lapackint ldz, float *work, ref lapackint lwork, ref lapackint info); 958 void dhseqr_(ref char job, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *h, ref lapackint ldh, double *wr, double *wi, double *z, ref lapackint ldz, double *work, ref lapackint lwork, ref lapackint info); 959 void chseqr_(ref char job, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *h, ref lapackint ldh, _cfloat *w, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, ref lapackint info); 960 void zhseqr_(ref char job, ref char compz, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *h, ref lapackint ldh, _cdouble *w, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, ref lapackint info); 961 962 /// Generates the orthogonal transformation matrix from 963 /// a reduction to tridiagonal form determined by SSPTRD. 964 void sopgtr_(ref char uplo, ref lapackint n, float *ap, float *tau, float *q, ref lapackint ldq, float *work, ref lapackint info); 965 void dopgtr_(ref char uplo, ref lapackint n, double *ap, double *tau, double *q, ref lapackint ldq, double *work, ref lapackint info); 966 967 /// Generates the unitary transformation matrix from 968 /// a reduction to tridiagonal form determined by CHPTRD. 969 void cupgtr_(ref char uplo, ref lapackint n, _cfloat *ap, _cfloat *tau, _cfloat *q, ref lapackint ldq, _cfloat *work, ref lapackint info); 970 void zupgtr_(ref char uplo, ref lapackint n, _cdouble *ap, _cdouble *tau, _cdouble *q, ref lapackint ldq, _cdouble *work, ref lapackint info); 971 972 973 /// Multiplies a general matrix by the orthogonal 974 /// transformation matrix from a reduction to tridiagonal form 975 /// determined by SSPTRD. 976 void sopmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, float *ap, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint info); 977 void dopmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, double *ap, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint info); 978 979 /// Generates the orthogonal transformation matrices from 980 /// a reduction to bidiagonal form determined by SGEBRD. 981 void sorgbr_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 982 void dorgbr_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 983 984 /// Generates the unitary transformation matrices from 985 /// a reduction to bidiagonal form determined by CGEBRD. 986 void cungbr_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 987 void zungbr_(ref char vect, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 988 989 /// Generates the orthogonal transformation matrix from 990 /// a reduction to Hessenberg form determined by SGEHRD. 991 void sorghr_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 992 void dorghr_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 993 994 /// Generates the unitary transformation matrix from 995 /// a reduction to Hessenberg form determined by CGEHRD. 996 void cunghr_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 997 void zunghr_(ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 998 999 /// Generates all or part of the orthogonal matrix Q from 1000 /// an LQ factorization determined by SGELQF. 1001 void sorglq_(ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1002 void dorglq_(ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1003 1004 /// Generates all or part of the unitary matrix Q from 1005 /// an LQ factorization determined by CGELQF. 1006 void cunglq_(ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1007 void zunglq_(ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1008 1009 /// Generates all or part of the orthogonal matrix Q from 1010 /// a QL factorization determined by SGEQLF. 1011 void sorgql_(ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1012 void dorgql_(ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1013 1014 /// Generates all or part of the unitary matrix Q from 1015 /// a QL factorization determined by CGEQLF. 1016 void cungql_(ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1017 void zungql_(ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1018 1019 /// Generates all or part of the orthogonal matrix Q from 1020 /// a QR factorization determined by SGEQRF. 1021 void sorgqr_(ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1022 void dorgqr_(ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1023 1024 /// Generates all or part of the unitary matrix Q from 1025 /// a QR factorization determined by CGEQRF. 1026 void cungqr_(ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1027 void zungqr_(ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1028 1029 /// Generates all or part of the orthogonal matrix Q from 1030 /// an RQ factorization determined by SGERQF. 1031 void sorgrq_(ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1032 void dorgrq_(ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1033 1034 /// Generates all or part of the unitary matrix Q from 1035 /// an RQ factorization determined by CGERQF. 1036 void cungrq_(ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1037 void zungrq_(ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1038 1039 /// Generates the orthogonal transformation matrix from 1040 /// a reduction to tridiagonal form determined by SSYTRD. 1041 void sorgtr_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1042 void dorgtr_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1043 1044 /// Generates the unitary transformation matrix from 1045 /// a reduction to tridiagonal form determined by CHETRD. 1046 void cungtr_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1047 void zungtr_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1048 1049 /// Multiplies a general matrix by one of the orthogonal 1050 /// transformation matrices from a reduction to bidiagonal form 1051 /// determined by SGEBRD. 1052 void sormbr_(ref char vect, ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1053 void dormbr_(ref char vect, ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1054 1055 /// Multiplies a general matrix by one of the unitary 1056 /// transformation matrices from a reduction to bidiagonal form 1057 /// determined by CGEBRD. 1058 void cunmbr_(ref char vect, ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1059 void zunmbr_(ref char vect, ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1060 1061 /// Multiplies a general matrix by the orthogonal transformation 1062 /// matrix from a reduction to Hessenberg form determined by SGEHRD. 1063 void sormhr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1064 void dormhr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1065 1066 /// Multiplies a general matrix by the unitary transformation 1067 /// matrix from a reduction to Hessenberg form determined by CGEHRD. 1068 void cunmhr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1069 void zunmhr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref const lapackint ilo, ref const lapackint ihi, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1070 1071 /// Multiplies a general matrix by the orthogonal matrix 1072 /// from an LQ factorization determined by SGELQF. 1073 void sormlq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1074 void dormlq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1075 1076 /// Multiplies a general matrix by the unitary matrix 1077 /// from an LQ factorization determined by CGELQF. 1078 void cunmlq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1079 void zunmlq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1080 1081 /// Multiplies a general matrix by the orthogonal matrix 1082 /// from a QL factorization determined by SGEQLF. 1083 void sormql_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1084 void dormql_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1085 1086 /// Multiplies a general matrix by the unitary matrix 1087 /// from a QL factorization determined by CGEQLF. 1088 void cunmql_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1089 void zunmql_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1090 1091 /// Multiplies a general matrix by the orthogonal matrix 1092 /// from a QR factorization determined by SGEQRF. 1093 void sormqr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1094 void dormqr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1095 1096 /// Multiplies a general matrix by the unitary matrix 1097 /// from a QR factorization determined by CGEQRF. 1098 void cunmqr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1099 void zunmqr_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1100 1101 /// Multiples a general matrix by the orthogonal matrix 1102 /// from an RZ factorization determined by STZRZF. 1103 void sormr3_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint info); 1104 void dormr3_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint info); 1105 1106 /// Multiples a general matrix by the unitary matrix 1107 /// from an RZ factorization determined by CTZRZF. 1108 void cunmr3_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint info); 1109 void zunmr3_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint info); 1110 1111 /// Multiplies a general matrix by the orthogonal matrix 1112 /// from an RQ factorization determined by SGERQF. 1113 void sormrq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1114 void dormrq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1115 1116 /// Multiplies a general matrix by the unitary matrix 1117 /// from an RQ factorization determined by CGERQF. 1118 void cunmrq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1119 void zunmrq_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1120 1121 /// Multiples a general matrix by the orthogonal matrix 1122 /// from an RZ factorization determined by STZRZF. 1123 void sormrz_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1124 void dormrz_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1125 1126 /// Multiples a general matrix by the unitary matrix 1127 /// from an RZ factorization determined by CTZRZF. 1128 void cunmrz_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1129 void zunmrz_(ref char side, ref char trans, ref lapackint m, ref lapackint n, ref lapackint k, lapackint *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1130 1131 /// Multiplies a general matrix by the orthogonal 1132 /// transformation matrix from a reduction to tridiagonal form 1133 /// determined by SSYTRD. 1134 void sormtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *c, ref lapackint ldc, float *work, ref lapackint lwork, ref lapackint info); 1135 void dormtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *c, ref lapackint ldc, double *work, ref lapackint lwork, ref lapackint info); 1136 1137 /// Multiplies a general matrix by the unitary 1138 /// transformation matrix from a reduction to tridiagonal form 1139 /// determined by CHETRD. 1140 void cunmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint lwork, ref lapackint info); 1141 void zunmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint lwork, ref lapackint info); 1142 1143 /// Estimates the reciprocal of the condition number of a 1144 /// symmetric positive definite band matrix, using the 1145 /// Cholesky factorization computed by SPBTRF. 1146 void spbcon_(ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1147 void dpbcon_(ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1148 void cpbcon_(ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, float *anorm, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1149 void zpbcon_(ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, double *anorm, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1150 1151 /// Computes row and column scalings to equilibrate a symmetric 1152 /// positive definite band matrix and reduce its condition number. 1153 void spbequ_(ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *s, float *scond, float *amax, ref lapackint info); 1154 void dpbequ_(ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *s, double *scond, double *amax, ref lapackint info); 1155 void cpbequ_(ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, float *s, float *scond, float *amax, ref lapackint info); 1156 void zpbequ_(ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, double *s, double *scond, double *amax, ref lapackint info); 1157 1158 /// Improves the computed solution to a symmetric positive 1159 /// definite banded system of linear equations AX=B, and provides 1160 /// forward and backward error bounds for the solution. 1161 void spbrfs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *afb, ref lapackint ldafb, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1162 void dpbrfs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *afb, ref lapackint ldafb, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1163 void cpbrfs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *afb, ref lapackint ldafb, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1164 void zpbrfs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *afb, ref lapackint ldafb, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1165 1166 /// Computes a split Cholesky factorization of a real symmetric positive 1167 /// definite band matrix. 1168 void spbstf_(ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, ref lapackint info); 1169 void dpbstf_(ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, ref lapackint info); 1170 void cpbstf_(ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, ref lapackint info); 1171 void zpbstf_(ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, ref lapackint info); 1172 1173 /// Computes the Cholesky factorization of a symmetric 1174 /// positive definite band matrix. 1175 void spbtrf_(ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, ref lapackint info); 1176 void dpbtrf_(ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, ref lapackint info); 1177 void cpbtrf_(ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, ref lapackint info); 1178 void zpbtrf_(ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, ref lapackint info); 1179 1180 /// Solves a symmetric positive definite banded system 1181 /// of linear equations AX=B, using the Cholesky factorization 1182 /// computed by SPBTRF. 1183 void spbtrs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *b, ref lapackint ldb, ref lapackint info); 1184 void dpbtrs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *b, ref lapackint ldb, ref lapackint info); 1185 void cpbtrs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *b, ref lapackint ldb, ref lapackint info); 1186 void zpbtrs_(ref char uplo, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *b, ref lapackint ldb, ref lapackint info); 1187 1188 /// Estimates the reciprocal of the condition number of a 1189 /// symmetric positive definite matrix, using the 1190 /// Cholesky factorization computed by SPOTRF. 1191 void spocon_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1192 void dpocon_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1193 void cpocon_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *anorm, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1194 void zpocon_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *anorm, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1195 1196 /// Computes row and column scalings to equilibrate a symmetric 1197 /// positive definite matrix and reduce its condition number. 1198 void spoequ_(ref lapackint n, float *a, ref lapackint lda, float *s, float *scond, float *amax, ref lapackint info); 1199 void dpoequ_(ref lapackint n, double *a, ref lapackint lda, double *s, double *scond, double *amax, ref lapackint info); 1200 void cpoequ_(ref lapackint n, _cfloat *a, ref lapackint lda, float *s, float *scond, float *amax, ref lapackint info); 1201 void zpoequ_(ref lapackint n, _cdouble *a, ref lapackint lda, double *s, double *scond, double *amax, ref lapackint info); 1202 1203 /// Improves the computed solution to a symmetric positive 1204 /// definite system of linear equations AX=B, and provides forward 1205 /// and backward error bounds for the solution. 1206 void sporfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1207 void dporfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1208 void cporfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1209 void zporfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1210 1211 /// Computes the Cholesky factorization of a symmetric 1212 /// positive definite matrix. 1213 void spotrf_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, ref lapackint info); 1214 void dpotrf_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, ref lapackint info); 1215 void cpotrf_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, ref lapackint info); 1216 void zpotrf_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, ref lapackint info); 1217 1218 /// Computes the inverse of a symmetric positive definite 1219 /// matrix, using the Cholesky factorization computed by SPOTRF. 1220 void spotri_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, ref lapackint info); 1221 void dpotri_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, ref lapackint info); 1222 void cpotri_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, ref lapackint info); 1223 void zpotri_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, ref lapackint info); 1224 1225 /// Solves a symmetric positive definite system of linear 1226 /// equations AX=B, using the Cholesky factorization computed by 1227 /// SPOTRF. 1228 void spotrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, ref lapackint info); 1229 void dpotrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, ref lapackint info); 1230 void cpotrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, ref lapackint info); 1231 void zpotrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, ref lapackint info); 1232 1233 /// Estimates the reciprocal of the condition number of a 1234 /// symmetric positive definite matrix in packed storage, 1235 /// using the Cholesky factorization computed by SPPTRF. 1236 void sppcon_(ref char uplo, ref lapackint n, float *ap, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1237 void dppcon_(ref char uplo, ref lapackint n, double *ap, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1238 void cppcon_(ref char uplo, ref lapackint n, _cfloat *ap, float *anorm, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1239 void zppcon_(ref char uplo, ref lapackint n, _cdouble *ap, double *anorm, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1240 1241 /// Computes row and column scalings to equilibrate a symmetric 1242 /// positive definite matrix in packed storage and reduce its condition 1243 /// number. 1244 void sppequ_(ref char uplo, ref lapackint n, float *ap, float *s, float *scond, float *amax, ref lapackint info); 1245 void dppequ_(ref char uplo, ref lapackint n, double *ap, double *s, double *scond, double *amax, ref lapackint info); 1246 void cppequ_(ref char uplo, ref lapackint n, _cfloat *ap, float *s, float *scond, float *amax, ref lapackint info); 1247 void zppequ_(ref char uplo, ref lapackint n, _cdouble *ap, double *s, double *scond, double *amax, ref lapackint info); 1248 1249 /// Improves the computed solution to a symmetric positive 1250 /// definite system of linear equations AX=B, where A is held in 1251 /// packed storage, and provides forward and backward error bounds 1252 /// for the solution. 1253 void spprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *afp, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1254 void dpprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *afp, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1255 void cpprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1256 void zpprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1257 1258 /// Computes the Cholesky factorization of a symmetric 1259 /// positive definite matrix in packed storage. 1260 void spptrf_(ref char uplo, ref lapackint n, float *ap, ref lapackint info); 1261 void dpptrf_(ref char uplo, ref lapackint n, double *ap, ref lapackint info); 1262 void cpptrf_(ref char uplo, ref lapackint n, _cfloat *ap, ref lapackint info); 1263 void zpptrf_(ref char uplo, ref lapackint n, _cdouble *ap, ref lapackint info); 1264 1265 /// Computes the inverse of a symmetric positive definite 1266 /// matrix in packed storage, using the Cholesky factorization computed 1267 /// by SPPTRF. 1268 void spptri_(ref char uplo, ref lapackint n, float *ap, ref lapackint info); 1269 void dpptri_(ref char uplo, ref lapackint n, double *ap, ref lapackint info); 1270 void cpptri_(ref char uplo, ref lapackint n, _cfloat *ap, ref lapackint info); 1271 void zpptri_(ref char uplo, ref lapackint n, _cdouble *ap, ref lapackint info); 1272 1273 /// Solves a symmetric positive definite system of linear 1274 /// equations AX=B, where A is held in packed storage, using the 1275 /// Cholesky factorization computed by SPPTRF. 1276 void spptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *b, ref lapackint ldb, ref lapackint info); 1277 void dpptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *b, ref lapackint ldb, ref lapackint info); 1278 void cpptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *b, ref lapackint ldb, ref lapackint info); 1279 void zpptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *b, ref lapackint ldb, ref lapackint info); 1280 1281 /// Computes the reciprocal of the condition number of a 1282 /// symmetric positive definite tridiagonal matrix, 1283 /// using the LDL**H factorization computed by SPTTRF. 1284 void sptcon_(ref lapackint n, float *d, float *e, float *anorm, ref float rcond, float *work, ref lapackint info); 1285 void dptcon_(ref lapackint n, double *d, double *e, double *anorm, ref double rcond, double *work, ref lapackint info); 1286 void cptcon_(ref lapackint n, float *d, _cfloat *e, float *anorm, ref float rcond, float *rwork, ref lapackint info); 1287 void zptcon_(ref lapackint n, double *d, _cdouble *e, double *anorm, ref double rcond, double *rwork, ref lapackint info); 1288 1289 /// Computes all eigenvalues and eigenvectors of a real symmetric 1290 /// positive definite tridiagonal matrix, by computing the SVD of 1291 /// its bidiagonal Cholesky factor. 1292 void spteqr_(ref char compz, ref lapackint n, float *d, float *e, float *z, ref lapackint ldz, float *work, ref lapackint info); 1293 void dpteqr_(ref char compz, ref lapackint n, double *d, double *e, double *z, ref lapackint ldz, double *work, ref lapackint info); 1294 void cpteqr_(ref char compz, ref lapackint n, float *d, float *e, _cfloat *z, ref lapackint ldz, float *work, ref lapackint info); 1295 void zpteqr_(ref char compz, ref lapackint n, double *d, double *e, _cdouble *z, ref lapackint ldz, double *work, ref lapackint info); 1296 1297 /// Improves the computed solution to a symmetric positive 1298 /// definite tridiagonal system of linear equations AX=B, and provides 1299 /// forward and backward error bounds for the solution. 1300 void sptrfs_(ref lapackint n, ref lapackint nrhs, float *d, float *e, float *df, float *ef, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, ref lapackint info); 1301 void dptrfs_(ref lapackint n, ref lapackint nrhs, double *d, double *e, double *df, double *ef, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, ref lapackint info); 1302 void cptrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *d, _cfloat *e, float *df, _cfloat *ef, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1303 void zptrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *d, _cdouble *e, double *df, _cdouble *ef, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1304 1305 /// Computes the LDL**H factorization of a symmetric 1306 /// positive definite tridiagonal matrix. 1307 void spttrf_(ref lapackint n, float *d, float *e, ref lapackint info); 1308 void dpttrf_(ref lapackint n, double *d, double *e, ref lapackint info); 1309 void cpttrf_(ref lapackint n, float *d, _cfloat *e, ref lapackint info); 1310 void zpttrf_(ref lapackint n, double *d, _cdouble *e, ref lapackint info); 1311 1312 /// Solves a symmetric positive definite tridiagonal 1313 /// system of linear equations, using the LDL**H factorization 1314 /// computed by SPTTRF. 1315 void spttrs_(ref lapackint n, ref lapackint nrhs, float *d, float *e, float *b, ref lapackint ldb, ref lapackint info); 1316 void dpttrs_(ref lapackint n, ref lapackint nrhs, double *d, double *e, double *b, ref lapackint ldb, ref lapackint info); 1317 void cpttrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *d, _cfloat *e, _cfloat *b, ref lapackint ldb, ref lapackint info); 1318 void zpttrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *d, _cdouble *e, _cdouble *b, ref lapackint ldb, ref lapackint info); 1319 1320 /// Reduces a real symmetric-definite banded generalized eigenproblem 1321 /// A x = lambda B x to standard form, where B has been factorized by 1322 /// SPBSTF (Crawford's algorithm). 1323 void ssbgst_(ref char vect, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, float *ab, ref lapackint ldab, float *bb, ref lapackint ldbb, float *x, ref lapackint ldx, float *work, ref lapackint info); 1324 void dsbgst_(ref char vect, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, double *ab, ref lapackint ldab, double *bb, ref lapackint ldbb, double *x, ref lapackint ldx, double *work, ref lapackint info); 1325 1326 /// Reduces a complex Hermitian-definite banded generalized eigenproblem 1327 /// A x = lambda B x to standard form, where B has been factorized by 1328 /// CPBSTF (Crawford's algorithm). 1329 void chbgst_(ref char vect, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cfloat *ab, ref lapackint ldab, _cfloat *bb, ref lapackint ldbb, _cfloat *x, ref lapackint ldx, _cfloat *work, float *rwork, ref lapackint info); 1330 void zhbgst_(ref char vect, ref char uplo, ref lapackint n, lapackint *ka, lapackint *kb, _cdouble *ab, ref lapackint ldab, _cdouble *bb, ref lapackint ldbb, _cdouble *x, ref lapackint ldx, _cdouble *work, double *rwork, ref lapackint info); 1331 1332 /// Reduces a symmetric band matrix to real symmetric 1333 /// tridiagonal form by an orthogonal similarity transformation. 1334 void ssbtrd_(ref char vect, ref char uplo, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, float *d, float *e, float *q, ref lapackint ldq, float *work, ref lapackint info); 1335 void dsbtrd_(ref char vect, ref char uplo, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, double *d, double *e, double *q, ref lapackint ldq, double *work, ref lapackint info); 1336 1337 /// Reduces a Hermitian band matrix to real symmetric 1338 /// tridiagonal form by a unitary similarity transformation. 1339 void chbtrd_(ref char vect, ref char uplo, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, float *d, float *e, _cfloat *q, ref lapackint ldq, _cfloat *work, ref lapackint info); 1340 void zhbtrd_(ref char vect, ref char uplo, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, double *d, double *e, _cdouble *q, ref lapackint ldq, _cdouble *work, ref lapackint info); 1341 1342 /// Estimates the reciprocal of the condition number of a 1343 /// real symmetric indefinite 1344 /// matrix in packed storage, using the factorization computed 1345 /// by SSPTRF. 1346 void sspcon_(ref char uplo, ref lapackint n, float *ap, lapackint *ipiv, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1347 void dspcon_(ref char uplo, ref lapackint n, double *ap, lapackint *ipiv, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1348 void cspcon_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, ref lapackint info); 1349 void zspcon_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, ref lapackint info); 1350 1351 /// Estimates the reciprocal of the condition number of a 1352 /// complex Hermitian indefinite 1353 /// matrix in packed storage, using the factorization computed 1354 /// by CHPTRF. 1355 void chpcon_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, ref lapackint info); 1356 void zhpcon_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, ref lapackint info); 1357 1358 /// Reduces a symmetric-definite generalized eigenproblem 1359 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 1360 /// form, where A and B are held in packed storage, and B has been 1361 /// factorized by SPPTRF. 1362 void sspgst_(lapackint *itype, ref char uplo, ref lapackint n, float *ap, float *bp, ref lapackint info); 1363 void dspgst_(lapackint *itype, ref char uplo, ref lapackint n, double *ap, double *bp, ref lapackint info); 1364 1365 /// Reduces a Hermitian-definite generalized eigenproblem 1366 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 1367 /// form, where A and B are held in packed storage, and B has been 1368 /// factorized by CPPTRF. 1369 void chpgst_(lapackint *itype, ref char uplo, ref lapackint n, _cfloat *ap, _cfloat *bp, ref lapackint info); 1370 void zhpgst_(lapackint *itype, ref char uplo, ref lapackint n, _cdouble *ap, _cdouble *bp, ref lapackint info); 1371 1372 /// Improves the computed solution to a real 1373 /// symmetric indefinite system of linear equations 1374 /// AX=B, where A is held in packed storage, and provides forward 1375 /// and backward error bounds for the solution. 1376 void ssprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, float *afp, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1377 void dsprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, double *afp, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1378 void csprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1379 void zsprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1380 1381 /// Improves the computed solution to a complex 1382 /// Hermitian indefinite system of linear equations 1383 /// AX=B, where A is held in packed storage, and provides forward 1384 /// and backward error bounds for the solution. 1385 void chprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *afp, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1386 void zhprfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *afp, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1387 1388 /// Reduces a symmetric matrix in packed storage to real 1389 /// symmetric tridiagonal form by an orthogonal similarity 1390 /// transformation. 1391 void ssptrd_(ref char uplo, ref lapackint n, float *ap, float *d, float *e, float *tau, ref lapackint info); 1392 void dsptrd_(ref char uplo, ref lapackint n, double *ap, double *d, double *e, double *tau, ref lapackint info); 1393 1394 /// Reduces a Hermitian matrix in packed storage to real 1395 /// symmetric tridiagonal form by a unitary similarity 1396 /// transformation. 1397 void chptrd_(ref char uplo, ref lapackint n, _cfloat *ap, float *d, float *e, _cfloat *tau, ref lapackint info); 1398 void zhptrd_(ref char uplo, ref lapackint n, _cdouble *ap, double *d, double *e, _cdouble *tau, ref lapackint info); 1399 1400 /// Computes the factorization of a real 1401 /// symmetric-indefinite matrix in packed storage, 1402 /// using the diagonal pivoting method. 1403 void ssptrf_(ref char uplo, ref lapackint n, float *ap, lapackint *ipiv, ref lapackint info); 1404 void dsptrf_(ref char uplo, ref lapackint n, double *ap, lapackint *ipiv, ref lapackint info); 1405 void csptrf_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, ref lapackint info); 1406 void zsptrf_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, ref lapackint info); 1407 1408 /// Computes the factorization of a complex 1409 /// Hermitian-indefinite matrix in packed storage, 1410 /// using the diagonal pivoting method. 1411 void chptrf_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, ref lapackint info); 1412 void zhptrf_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, ref lapackint info); 1413 1414 /// Computes the inverse of a real symmetric 1415 /// indefinite matrix in packed storage, using the factorization 1416 /// computed by SSPTRF. 1417 void ssptri_(ref char uplo, ref lapackint n, float *ap, lapackint *ipiv, float *work, ref lapackint info); 1418 void dsptri_(ref char uplo, ref lapackint n, double *ap, lapackint *ipiv, double *work, ref lapackint info); 1419 void csptri_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, _cfloat *work, ref lapackint info); 1420 void zsptri_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, _cdouble *work, ref lapackint info); 1421 1422 /// Computes the inverse of a complex 1423 /// Hermitian indefinite matrix in packed storage, using the factorization 1424 /// computed by CHPTRF. 1425 void chptri_(ref char uplo, ref lapackint n, _cfloat *ap, lapackint *ipiv, _cfloat *work, ref lapackint info); 1426 void zhptri_(ref char uplo, ref lapackint n, _cdouble *ap, lapackint *ipiv, _cdouble *work, ref lapackint info); 1427 1428 /// Solves a real symmetric 1429 /// indefinite system of linear equations AX=B, where A is held 1430 /// in packed storage, using the factorization computed 1431 /// by SSPTRF. 1432 void ssptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *ap, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 1433 void dsptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *ap, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 1434 void csptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 1435 void zsptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 1436 1437 /// Solves a complex Hermitian 1438 /// indefinite system of linear equations AX=B, where A is held 1439 /// in packed storage, using the factorization computed 1440 /// by CHPTRF. 1441 void chptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *ap, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 1442 void zhptrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *ap, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 1443 1444 /// Computes selected eigenvalues of a real symmetric tridiagonal 1445 /// matrix by bisection. 1446 void sstebz_(ref char range, ref char order, ref lapackint n, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, float *d, float *e, ref lapackint m, ref lapackint nsplit, float *w, lapackint *iblock, lapackint *isplit, float *work, lapackint *iwork, ref lapackint info); 1447 void dstebz_(ref char range, ref char order, ref lapackint n, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, double *d, double *e, ref lapackint m, ref lapackint nsplit, double *w, lapackint *iblock, lapackint *isplit, double *work, lapackint *iwork, ref lapackint info); 1448 1449 /// Computes all eigenvalues and, optionally, eigenvectors of a 1450 /// symmetric tridiagonal matrix using the divide and conquer algorithm. 1451 void sstedc_(ref char compz, ref lapackint n, float *d, float *e, float *z, ref lapackint ldz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1452 void dstedc_(ref char compz, ref lapackint n, double *d, double *e, double *z, ref lapackint ldz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1453 void cstedc_(ref char compz, ref lapackint n, float *d, float *e, _cfloat *z, ref lapackint ldz, _cfloat *work, ref lapackint lwork, float *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1454 void zstedc_(ref char compz, ref lapackint n, double *d, double *e, _cdouble *z, ref lapackint ldz, _cdouble *work, ref lapackint lwork, double *rwork, lapackint *lrwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1455 1456 /// Computes selected eigenvalues and, optionally, eigenvectors of a 1457 /// symmetric tridiagonal matrix. The eigenvalues are computed by the 1458 /// dqds algorithm, while eigenvectors are computed from various "good" 1459 /// LDL^T representations (also known as Relatively Robust Representations.) 1460 void sstegr_(ref char jobz, ref char range, ref lapackint n, float *d, float *e, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, float *z, ref lapackint ldz, lapackint *isuppz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1461 void dstegr_(ref char jobz, ref char range, ref lapackint n, double *d, double *e, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, double *z, ref lapackint ldz, lapackint *isuppz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1462 void cstegr_(ref char jobz, ref char range, ref lapackint n, float *d, float *e, float *vl, float *vu, lapackint *il, lapackint *iu, ref float abstol, ref lapackint m, float *w, _cfloat *z, ref lapackint ldz, lapackint *isuppz, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1463 void zstegr_(ref char jobz, ref char range, ref lapackint n, double *d, double *e, double *vl, double *vu, lapackint *il, lapackint *iu, ref double abstol, ref lapackint m, double *w, _cdouble *z, ref lapackint ldz, lapackint *isuppz, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1464 1465 /// Computes selected eigenvectors of a real symmetric tridiagonal 1466 /// matrix by inverse iteration. 1467 void sstein_(ref lapackint n, float *d, float *e, ref lapackint m, float *w, lapackint *iblock, lapackint *isplit, float *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 1468 void dstein_(ref lapackint n, double *d, double *e, ref lapackint m, double *w, lapackint *iblock, lapackint *isplit, double *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 1469 void cstein_(ref lapackint n, float *d, float *e, ref lapackint m, float *w, lapackint *iblock, lapackint *isplit, _cfloat *z, ref lapackint ldz, float *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 1470 void zstein_(ref lapackint n, double *d, double *e, ref lapackint m, double *w, lapackint *iblock, lapackint *isplit, _cdouble *z, ref lapackint ldz, double *work, lapackint *iwork, lapackint *ifail, ref lapackint info); 1471 1472 /// Computes all eigenvalues and eigenvectors of a real symmetric 1473 /// tridiagonal matrix, using the implicit QL or QR algorithm. 1474 void ssteqr_(ref char compz, ref lapackint n, float *d, float *e, float *z, ref lapackint ldz, float *work, ref lapackint info); 1475 void dsteqr_(ref char compz, ref lapackint n, double *d, double *e, double *z, ref lapackint ldz, double *work, ref lapackint info); 1476 void csteqr_(ref char compz, ref lapackint n, float *d, float *e, _cfloat *z, ref lapackint ldz, float *work, ref lapackint info); 1477 void zsteqr_(ref char compz, ref lapackint n, double *d, double *e, _cdouble *z, ref lapackint ldz, double *work, ref lapackint info); 1478 1479 /// Computes all eigenvalues of a real symmetric tridiagonal matrix, 1480 /// using a root-free variant of the QL or QR algorithm. 1481 void ssterf_(ref lapackint n, float *d, float *e, ref lapackint info); 1482 void dsterf_(ref lapackint n, double *d, double *e, ref lapackint info); 1483 1484 /// Estimates the reciprocal of the condition number of a 1485 /// real symmetric indefinite matrix, 1486 /// using the factorization computed by SSYTRF. 1487 void ssycon_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, lapackint *ipiv, float *anorm, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1488 void dsycon_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, lapackint *ipiv, double *anorm, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1489 void csycon_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, ref lapackint info); 1490 void zsycon_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, ref lapackint info); 1491 1492 /// Estimates the reciprocal of the condition number of a 1493 /// complex Hermitian indefinite matrix, 1494 /// using the factorization computed by CHETRF. 1495 void checon_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, float *anorm, ref float rcond, _cfloat *work, ref lapackint info); 1496 void zhecon_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, double *anorm, ref double rcond, _cdouble *work, ref lapackint info); 1497 1498 /// Reduces a symmetric-definite generalized eigenproblem 1499 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 1500 /// form, where B has been factorized by SPOTRF. 1501 void ssygst_(lapackint *itype, ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, ref lapackint info); 1502 void dsygst_(lapackint *itype, ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, ref lapackint info); 1503 1504 /// Reduces a Hermitian-definite generalized eigenproblem 1505 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 1506 /// form, where B has been factorized by CPOTRF. 1507 void chegst_(lapackint *itype, ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, ref lapackint info); 1508 void zhegst_(lapackint *itype, ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, ref lapackint info); 1509 1510 /// Improves the computed solution to a real 1511 /// symmetric indefinite system of linear equations 1512 /// AX=B, and provides forward and backward error bounds for the 1513 /// solution. 1514 void ssyrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *af, ref lapackint ldaf, lapackint *ipiv, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1515 void dsyrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *af, ref lapackint ldaf, lapackint *ipiv, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1516 void csyrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1517 void zsyrfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1518 1519 /// Improves the computed solution to a complex 1520 /// Hermitian indefinite system of linear equations 1521 /// AX=B, and provides forward and backward error bounds for the 1522 /// solution. 1523 void cherfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *af, ref lapackint ldaf, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1524 void zherfs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *af, ref lapackint ldaf, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1525 1526 /// Reduces a symmetric matrix to real symmetric tridiagonal 1527 /// form by an orthogonal similarity transformation. 1528 void ssytrd_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, float *d, float *e, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1529 void dsytrd_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, double *d, double *e, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1530 1531 /// Reduces a Hermitian matrix to real symmetric tridiagonal 1532 /// form by an orthogonal/unitary similarity transformation. 1533 void chetrd_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, float *d, float *e, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1534 void zhetrd_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, double *d, double *e, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1535 1536 /// Computes the factorization of a real symmetric-indefinite matrix, 1537 /// using the diagonal pivoting method. 1538 void ssytrf_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, lapackint *ipiv, float *work, ref lapackint lwork, ref lapackint info); 1539 void dsytrf_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, lapackint *ipiv, double *work, ref lapackint lwork, ref lapackint info); 1540 void csytrf_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *work, ref lapackint lwork, ref lapackint info); 1541 void zsytrf_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *work, ref lapackint lwork, ref lapackint info); 1542 1543 /// Computes the factorization of a real symmetric-indefinite matrix, 1544 /// using the diagonal pivoting method. 1545 void ssytrf_rk_(ref const char uplo, ref const lapackint n, float *a, ref const lapackint lda, float* e, lapackint *ipiv, float *work, ref lapackint lwork, ref lapackint info); 1546 void dsytrf_rk_(ref const char uplo, ref const lapackint n, double *a, ref const lapackint lda, double* e, lapackint *ipiv, double *work, ref lapackint lwork, ref lapackint info); 1547 void csytrf_rk_(ref const char uplo, ref const lapackint n, _cfloat *a, ref const lapackint lda, _cfloat* e, lapackint *ipiv, _cfloat *work, ref lapackint lwork, ref lapackint info); 1548 void zsytrf_rk_(ref const char uplo, ref const lapackint n, _cdouble *a, ref const lapackint lda, _cdouble* e, lapackint *ipiv, _cdouble *work, ref lapackint lwork, ref lapackint info); 1549 1550 /// Computes the factorization of a complex Hermitian-indefinite matrix, 1551 /// using the diagonal pivoting method. 1552 void chetrf_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *work, ref lapackint lwork, ref lapackint info); 1553 void zhetrf_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *work, ref lapackint lwork, ref lapackint info); 1554 1555 /// Computes the inverse of a real symmetric indefinite matrix, 1556 /// using the factorization computed by SSYTRF. 1557 void ssytri_(ref char uplo, ref lapackint n, float *a, ref lapackint lda, lapackint *ipiv, float *work, ref lapackint info); 1558 void dsytri_(ref char uplo, ref lapackint n, double *a, ref lapackint lda, lapackint *ipiv, double *work, ref lapackint info); 1559 void csytri_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *work, ref lapackint info); 1560 void zsytri_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *work, ref lapackint info); 1561 1562 /// Computes the inverse of a complex Hermitian indefinite matrix, 1563 /// using the factorization computed by CHETRF. 1564 void chetri_(ref char uplo, ref lapackint n, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *work, ref lapackint info); 1565 void zhetri_(ref char uplo, ref lapackint n, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *work, ref lapackint info); 1566 1567 /// Solves a real symmetric indefinite system of linear equations AX=B, 1568 /// using the factorization computed by SSPTRF. 1569 void ssytrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, ref lapackint info); 1570 void dsytrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, ref lapackint info); 1571 void csytrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 1572 void zsytrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 1573 1574 /// Solves a real symmetric indefinite system of linear equations AX=B, 1575 /// using the factorization computed by SSPTRF_RK. 1576 void ssytrs_3_(ref const char uplo, ref const lapackint n, ref const lapackint nrhs, const(float) *a, ref const lapackint lda, const(float)* e, const(lapackint)* ipiv, float* b, ref const lapackint ldb, ref lapackint info); 1577 void dsytrs_3_(ref const char uplo, ref const lapackint n, ref const lapackint nrhs, const(double) *a, ref const lapackint lda, const(double)* e, const(lapackint)* ipiv, double* b, ref const lapackint ldb, ref lapackint info); 1578 void csytrs_3_(ref const char uplo, ref const lapackint n, ref const lapackint nrhs, const(_cfloat) *a, ref const lapackint lda, const(_cfloat)* e, const(lapackint)* ipiv, _cfloat* b, ref const lapackint ldb, ref lapackint info); 1579 void zsytrs_3_(ref const char uplo, ref const lapackint n, ref const lapackint nrhs, const(_cdouble) *a, ref const lapackint lda, const(_cdouble)* e, const(lapackint)* ipiv, _cdouble* b, ref const lapackint ldb, ref lapackint info); 1580 1581 /// Solves a complex Hermitian indefinite system of linear equations AX=B, 1582 /// using the factorization computed by CHPTRF. 1583 void chetrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, ref lapackint info); 1584 void zhetrs_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, ref lapackint info); 1585 1586 /// Estimates the reciprocal of the condition number of a triangular 1587 /// band matrix, in either the 1-norm or the infinity-norm. 1588 void stbcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, lapackint *kd, float *ab, ref lapackint ldab, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1589 void dtbcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, lapackint *kd, double *ab, ref lapackint ldab, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1590 void ctbcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, lapackint *kd, _cfloat *ab, ref lapackint ldab, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1591 void ztbcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, lapackint *kd, _cdouble *ab, ref lapackint ldab, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1592 1593 /// Provides forward and backward error bounds for the solution 1594 /// of a triangular banded system of linear equations AX=B, 1595 /// A**T X=B or A**H X=B. 1596 void stbrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1597 void dtbrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1598 void ctbrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1599 void ztbrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1600 1601 /// Solves a triangular banded system of linear equations AX=B, 1602 /// A**T X=B or A**H X=B. 1603 void stbtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, float *ab, ref lapackint ldab, float *b, ref lapackint ldb, ref lapackint info); 1604 void dtbtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, double *ab, ref lapackint ldab, double *b, ref lapackint ldb, ref lapackint info); 1605 void ctbtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cfloat *ab, ref lapackint ldab, _cfloat *b, ref lapackint ldb, ref lapackint info); 1606 void ztbtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, lapackint *kd, ref lapackint nrhs, _cdouble *ab, ref lapackint ldab, _cdouble *b, ref lapackint ldb, ref lapackint info); 1607 1608 /// Computes some or all of the right and/or left generalized eigenvectors 1609 /// of a pair of upper triangular matrices. 1610 void stgevc_(ref char side, ref char howmny, ref const lapackint select, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, float *work, ref lapackint info); 1611 void dtgevc_(ref char side, ref char howmny, ref const lapackint select, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, double *work, ref lapackint info); 1612 void ctgevc_(ref char side, ref char howmny, ref const lapackint select, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cfloat *work, float *rwork, ref lapackint info); 1613 void ztgevc_(ref char side, ref char howmny, ref const lapackint select, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cdouble *work, double *rwork, ref lapackint info); 1614 1615 /// Reorders the generalized real Schur decomposition of a real 1616 /// matrix pair (A,B) using an orthogonal equivalence transformation 1617 /// so that the diagonal block of (A,B) with row index IFST is moved 1618 /// to row ILST. 1619 void stgexc_(ref const lapackint wantq, ref const lapackint wantz, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *q, ref lapackint ldq, float *z, ref lapackint ldz, ref lapackint ifst, ref lapackint ilst, float *work, ref lapackint lwork, ref lapackint info); 1620 void dtgexc_(ref const lapackint wantq, ref const lapackint wantz, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *q, ref lapackint ldq, double *z, ref lapackint ldz, ref lapackint ifst, ref lapackint ilst, double *work, ref lapackint lwork, ref lapackint info); 1621 void ctgexc_(ref const lapackint wantq, ref const lapackint wantz, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *q, ref lapackint ldq, _cfloat *z, ref lapackint ldz, ref const lapackint ifst, ref const lapackint ilst, ref lapackint info); 1622 void ztgexc_(ref const lapackint wantq, ref const lapackint wantz, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *q, ref lapackint ldq, _cdouble *z, ref lapackint ldz, ref const lapackint ifst, ref const lapackint ilst, ref lapackint info); 1623 1624 /// Reorders the generalized real Schur decomposition of a real 1625 /// matrix pair (A, B) so that a selected cluster of eigenvalues 1626 /// appears in the leading diagonal blocks of the upper quasi-triangular 1627 /// matrix A and the upper triangular B. 1628 void stgsen_(ref const lapackint ijob, ref const lapackint wantq, ref const lapackint wantz, ref const lapackint select, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *alphar, float *alphai, float *betav, float *q, ref lapackint ldq, float *z, ref lapackint ldz, ref lapackint m, ref float pl, ref float pr, float *dif, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1629 void dtgsen_(ref const lapackint ijob, ref const lapackint wantq, ref const lapackint wantz, ref const lapackint select, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *alphar, double *alphai, double *betav, double *q, ref lapackint ldq, double *z, ref lapackint ldz, ref lapackint m, ref double pl, ref double pr, double *dif, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1630 void ctgsen_(ref const lapackint ijob, ref const lapackint wantq, ref const lapackint wantz, ref const lapackint select, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *alphav, _cfloat *betav, _cfloat *q, ref lapackint ldq, _cfloat *z, ref lapackint ldz, ref lapackint m, ref float pl, ref float pr, float *dif, _cfloat *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1631 void ztgsen_(ref const lapackint ijob, ref const lapackint wantq, ref const lapackint wantz, ref const lapackint select, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *alphav, _cdouble *betav, _cdouble *q, ref lapackint ldq, _cdouble *z, ref lapackint ldz, ref lapackint m, ref double pl, ref double pr, double *dif, _cdouble *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1632 1633 /// Computes the generalized singular value decomposition of two real 1634 /// upper triangular (or trapezoidal) matrices as output by SGGSVP. 1635 void stgsja_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, ref lapackint k, ref lapackint l, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *tola, float *tolb, float *alphav, float *betav, float *u, ref lapackint ldu, float *v, ref lapackint ldv, float *q, ref lapackint ldq, float *work, ref lapackint ncycle, ref lapackint info); 1636 void dtgsja_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, ref lapackint k, ref lapackint l, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *tola, double *tolb, double *alphav, double *betav, double *u, ref lapackint ldu, double *v, ref lapackint ldv, double *q, ref lapackint ldq, double *work, ref lapackint ncycle, ref lapackint info); 1637 void ctgsja_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, ref lapackint k, ref lapackint l, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, float *tola, float *tolb, float *alphav, float *betav, _cfloat *u, ref lapackint ldu, _cfloat *v, ref lapackint ldv, _cfloat *q, ref lapackint ldq, _cfloat *work, ref lapackint ncycle, ref lapackint info); 1638 void ztgsja_(ref char jobu, ref char jobv, ref char jobq, ref lapackint m, ref lapackint p, ref lapackint n, ref lapackint k, ref lapackint l, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, double *tola, double *tolb, double *alphav, double *betav, _cdouble *u, ref lapackint ldu, _cdouble *v, ref lapackint ldv, _cdouble *q, ref lapackint ldq, _cdouble *work, ref lapackint ncycle, ref lapackint info); 1639 1640 /// Estimates reciprocal condition numbers for specified 1641 /// eigenvalues and/or eigenvectors of a matrix pair (A, B) in 1642 /// generalized real Schur canonical form, as returned by SGGES. 1643 void stgsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, float *s, float *dif, ref lapackint mm, ref lapackint m, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1644 void dtgsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, double *s, double *dif, ref lapackint mm, ref lapackint m, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1645 void ctgsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, float *s, float *dif, ref lapackint mm, ref lapackint m, _cfloat *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1646 void ztgsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, double *s, double *dif, ref lapackint mm, ref lapackint m, _cdouble *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1647 1648 /// Solves the generalized Sylvester equation. 1649 void stgsyl_(ref char trans, lapackint *ijob, ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *c, ref lapackint ldc, float *d, ref lapackint ldd, float *e, ref lapackint lde, float *f, ref lapackint ldf, float *scale, float *dif, float *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1650 void dtgsyl_(ref char trans, lapackint *ijob, ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *c, ref lapackint ldc, double *d, ref lapackint ldd, double *e, ref lapackint lde, double *f, ref lapackint ldf, double *scale, double *dif, double *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1651 void ctgsyl_(ref char trans, lapackint *ijob, ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *c, ref lapackint ldc, _cfloat *d, ref lapackint ldd, _cfloat *e, ref lapackint lde, _cfloat *f, ref lapackint ldf, float *scale, float *dif, _cfloat *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1652 void ztgsyl_(ref char trans, lapackint *ijob, ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *c, ref lapackint ldc, _cdouble *d, ref lapackint ldd, _cdouble *e, ref lapackint lde, _cdouble *f, ref lapackint ldf, double *scale, double *dif, _cdouble *work, ref lapackint lwork, lapackint *iwork, ref lapackint info); 1653 1654 /// Estimates the reciprocal of the condition number of a triangular 1655 /// matrix in packed storage, in either the 1-norm or the infinity-norm. 1656 void stpcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, float *ap, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1657 void dtpcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, double *ap, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1658 void ctpcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, _cfloat *ap, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1659 void ztpcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, _cdouble *ap, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1660 1661 /// Provides forward and backward error bounds for the solution 1662 /// of a triangular system of linear equations AX=B, A**T X=B or 1663 /// A**H X=B, where A is held in packed storage. 1664 void stprfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, float *ap, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1665 void dtprfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, double *ap, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1666 void ctprfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1667 void ztprfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1668 1669 /// Computes the inverse of a triangular matrix in packed storage. 1670 void stptri_(ref char uplo, ref char diag, ref lapackint n, float *ap, ref lapackint info); 1671 void dtptri_(ref char uplo, ref char diag, ref lapackint n, double *ap, ref lapackint info); 1672 void ctptri_(ref char uplo, ref char diag, ref lapackint n, _cfloat *ap, ref lapackint info); 1673 void ztptri_(ref char uplo, ref char diag, ref lapackint n, _cdouble *ap, ref lapackint info); 1674 1675 /// Solves a triangular system of linear equations AX=B, 1676 /// A**T X=B or A**H X=B, where A is held in packed storage. 1677 void stptrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, float *ap, float *b, ref lapackint ldb, ref lapackint info); 1678 void dtptrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, double *ap, double *b, ref lapackint ldb, ref lapackint info); 1679 void ctptrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cfloat *ap, _cfloat *b, ref lapackint ldb, ref lapackint info); 1680 void ztptrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cdouble *ap, _cdouble *b, ref lapackint ldb, ref lapackint info); 1681 1682 /// Estimates the reciprocal of the condition number of a triangular 1683 /// matrix, in either the 1-norm or the infinity-norm. 1684 void strcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, float *a, ref lapackint lda, ref float rcond, float *work, lapackint *iwork, ref lapackint info); 1685 void dtrcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, double *a, ref lapackint lda, ref double rcond, double *work, lapackint *iwork, ref lapackint info); 1686 void ctrcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, _cfloat *a, ref lapackint lda, ref float rcond, _cfloat *work, float *rwork, ref lapackint info); 1687 void ztrcon_(ref char norm, ref char uplo, ref char diag, ref lapackint n, _cdouble *a, ref lapackint lda, ref double rcond, _cdouble *work, double *rwork, ref lapackint info); 1688 1689 /// Computes some or all of the right and/or left eigenvectors of 1690 /// an upper quasi-triangular matrix. 1691 void strevc_(ref char side, ref char howmny, ref lapackint select, ref lapackint n, float *t, ref lapackint ldt, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, float *work, ref lapackint info); 1692 void dtrevc_(ref char side, ref char howmny, ref lapackint select, ref lapackint n, double *t, ref lapackint ldt, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, double *work, ref lapackint info); 1693 void ctrevc_(ref char side, ref char howmny, ref lapackint select, ref lapackint n, _cfloat *t, ref lapackint ldt, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cfloat *work, float *rwork, ref lapackint info); 1694 void ztrevc_(ref char side, ref char howmny, ref lapackint select, ref lapackint n, _cdouble *t, ref lapackint ldt, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, ref lapackint mm, ref lapackint m, _cdouble *work, double *rwork, ref lapackint info); 1695 1696 /// Reorders the Schur factorization of a matrix by an orthogonal 1697 /// similarity transformation. 1698 void strexc_(ref char compq, ref lapackint n, float *t, ref lapackint ldt, float *q, ref lapackint ldq, lapackint *ifst, lapackint *ilst, float *work, ref lapackint info); 1699 void dtrexc_(ref char compq, ref lapackint n, double *t, ref lapackint ldt, double *q, ref lapackint ldq, lapackint *ifst, lapackint *ilst, double *work, ref lapackint info); 1700 void ctrexc_(ref char compq, ref lapackint n, _cfloat *t, ref lapackint ldt, _cfloat *q, ref lapackint ldq, lapackint *ifst, lapackint *ilst, ref lapackint info); 1701 void ztrexc_(ref char compq, ref lapackint n, _cdouble *t, ref lapackint ldt, _cdouble *q, ref lapackint ldq, lapackint *ifst, lapackint *ilst, ref lapackint info); 1702 1703 /// Provides forward and backward error bounds for the solution 1704 /// of a triangular system of linear equations A X=B, A**T X=B or 1705 /// A**H X=B. 1706 void strrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *x, ref lapackint ldx, float *ferr, float *berr, float *work, lapackint *iwork, ref lapackint info); 1707 void dtrrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *x, ref lapackint ldx, double *ferr, double *berr, double *work, lapackint *iwork, ref lapackint info); 1708 void ctrrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *x, ref lapackint ldx, float *ferr, float *berr, _cfloat *work, float *rwork, ref lapackint info); 1709 void ztrrfs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *x, ref lapackint ldx, double *ferr, double *berr, _cdouble *work, double *rwork, ref lapackint info); 1710 1711 /// Reorders the Schur factorization of a matrix in order to find 1712 /// an orthonormal basis of a right invariant subspace corresponding 1713 /// to selected eigenvalues, and returns reciprocal condition numbers 1714 /// (sensitivities) of the average of the cluster of eigenvalues 1715 /// and of the invariant subspace. 1716 void strsen_(ref char job, ref char compq, ref const lapackint select, ref lapackint n, float *t, ref lapackint ldt, float *q, ref lapackint ldq, float *wr, float *wi, ref lapackint m, ref float s, ref float sep, float *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1717 void dtrsen_(ref char job, ref char compq, ref const lapackint select, ref lapackint n, double *t, ref lapackint ldt, double *q, ref lapackint ldq, double *wr, double *wi, ref lapackint m, ref double s, ref double sep, double *work, ref lapackint lwork, lapackint *iwork, lapackint *liwork, ref lapackint info); 1718 void ctrsen_(ref char job, ref char compq, ref const lapackint select, ref lapackint n, _cfloat *t, ref lapackint ldt, _cfloat *q, ref lapackint ldq, _cfloat *w, ref lapackint m, ref float s, ref float sep, _cfloat *work, ref lapackint lwork, ref lapackint info); 1719 void ztrsen_(ref char job, ref char compq, ref const lapackint select, ref lapackint n, _cdouble *t, ref lapackint ldt, _cdouble *q, ref lapackint ldq, _cdouble *w, ref lapackint m, ref double s, ref double sep, _cdouble *work, ref lapackint lwork, ref lapackint info); 1720 1721 /// Estimates the reciprocal condition numbers (sensitivities) 1722 /// of selected eigenvalues and eigenvectors of an upper 1723 /// quasi-triangular matrix. 1724 void strsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, float *t, ref lapackint ldt, float *vl, ref lapackint ldvl, float *vr, ref lapackint ldvr, float *s, float *sep, ref lapackint mm, ref lapackint m, float *work, ref lapackint ldwork, lapackint *iwork, ref lapackint info); 1725 void dtrsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, double *t, ref lapackint ldt, double *vl, ref lapackint ldvl, double *vr, ref lapackint ldvr, double *s, double *sep, ref lapackint mm, ref lapackint m, double *work, ref lapackint ldwork, lapackint *iwork, ref lapackint info); 1726 void ctrsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, _cfloat *t, ref lapackint ldt, _cfloat *vl, ref lapackint ldvl, _cfloat *vr, ref lapackint ldvr, float *s, float *sep, ref lapackint mm, ref lapackint m, _cfloat *work, ref lapackint ldwork, float *rwork, ref lapackint info); 1727 void ztrsna_(ref char job, ref char howmny, ref const lapackint select, ref lapackint n, _cdouble *t, ref lapackint ldt, _cdouble *vl, ref lapackint ldvl, _cdouble *vr, ref lapackint ldvr, double *s, double *sep, ref lapackint mm, ref lapackint m, _cdouble *work, ref lapackint ldwork, double *rwork, ref lapackint info); 1728 1729 /// Solves the Sylvester matrix equation A X +/- X B=C where A 1730 /// and B are upper quasi-triangular, and may be transposed. 1731 void strsyl_(ref char trana, ref char tranb, lapackint *isgn, ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *b, ref lapackint ldb, float *c, ref lapackint ldc, float *scale, ref lapackint info); 1732 void dtrsyl_(ref char trana, ref char tranb, lapackint *isgn, ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *b, ref lapackint ldb, double *c, ref lapackint ldc, double *scale, ref lapackint info); 1733 void ctrsyl_(ref char trana, ref char tranb, lapackint *isgn, ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, _cfloat *c, ref lapackint ldc, float *scale, ref lapackint info); 1734 void ztrsyl_(ref char trana, ref char tranb, lapackint *isgn, ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, _cdouble *c, ref lapackint ldc, double *scale, ref lapackint info); 1735 1736 /// Computes the inverse of a triangular matrix. 1737 void strtri_(ref char uplo, ref char diag, ref lapackint n, float *a, ref lapackint lda, ref lapackint info); 1738 void dtrtri_(ref char uplo, ref char diag, ref lapackint n, double *a, ref lapackint lda, ref lapackint info); 1739 void ctrtri_(ref char uplo, ref char diag, ref lapackint n, _cfloat *a, ref lapackint lda, ref lapackint info); 1740 void ztrtri_(ref char uplo, ref char diag, ref lapackint n, _cdouble *a, ref lapackint lda, ref lapackint info); 1741 1742 /// Solves a triangular system of linear equations AX=B, 1743 /// A**T X=B or A**H X=B. 1744 void strtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, const float *a, ref lapackint lda, float *b, ref lapackint ldb, ref lapackint info); 1745 void dtrtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, const double *a, ref lapackint lda, double *b, ref lapackint ldb, ref lapackint info); 1746 void ctrtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, const _cfloat *a, ref lapackint lda, _cfloat *b, ref lapackint ldb, ref lapackint info); 1747 void ztrtrs_(ref char uplo, ref char trans, ref char diag, ref lapackint n, ref lapackint nrhs, const _cdouble *a, ref lapackint lda, _cdouble *b, ref lapackint ldb, ref lapackint info); 1748 1749 /// Computes an RQ factorization of an upper trapezoidal matrix. 1750 void stzrqf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, ref lapackint info); 1751 void dtzrqf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, ref lapackint info); 1752 void ctzrqf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, ref lapackint info); 1753 void ztzrqf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, ref lapackint info); 1754 1755 /// Computes an RZ factorization of an upper trapezoidal matrix 1756 /// (blocked version of STZRQF). 1757 void stzrzf_(ref lapackint m, ref lapackint n, float *a, ref lapackint lda, float *tau, float *work, ref lapackint lwork, ref lapackint info); 1758 void dtzrzf_(ref lapackint m, ref lapackint n, double *a, ref lapackint lda, double *tau, double *work, ref lapackint lwork, ref lapackint info); 1759 void ctzrzf_(ref lapackint m, ref lapackint n, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *work, ref lapackint lwork, ref lapackint info); 1760 void ztzrzf_(ref lapackint m, ref lapackint n, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *work, ref lapackint lwork, ref lapackint info); 1761 1762 1763 /// Multiplies a general matrix by the unitary 1764 /// transformation matrix from a reduction to tridiagonal form 1765 /// determined by CHPTRD. 1766 void cupmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, _cfloat *ap, _cfloat *tau, _cfloat *c, ref lapackint ldc, _cfloat *work, ref lapackint info); 1767 void zupmtr_(ref char side, ref char uplo, ref char trans, ref lapackint m, ref lapackint n, _cdouble *ap, _cdouble *tau, _cdouble *c, ref lapackint ldc, _cdouble *work, ref lapackint info); 1768 1769 /// Solves a real symmetric indefinite system of linear equations AX=B, 1770 /// using the factorization computed by SYTRF. 1771 void ssytrs2_(ref char uplo, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, lapackint *ipiv, float *b, ref lapackint ldb, float *work, ref lapackint info); 1772 void dsytrs2_(ref char uplo, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, lapackint *ipiv, double *b, ref lapackint ldb, double *work, ref lapackint info); 1773 void csytrs2_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, lapackint *ipiv, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint info); 1774 void zsytrs2_(ref char uplo, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, lapackint *ipiv, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint info); 1775 1776 ///Solve the least squares problem 1777 ///using the QR factorization computed by GEQRF 1778 void sgeqrs_(ref lapackint m, ref lapackint n, ref lapackint nrhs, float *a, ref lapackint lda, float *tau, float *b, ref lapackint ldb, float *work, ref lapackint lwork, ref lapackint info); 1779 void dgeqrs_(ref lapackint m, ref lapackint n, ref lapackint nrhs, double *a, ref lapackint lda, double *tau, double *b, ref lapackint ldb, double *work, ref lapackint lwork, ref lapackint info); 1780 void cgeqrs_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cfloat *a, ref lapackint lda, _cfloat *tau, _cfloat *b, ref lapackint ldb, _cfloat *work, ref lapackint lwork, ref lapackint info); 1781 void zgeqrs_(ref lapackint m, ref lapackint n, ref lapackint nrhs, _cdouble *a, ref lapackint lda, _cdouble *tau, _cdouble *b, ref lapackint ldb, _cdouble *work, ref lapackint lwork, ref lapackint info); 1782 1783 //------------------------------------ 1784 // ----- MISC routines ----- 1785 //------------------------------------ 1786 1787 /// 1788 lapackint ilaenv_(ref const lapackint ispec, scope const(char)* name, scope const(char)* opts, ref const lapackint n1, ref const lapackint n2, ref const lapackint n3, ref const lapackint n4); 1789 /// 1790 lapackint ilaenv2stage_(ref const lapackint ispec, scope const(char)* name, scope const(char)* opts, ref const lapackint n1, ref const lapackint n2, ref const lapackint n3, ref const lapackint n4); 1791 /// 1792 void ilaenvset_(ref const lapackint ispec, scope const(char)* name, scope const(char)* opts, ref const lapackint n1, ref const lapackint n2, ref const lapackint n3, ref const lapackint n4, ref const lapackint nvalue, ref lapackint info); 1793 1794 /// 1795 float slamch_(char* cmach); 1796 double dlamch_(char* cmach); 1797 1798 version(CLAPACK_NETLIB) 1799 { 1800 /// 1801 lapack_float_ret_t second_(); 1802 /// 1803 double dsecnd_(); 1804 }