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