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.dlapack; 9 10 import scid.bindings.lapack.lapack; 11 import scid.core.fortran; 12 13 public import scid.bindings.lapack.lapack: f_int, f_float, f_double, f_cfloat, f_cdouble; 14 15 /* LAPACK routines */ 16 17 //-------------------------------------------------------- 18 // ---- SIMPLE and DIVIDE AND CONQUER DRIVER routines ---- 19 //--------------------------------------------------------- 20 21 /// Solves a general system of linear equations AX=B. 22 void gesv(f_int n, f_int nrhs, f_float *a, f_int lda, f_int *ipiv, f_float *b, f_int ldb, ref f_int info) { 23 sgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info); 24 } 25 void gesv(f_int n, f_int nrhs, f_double *a, f_int lda, f_int *ipiv, f_double *b, f_int ldb, ref f_int info) { 26 dgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info); 27 } 28 void gesv(f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 29 cgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info); 30 } 31 void gesv(f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 32 zgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info); 33 } 34 35 /// Solves a general banded system of linear equations AX=B. 36 void gbsv(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, ref f_int info) { 37 sgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info); 38 } 39 void gbsv(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, ref f_int info) { 40 dgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info); 41 } 42 void gbsv(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, ref f_int info) { 43 cgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info); 44 } 45 void gbsv(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, ref f_int info) { 46 zgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info); 47 } 48 49 /// Solves a general tridiagonal system of linear equations AX=B. 50 void gtsv(f_int n, f_int nrhs, f_float *dl, f_float *d, f_float *du, f_float *b, f_int ldb, ref f_int info) { 51 sgtsv_(&n, &nrhs, dl, d, du, b, &ldb, &info); 52 } 53 void gtsv(f_int n, f_int nrhs, f_double *dl, f_double *d, f_double *du, f_double *b, f_int ldb, ref f_int info) { 54 dgtsv_(&n, &nrhs, dl, d, du, b, &ldb, &info); 55 } 56 void gtsv(f_int n, f_int nrhs, f_cfloat *dl, f_cfloat *d, f_cfloat *du, f_cfloat *b, f_int ldb, ref f_int info) { 57 cgtsv_(&n, &nrhs, dl, d, du, b, &ldb, &info); 58 } 59 void gtsv(f_int n, f_int nrhs, f_cdouble *dl, f_cdouble *d, f_cdouble *du, f_cdouble *b, f_int ldb, ref f_int info) { 60 zgtsv_(&n, &nrhs, dl, d, du, b, &ldb, &info); 61 } 62 63 /// Solves a symmetric positive definite system of linear 64 /// equations AX=B. 65 void posv(char uplo, f_int n, f_int nrhs, f_float *a, f_int lda, f_float *b, f_int ldb, ref f_int info) { 66 sposv_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 67 } 68 void posv(char uplo, f_int n, f_int nrhs, f_double *a, f_int lda, f_double *b, f_int ldb, ref f_int info) { 69 dposv_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 70 } 71 void posv(char uplo, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_cfloat *b, f_int ldb, ref f_int info) { 72 cposv_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 73 } 74 void posv(char uplo, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_cdouble *b, f_int ldb, ref f_int info) { 75 zposv_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 76 } 77 78 /// Solves a symmetric positive definite system of linear 79 /// equations AX=B, where A is held in packed storage. 80 void ppsv(char uplo, f_int n, f_int nrhs, f_float *ap, f_float *b, f_int ldb, ref f_int info) { 81 sppsv_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 82 } 83 void ppsv(char uplo, f_int n, f_int nrhs, f_double *ap, f_double *b, f_int ldb, ref f_int info) { 84 dppsv_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 85 } 86 void ppsv(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_cfloat *b, f_int ldb, ref f_int info) { 87 cppsv_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 88 } 89 void ppsv(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_cdouble *b, f_int ldb, ref f_int info) { 90 zppsv_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 91 } 92 93 /// Solves a symmetric positive definite banded system 94 /// of linear equations AX=B. 95 void pbsv(char uplo, f_int n, f_int kd, f_int nrhs, f_float *ab, f_int ldab, f_float *b, f_int ldb, ref f_int info) { 96 spbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 97 } 98 void pbsv(char uplo, f_int n, f_int kd, f_int nrhs, f_double *ab, f_int ldab, f_double *b, f_int ldb, ref f_int info) { 99 dpbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 100 } 101 void pbsv(char uplo, f_int n, f_int kd, f_int nrhs, f_cfloat *ab, f_int ldab, f_cfloat *b, f_int ldb, ref f_int info) { 102 cpbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 103 } 104 void pbsv(char uplo, f_int n, f_int kd, f_int nrhs, f_cdouble *ab, f_int ldab, f_cdouble *b, f_int ldb, ref f_int info) { 105 zpbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 106 } 107 108 /// Solves a symmetric positive definite tridiagonal system 109 /// of linear equations AX=B. 110 void ptsv(f_int n, f_int nrhs, f_float *d, f_float *e, f_float *b, f_int ldb, ref f_int info) { 111 sptsv_(&n, &nrhs, d, e, b, &ldb, &info); 112 } 113 void ptsv(f_int n, f_int nrhs, f_double *d, f_double *e, f_double *b, f_int ldb, ref f_int info) { 114 dptsv_(&n, &nrhs, d, e, b, &ldb, &info); 115 } 116 void ptsv(f_int n, f_int nrhs, f_float *d, f_cfloat *e, f_cfloat *b, f_int ldb, ref f_int info) { 117 cptsv_(&n, &nrhs, d, e, b, &ldb, &info); 118 } 119 void ptsv(f_int n, f_int nrhs, f_double *d, f_cdouble *e, f_cdouble *b, f_int ldb, ref f_int info) { 120 zptsv_(&n, &nrhs, d, e, b, &ldb, &info); 121 } 122 123 124 /// Solves a real symmetric indefinite system of linear equations AX=B. 125 void sysv(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, ref f_int info) { 126 ssysv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 127 } 128 void sysv(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, ref f_int info) { 129 dsysv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 130 } 131 void sysv(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, ref f_int info) { 132 csysv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 133 } 134 void sysv(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, ref f_int info) { 135 zsysv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 136 } 137 138 /// Solves a complex Hermitian indefinite system of linear equations AX=B. 139 void hesv(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, ref f_int info) { 140 chesv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 141 } 142 void hesv(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, ref f_int info) { 143 zhesv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info, 1); 144 } 145 146 /// Solves a real symmetric indefinite system of linear equations AX=B, 147 /// where A is held in packed storage. 148 void spsv(char uplo, f_int n, f_int nrhs, f_float *ap, f_int *ipiv, f_float *b, f_int ldb, ref f_int info) { 149 sspsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 150 } 151 void spsv(char uplo, f_int n, f_int nrhs, f_double *ap, f_int *ipiv, f_double *b, f_int ldb, ref f_int info) { 152 dspsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 153 } 154 void spsv(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 155 cspsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 156 } 157 void spsv(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 158 zspsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 159 } 160 161 /// Solves a complex Hermitian indefinite system of linear equations AX=B, 162 /// where A is held in packed storage. 163 void hpsv(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 164 chpsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 165 } 166 void hpsv(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 167 zhpsv_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 168 } 169 170 /// Computes the least squares solution to an over-determined system 171 /// of linear equations, A X=B or A**H X=B, or the minimum norm 172 /// solution of an under-determined system, where A is a general 173 /// rectangular matrix of full rank, using a QR or LQ factorization 174 /// of A. 175 void gels(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, ref f_int info) { 176 sgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info, 1); 177 } 178 void gels(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, ref f_int info) { 179 dgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info, 1); 180 } 181 void gels(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, ref f_int info) { 182 cgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info, 1); 183 } 184 void gels(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, ref f_int info) { 185 zgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info, 1); 186 } 187 188 /// Computes the least squares solution to an over-determined system 189 /// of linear equations, A X=B or A**H X=B, or the minimum norm 190 /// solution of an under-determined system, using a divide and conquer 191 /// method, where A is a general rectangular matrix of full rank, 192 /// using a QR or LQ factorization of A. 193 void gelsd(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, out f_int rank, f_float *work, f_int lwork, f_int *iwork, ref f_int info) { 194 sgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, iwork, &info); 195 } 196 void gelsd(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, out f_int rank, f_double *work, f_int lwork, f_int *iwork, ref f_int info) { 197 dgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, iwork, &info); 198 } 199 void gelsd(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, out f_int rank, f_cfloat *work, f_int lwork, f_float *rwork, f_int *iwork, ref f_int info) { 200 cgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, iwork, &info); 201 } 202 void gelsd(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, out f_int rank, f_cdouble *work, f_int lwork, f_double *rwork, f_int *iwork, ref f_int info) { 203 zgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, iwork, &info); 204 } 205 206 /// Solves the LSE (Constrained Linear Least Squares Problem) using 207 /// the GRQ (Generalized RQ) factorization 208 void gglse(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, ref f_int info) { 209 sgglse_(&m, &n, &p, a, &lda, b, &ldb, c, d, x, work, &lwork, &info); 210 } 211 void gglse(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, ref f_int info) { 212 dgglse_(&m, &n, &p, a, &lda, b, &ldb, c, d, x, work, &lwork, &info); 213 } 214 void gglse(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, ref f_int info) { 215 cgglse_(&m, &n, &p, a, &lda, b, &ldb, c, d, x, work, &lwork, &info); 216 } 217 void gglse(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, ref f_int info) { 218 zgglse_(&m, &n, &p, a, &lda, b, &ldb, c, d, x, work, &lwork, &info); 219 } 220 221 /// Solves the GLM (Generalized Linear Regression Model) using 222 /// the GQR (Generalized QR) factorization 223 void ggglm(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, ref f_int info) { 224 sggglm_(&n, &m, &p, a, &lda, b, &ldb, d, x, y, work, &lwork, &info); 225 } 226 void ggglm(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, ref f_int info) { 227 dggglm_(&n, &m, &p, a, &lda, b, &ldb, d, x, y, work, &lwork, &info); 228 } 229 void ggglm(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, ref f_int info) { 230 cggglm_(&n, &m, &p, a, &lda, b, &ldb, d, x, y, work, &lwork, &info); 231 } 232 void ggglm(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, ref f_int info) { 233 zggglm_(&n, &m, &p, a, &lda, b, &ldb, d, x, y, work, &lwork, &info); 234 } 235 236 /// Computes all eigenvalues, and optionally, eigenvectors of a real 237 /// symmetric matrix. 238 void syev(char jobz, char uplo, f_int n, f_float *a, f_int lda, f_float *w, f_float *work, f_int lwork, ref f_int info) { 239 ssyev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info, 1, 1); 240 } 241 void syev(char jobz, char uplo, f_int n, f_double *a, f_int lda, f_double *w, f_double *work, f_int lwork, ref f_int info) { 242 dsyev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info, 1, 1); 243 } 244 245 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 246 /// Hermitian matrix. 247 void heev(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, ref f_int info) { 248 cheev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info, 1, 1); 249 } 250 void heev(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, ref f_int info) { 251 zheev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info, 1, 1); 252 } 253 254 255 /// Computes all eigenvalues, and optionally, eigenvectors of a real 256 /// symmetric matrix. If eigenvectors are desired, it uses a divide 257 /// and conquer algorithm. 258 void syevd(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, ref f_int info) { 259 ssyevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, iwork, &liwork, &info, 1, 1); 260 } 261 void syevd(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, ref f_int info) { 262 dsyevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, iwork, &liwork, &info, 1, 1); 263 } 264 265 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 266 /// Hermitian matrix. If eigenvectors are desired, it uses a divide 267 /// and conquer algorithm. 268 void heevd(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, ref f_int info) { 269 cheevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 270 } 271 void heevd(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, ref f_int info) { 272 zheevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 273 } 274 275 /// Computes all eigenvalues, and optionally, eigenvectors of a real 276 /// symmetric matrix in packed storage. 277 void spev(char jobz, char uplo, f_int n, f_float *ap, f_float *w, f_float *z, f_int ldz, f_float *work, ref f_int info) { 278 sspev_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &info, 1, 1); 279 } 280 void spev(char jobz, char uplo, f_int n, f_double *ap, f_double *w, f_double *z, f_int ldz, f_double *work, ref f_int info) { 281 dspev_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &info, 1, 1); 282 } 283 284 /// Computes selected eigenvalues, and optionally, eigenvectors of a complex 285 /// Hermitian matrix. Eigenvalues are computed by the dqds 286 /// algorithm, and eigenvectors are computed from various "good" LDL^T 287 /// representations (also known as Relatively Robust Representations). 288 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 289 /// Hermitian matrix in packed storage. 290 void hpev(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, ref f_int info) { 291 chpev_(&jobz, &uplo, &n, ap, w, z, &ldz, work, rwork, &info, 1, 1); 292 } 293 void hpev(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, ref f_int info) { 294 zhpev_(&jobz, &uplo, &n, ap, w, z, &ldz, work, rwork, &info, 1, 1); 295 } 296 297 /// Computes all eigenvalues, and optionally, eigenvectors of a real 298 /// symmetric matrix in packed storage. If eigenvectors are desired, 299 /// it uses a divide and conquer algorithm. 300 void spevd(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, ref f_int info) { 301 sspevd_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 302 } 303 void spevd(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, ref f_int info) { 304 dspevd_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 305 } 306 307 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 308 /// Hermitian matrix in packed storage. If eigenvectors are desired, it 309 /// uses a divide and conquer algorithm. 310 void hpevd(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, ref f_int info) { 311 chpevd_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 312 } 313 void hpevd(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, ref f_int info) { 314 zhpevd_(&jobz, &uplo, &n, ap, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 315 } 316 317 /// Computes all eigenvalues, and optionally, eigenvectors of a real 318 /// symmetric band matrix. 319 void sbev(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, ref f_int info) { 320 ssbev_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &info, 1, 1); 321 } 322 void sbev(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, ref f_int info) { 323 dsbev_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &info, 1, 1); 324 } 325 326 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 327 /// Hermitian band matrix. 328 void hbev(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, ref f_int info) { 329 chbev_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, rwork, &info, 1, 1); 330 } 331 void hbev(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, ref f_int info) { 332 zhbev_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, rwork, &info, 1, 1); 333 } 334 335 /// Computes all eigenvalues, and optionally, eigenvectors of a real 336 /// symmetric band matrix. If eigenvectors are desired, it uses a 337 /// divide and conquer algorithm. 338 void sbevd(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, ref f_int info) { 339 ssbevd_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 340 } 341 void sbevd(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, ref f_int info) { 342 dsbevd_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 343 } 344 345 /// Computes all eigenvalues and, optionally, eigenvectors of a complex 346 /// Hermitian band matrix. If eigenvectors are desired, it uses a divide 347 /// and conquer algorithm. 348 void hbevd(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, ref f_int info) { 349 chbevd_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 350 } 351 void hbevd(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, ref f_int info) { 352 zhbevd_(&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 353 } 354 355 /// Computes all eigenvalues, and optionally, eigenvectors of a real 356 /// symmetric tridiagonal matrix. 357 void stev(char jobz, f_int n, f_float *d, f_float *e, f_float *z, f_int ldz, f_float *work, ref f_int info) { 358 sstev_(&jobz, &n, d, e, z, &ldz, work, &info, 1); 359 } 360 void stev(char jobz, f_int n, f_double *d, f_double *e, f_double *z, f_int ldz, f_double *work, ref f_int info) { 361 dstev_(&jobz, &n, d, e, z, &ldz, work, &info, 1); 362 } 363 364 /// Computes all eigenvalues, and optionally, eigenvectors of a real 365 /// symmetric tridiagonal matrix. If eigenvectors are desired, it uses 366 /// a divide and conquer algorithm. 367 void stevd(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, ref f_int info) { 368 sstevd_(&jobz, &n, d, e, z, &ldz, work, &lwork, iwork, &liwork, &info, 1); 369 } 370 void stevd(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, ref f_int info) { 371 dstevd_(&jobz, &n, d, e, z, &ldz, work, &lwork, iwork, &liwork, &info, 1); 372 } 373 374 /// Computes the eigenvalues and Schur factorization of a general 375 /// matrix, and orders the factorization so that selected eigenvalues 376 /// are at the top left of the Schur form. 377 void gees(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, ref f_int info) { 378 sgees_(&jobvs, &sort, select, &n, a, &lda, &sdim, wr, wi, vs, &ldvs, work, &lwork, &bwork, &info, 1, 1); 379 } 380 void gees(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, ref f_int info) { 381 dgees_(&jobvs, &sort, select, &n, a, &lda, &sdim, wr, wi, vs, &ldvs, work, &lwork, &bwork, &info, 1, 1); 382 } 383 void gees(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, ref f_int info) { 384 cgees_(&jobvs, &sort, select, &n, a, &lda, &sdim, w, vs, &ldvs, work, &lwork, rwork, &bwork, &info, 1, 1); 385 } 386 void gees(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, ref f_int info) { 387 zgees_(&jobvs, &sort, select, &n, a, &lda, &sdim, w, vs, &ldvs, work, &lwork, rwork, &bwork, &info, 1, 1); 388 } 389 390 /// Computes the eigenvalues and left and right eigenvectors of 391 /// a general matrix. 392 void geev(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, ref f_int info) { 393 sgeev_(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 394 } 395 void geev(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, ref f_int info) { 396 dgeev_(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 397 } 398 void geev(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, ref f_int info) { 399 cgeev_(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 400 } 401 void geev(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, ref f_int info) { 402 zgeev_(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 403 } 404 405 /// Computes the singular value decomposition (SVD) of a general 406 /// rectangular matrix. 407 void gesvd(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, ref f_int info) { 408 sgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info, 1, 1); 409 } 410 void gesvd(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, ref f_int info) { 411 dgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info, 1, 1); 412 } 413 void gesvd(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, ref f_int info) { 414 cgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info, 1, 1); 415 } 416 void gesvd(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, ref f_int info) { 417 zgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info, 1, 1); 418 } 419 420 /// Computes the singular value decomposition (SVD) of a general 421 /// rectangular matrix using divide-and-conquer. 422 void gesdd(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, ref f_int info) { 423 sgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, iwork, &info, 1); 424 } 425 void gesdd(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, ref f_int info) { 426 dgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, iwork, &info, 1); 427 } 428 void gesdd(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, ref f_int info) { 429 cgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info, 1); 430 } 431 void gesdd(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, ref f_int info) { 432 zgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info, 1); 433 } 434 435 /// Computes all eigenvalues and the eigenvectors of a generalized 436 /// symmetric-definite generalized eigenproblem, 437 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 438 void sygv(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, ref f_int info) { 439 ssygv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info, 1, 1); 440 } 441 void sygv(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, ref f_int info) { 442 dsygv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info, 1, 1); 443 } 444 445 /// Computes all eigenvalues and the eigenvectors of a generalized 446 /// Hermitian-definite generalized eigenproblem, 447 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 448 void hegv(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, ref f_int info) { 449 chegv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info, 1, 1); 450 } 451 void hegv(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, ref f_int info) { 452 zhegv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info, 1, 1); 453 } 454 455 /// Computes all eigenvalues and the eigenvectors of a generalized 456 /// symmetric-definite generalized eigenproblem, 457 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 458 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 459 void sygvd(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, ref f_int info) { 460 ssygvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, iwork, &liwork, &info, 1, 1); 461 } 462 void sygvd(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, ref f_int info) { 463 dsygvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, iwork, &liwork, &info, 1, 1); 464 } 465 /// Computes all eigenvalues and the eigenvectors of a generalized 466 /// Hermitian-definite generalized eigenproblem, 467 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 468 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 469 void hegvd(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, ref f_int info) { 470 chegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 471 } 472 void hegvd(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, ref f_int info) { 473 zhegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 474 } 475 476 /// Computes all eigenvalues and eigenvectors of a generalized 477 /// symmetric-definite generalized eigenproblem, Ax= lambda 478 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 479 /// storage. 480 void spgv(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, ref f_int info) { 481 sspgv_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &info, 1, 1); 482 } 483 void spgv(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, ref f_int info) { 484 dspgv_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &info, 1, 1); 485 } 486 487 /// Computes all eigenvalues and eigenvectors of a generalized 488 /// Hermitian-definite generalized eigenproblem, Ax= lambda 489 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 490 /// storage. 491 void hpgv(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, ref f_int info) { 492 chpgv_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, rwork, &info, 1, 1); 493 } 494 void hpgv(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, ref f_int info) { 495 zhpgv_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, rwork, &info, 1, 1); 496 } 497 498 /// Computes all eigenvalues and eigenvectors of a generalized 499 /// symmetric-definite generalized eigenproblem, Ax= lambda 500 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 501 /// storage. 502 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 503 void spgvd(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, ref f_int info) { 504 sspgvd_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 505 } 506 void spgvd(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, ref f_int info) { 507 dspgvd_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 508 } 509 510 /// Computes all eigenvalues and eigenvectors of a generalized 511 /// Hermitian-definite generalized eigenproblem, Ax= lambda 512 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 513 /// storage. 514 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 515 void hpgvd(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, ref f_int info) { 516 chpgvd_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 517 } 518 void hpgvd(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, ref f_int info) { 519 zhpgvd_(&itype, &jobz, &uplo, &n, ap, bp, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 520 } 521 522 /// Computes all the eigenvalues, and optionally, the eigenvectors 523 /// of a real generalized symmetric-definite banded eigenproblem, of 524 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 525 /// and banded, and B is also positive definite. 526 void sbgv(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, ref f_int info) { 527 ssbgv_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &info, 1, 1); 528 } 529 void sbgv(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, ref f_int info) { 530 dsbgv_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &info, 1, 1); 531 } 532 533 /// Computes all the eigenvalues, and optionally, the eigenvectors 534 /// of a complex generalized Hermitian-definite banded eigenproblem, of 535 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 536 /// and banded, and B is also positive definite. 537 void hbgv(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, ref f_int info) { 538 chbgv_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, rwork, &info, 1, 1); 539 } 540 void hbgv(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, ref f_int info) { 541 zhbgv_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, rwork, &info, 1, 1); 542 } 543 544 /// Computes all the eigenvalues, and optionally, the eigenvectors 545 /// of a real generalized symmetric-definite banded eigenproblem, of 546 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 547 /// and banded, and B is also positive definite. 548 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 549 void sbgvd(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, ref f_int info) { 550 ssbgvd_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 551 } 552 void sbgvd(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, ref f_int info) { 553 dsbgvd_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &lwork, iwork, &liwork, &info, 1, 1); 554 } 555 556 /// Computes all the eigenvalues, and optionally, the eigenvectors 557 /// of a complex generalized Hermitian-definite banded eigenproblem, of 558 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 559 /// and banded, and B is also positive definite. 560 /// If eigenvectors are desired, it uses a divide and conquer algorithm. 561 void hbgvd(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, ref f_int info) { 562 chbgvd_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 563 } 564 void hbgvd(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, ref f_int info) { 565 zhbgvd_(&jobz, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1); 566 } 567 568 /// Computes the generalized eigenvalues, Schur form, and left and/or 569 /// right Schur vectors for a pair of nonsymmetric matrices 570 void gegs(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, ref f_int info) { 571 sgegs_(&jobvsl, &jobvsr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, &info, 1, 1); 572 } 573 void gegs(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, ref f_int info) { 574 dgegs_(&jobvsl, &jobvsr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, &info, 1, 1); 575 } 576 void gegs(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, ref f_int info) { 577 cgegs_(&jobvsl, &jobvsr, &n, a, &lda, b, &ldb, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, rwork, &info, 1, 1); 578 } 579 void gegs(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, ref f_int info) { 580 zgegs_(&jobvsl, &jobvsr, &n, a, &lda, b, &ldb, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, rwork, &info, 1, 1); 581 } 582 583 /// Computes the generalized eigenvalues, Schur form, and left and/or 584 /// right Schur vectors for a pair of nonsymmetric matrices 585 void gges(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, ref f_int info) { 586 sgges_(&jobvsl, &jobvsr, &sort, selctg, &n, a, &lda, b, &ldb, &sdim, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, &bwork, &info, 1, 1, 1); 587 } 588 void gges(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, ref f_int info) { 589 dgges_(&jobvsl, &jobvsr, &sort, delctg, &n, a, &lda, b, &ldb, &sdim, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, &bwork, &info, 1, 1, 1); 590 } 591 void gges(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, ref f_int info) { 592 cgges_(&jobvsl, &jobvsr, &sort, selctg, &n, a, &lda, b, &ldb, &sdim, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, rwork, &bwork, &info, 1, 1, 1); 593 } 594 void gges(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, ref f_int info) { 595 zgges_(&jobvsl, &jobvsr, &sort, delctg, &n, a, &lda, b, &ldb, &sdim, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, work, &lwork, rwork, &bwork, &info, 1, 1, 1); 596 } 597 598 /// Computes the generalized eigenvalues, and left and/or right 599 /// generalized eigenvectors for a pair of nonsymmetric matrices 600 void gegv(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, ref f_int info) { 601 sgegv_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 602 } 603 void gegv(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, ref f_int info) { 604 dgegv_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 605 } 606 void gegv(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, ref f_int info) { 607 cgegv_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, betav, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 608 } 609 void gegv(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, ref f_int info) { 610 zgegv_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, betav, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 611 } 612 613 /// Computes the generalized eigenvalues, and left and/or right 614 /// generalized eigenvectors for a pair of nonsymmetric matrices 615 void ggev(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, ref f_int info) { 616 sggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 617 } 618 void ggev(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, ref f_int info) { 619 dggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, work, &lwork, &info, 1, 1); 620 } 621 void ggev(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, ref f_int info) { 622 cggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphav, betav, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 623 } 624 void ggev(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, ref f_int info) { 625 zggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphav, betav, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info, 1, 1); 626 } 627 628 /// Computes the Generalized Singular Value Decomposition 629 void ggsvd(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, ref f_int info) { 630 sggsvd_(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, a, &lda, b, &ldb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, iwork, &info, 1, 1, 1); 631 } 632 void ggsvd(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, ref f_int info) { 633 dggsvd_(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, a, &lda, b, &ldb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, iwork, &info, 1, 1, 1); 634 } 635 void ggsvd(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, ref f_int info) { 636 cggsvd_(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, a, &lda, b, &ldb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, rwork, iwork, &info, 1, 1, 1); 637 } 638 void ggsvd(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, ref f_int info) { 639 zggsvd_(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, a, &lda, b, &ldb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, rwork, iwork, &info, 1, 1, 1); 640 } 641 642 //----------------------------------------------------- 643 // ---- EXPERT and RRR DRIVER routines ---- 644 //----------------------------------------------------- 645 646 /// Solves a general system of linear equations AX=B, A**T X=B 647 /// or A**H X=B, and provides an estimate of the condition number 648 /// and error bounds on the solution. 649 void gesvx(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, ref f_int info) { 650 sgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 651 } 652 void gesvx(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, ref f_int info) { 653 dgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 654 } 655 void gesvx(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, ref f_int info) { 656 cgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 657 } 658 void gesvx(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, ref f_int info) { 659 zgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 660 } 661 662 /// Solves a general banded system of linear equations AX=B, 663 /// A**T X=B or A**H X=B, and provides an estimate of the condition 664 /// number and error bounds on the solution. 665 void gbsvx(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, ref f_int info) { 666 sgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 667 } 668 void gbsvx(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, ref f_int info) { 669 dgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 670 } 671 void gbsvx(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, ref f_int info) { 672 cgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 673 } 674 void gbsvx(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, ref f_int info) { 675 zgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 676 } 677 678 /// Solves a general tridiagonal system of linear equations AX=B, 679 /// A**T X=B or A**H X=B, and provides an estimate of the condition 680 /// number and error bounds on the solution. 681 void gtsvx(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, ref f_int info) { 682 sgtsvx_(&fact, &trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1); 683 } 684 void gtsvx(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, ref f_int info) { 685 dgtsvx_(&fact, &trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1); 686 } 687 void gtsvx(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, ref f_int info) { 688 cgtsvx_(&fact, &trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 689 } 690 void gtsvx(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, ref f_int info) { 691 zgtsvx_(&fact, &trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 692 } 693 694 /// Solves a symmetric positive definite system of linear 695 /// equations AX=B, and provides an estimate of the condition number 696 /// and error bounds on the solution. 697 void posvx(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, ref f_int info) { 698 sposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 699 } 700 void posvx(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, ref f_int info) { 701 dposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 702 } 703 void posvx(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, ref f_int info) { 704 cposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 705 } 706 void posvx(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, ref f_int info) { 707 zposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 708 } 709 710 /// Solves a symmetric positive definite system of linear 711 /// equations AX=B, where A is held in packed storage, and provides 712 /// an estimate of the condition number and error bounds on the 713 /// solution. 714 void ppsvx(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, ref f_int info) { 715 sppsvx_(&fact, &uplo, &n, &nrhs, ap, afp, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 716 } 717 void ppsvx(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, ref f_int info) { 718 dppsvx_(&fact, &uplo, &n, &nrhs, ap, afp, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 719 } 720 void ppsvx(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, ref f_int info) { 721 cppsvx_(&fact, &uplo, &n, &nrhs, ap, afp, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 722 } 723 void ppsvx(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, ref f_int info) { 724 zppsvx_(&fact, &uplo, &n, &nrhs, ap, afp, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 725 } 726 727 /// Solves a symmetric positive definite banded system 728 /// of linear equations AX=B, and provides an estimate of the condition 729 /// number and error bounds on the solution. 730 void pbsvx(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, ref f_int info) { 731 spbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 732 } 733 void pbsvx(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, ref f_int info) { 734 dpbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1, 1); 735 } 736 void pbsvx(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, ref f_int info) { 737 cpbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 738 } 739 void pbsvx(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, ref f_int info) { 740 zpbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1, 1); 741 } 742 743 /// Solves a symmetric positive definite tridiagonal 744 /// system of linear equations AX=B, and provides an estimate of 745 /// the condition number and error bounds on the solution. 746 void ptsvx(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, ref f_int info) { 747 sptsvx_(&fact, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &info, 1); 748 } 749 void ptsvx(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, ref f_int info) { 750 dptsvx_(&fact, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &info, 1); 751 } 752 void ptsvx(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, ref f_int info) { 753 cptsvx_(&fact, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1); 754 } 755 void ptsvx(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, ref f_int info) { 756 zptsvx_(&fact, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1); 757 } 758 759 /// Solves a real symmetric 760 /// indefinite system of linear equations AX=B, and provides an 761 /// estimate of the condition number and error bounds on the solution. 762 void sysvx(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, ref f_int info) { 763 ssysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, iwork, &info, 1, 1); 764 } 765 void sysvx(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, ref f_int info) { 766 dsysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, iwork, &info, 1, 1); 767 } 768 void sysvx(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, ref f_int info) { 769 csysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, rwork, &info, 1, 1); 770 } 771 void sysvx(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, ref f_int info) { 772 zsysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, rwork, &info, 1, 1); 773 } 774 775 /// Solves a complex Hermitian 776 /// indefinite system of linear equations AX=B, and provides an 777 /// estimate of the condition number and error bounds on the solution. 778 void hesvx(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, ref f_int info) { 779 chesvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, rwork, &info, 1, 1); 780 } 781 void hesvx(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, ref f_int info) { 782 zhesvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, &lwork, rwork, &info, 1, 1); 783 } 784 785 /// Solves a real symmetric 786 /// indefinite system of linear equations AX=B, where A is held 787 /// in packed storage, and provides an estimate of the condition 788 /// number and error bounds on the solution. 789 void spsvx(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, ref f_int info) { 790 sspsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1); 791 } 792 void spsvx(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, ref f_int info) { 793 dspsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info, 1, 1); 794 } 795 void spsvx(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, ref f_int info) { 796 cspsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 797 } 798 void spsvx(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, ref f_int info) { 799 zspsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 800 } 801 802 /// Solves a complex Hermitian 803 /// indefinite system of linear equations AX=B, where A is held 804 /// in packed storage, and provides an estimate of the condition 805 /// number and error bounds on the solution. 806 void hpsvx(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, ref f_int info) { 807 chpsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 808 } 809 void hpsvx(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, ref f_int info) { 810 zhpsvx_(&fact, &uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info, 1, 1); 811 } 812 813 /// Computes the minimum norm least squares solution to an over- 814 /// or under-determined system of linear equations A X=B, using a 815 /// complete orthogonal factorization of A. 816 void gelsx(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, out f_int rank, f_float *work, ref f_int info) { 817 sgelsx_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &info); 818 } 819 void gelsx(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, out f_int rank, f_double *work, ref f_int info) { 820 dgelsx_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &info); 821 } 822 void gelsx(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, out f_int rank, f_cfloat *work, f_float *rwork, ref f_int info) { 823 cgelsx_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, rwork, &info); 824 } 825 void gelsx(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, out f_int rank, f_cdouble *work, f_double *rwork, ref f_int info) { 826 zgelsx_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, rwork, &info); 827 } 828 829 /// Computes the minimum norm least squares solution to an over- 830 /// or under-determined system of linear equations A X=B, using a 831 /// complete orthogonal factorization of A. 832 void gelsy(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, out f_int rank, f_float *work, f_int lwork, ref f_int info) { 833 sgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &lwork, &info); 834 } 835 void gelsy(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, out f_int rank, f_double *work, f_int lwork, ref f_int info) { 836 dgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &lwork, &info); 837 } 838 void gelsy(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, out f_int rank, f_cfloat *work, f_int lwork, f_float *rwork, ref f_int info) { 839 cgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &lwork, rwork, &info); 840 } 841 void gelsy(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, out f_int rank, f_cdouble *work, f_int lwork, f_double *rwork, ref f_int info) { 842 zgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, &jpvt, &rcond, &rank, work, &lwork, rwork, &info); 843 } 844 845 /// Computes the minimum norm least squares solution to an over- 846 /// or under-determined system of linear equations A X=B, using 847 /// the singular value decomposition of A. 848 void gelss(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, out f_int rank, f_float *work, f_int lwork, ref f_int info) { 849 sgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info); 850 } 851 void gelss(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, out f_int rank, f_double *work, f_int lwork, ref f_int info) { 852 dgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info); 853 } 854 void gelss(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, out f_int rank, f_cfloat *work, f_int lwork, f_float *rwork, ref f_int info) { 855 cgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info); 856 } 857 void gelss(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, out f_int rank, f_cdouble *work, f_int lwork, f_double *rwork, ref f_int info) { 858 zgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info); 859 } 860 861 /// Computes selected eigenvalues and eigenvectors of a symmetric matrix. 862 void syevx(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, ref f_int info) { 863 ssyevx_(&jobz, &range, &uplo, &n, a, &lda, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, iwork, &ifail, &info, 1, 1, 1); 864 } 865 void syevx(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, ref f_int info) { 866 dsyevx_(&jobz, &range, &uplo, &n, a, &lda, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, iwork, &ifail, &info, 1, 1, 1); 867 } 868 869 /// Computes selected eigenvalues and eigenvectors of a Hermitian matrix. 870 void heevx(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, ref f_int info) { 871 cheevx_(&jobz, &range, &uplo, &n, a, &lda, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, rwork, iwork, &ifail, &info, 1, 1, 1); 872 } 873 void heevx(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, ref f_int info) { 874 zheevx_(&jobz, &range, &uplo, &n, a, &lda, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, rwork, iwork, &ifail, &info, 1, 1, 1); 875 } 876 877 /// Computes selected eigenvalues, and optionally, eigenvectors of a real 878 /// symmetric matrix. Eigenvalues are computed by the dqds 879 /// algorithm, and eigenvectors are computed from various "good" LDL^T 880 /// representations (also known as Relatively Robust Representations). 881 void syevr(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, out 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, ref f_int info) { 882 ssyevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, isuppz, work, &lwork, iwork, &liwork, &info, 1, 1, 1); 883 } 884 void syevr(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, out 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, ref f_int info) { 885 dsyevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, isuppz, work, &lwork, iwork, &liwork, &info, 1, 1, 1); 886 } 887 888 /// Computes selected eigenvalues, and optionally, eigenvectors of a complex 889 /// Hermitian matrix. Eigenvalues are computed by the dqds 890 /// algorithm, and eigenvectors are computed from various "good" LDL^T 891 /// representations (also known as Relatively Robust Representations). 892 void heevr(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, out 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, ref f_int info) { 893 cheevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, 894 isuppz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1, 1); 895 } 896 void heevr(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, out 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, ref f_int info) { 897 zheevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, isuppz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1, 1, 1); 898 } 899 900 901 /// Computes selected eigenvalues, and optionally, the eigenvectors of 902 /// a generalized symmetric-definite generalized eigenproblem, 903 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 904 void sygvx(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, ref f_int info) { 905 ssygvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, iwork, &ifail, &info, 1, 1, 1); 906 } 907 void sygvx(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, ref f_int info) { 908 dsygvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, iwork, &ifail, &info, 1, 1, 1); 909 } 910 911 /// Computes selected eigenvalues, and optionally, the eigenvectors of 912 /// a generalized Hermitian-definite generalized eigenproblem, 913 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x. 914 void hegvx(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, ref f_int info) { 915 chegvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, rwork, iwork, &ifail, &info, 1, 1, 1); 916 } 917 void hegvx(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, ref f_int info) { 918 zhegvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, &lwork, rwork, iwork, &ifail, &info, 1, 1, 1); 919 } 920 921 /// Computes selected eigenvalues and eigenvectors of a 922 /// symmetric matrix in packed storage. 923 void spevx(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, ref f_int info) { 924 sspevx_(&jobz, &range, &uplo, &n, ap, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 925 } 926 void spevx(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, ref f_int info) { 927 dspevx_(&jobz, &range, &uplo, &n, ap, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 928 } 929 930 /// Computes selected eigenvalues and eigenvectors of a 931 /// Hermitian matrix in packed storage. 932 void hpevx(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, ref f_int info) { 933 chpevx_(&jobz, &range, &uplo, &n, ap, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 934 } 935 void hpevx(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, ref f_int info) { 936 zhpevx_(&jobz, &range, &uplo, &n, ap, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 937 } 938 939 /// Computes selected eigenvalues, and optionally, eigenvectors of 940 /// a generalized symmetric-definite generalized eigenproblem, Ax= lambda 941 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 942 /// storage. 943 void spgvx(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, ref f_int info) { 944 sspgvx_(&itype, &jobz, &range, &uplo, &n, ap, bp, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 945 } 946 void spgvx(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, ref f_int info) { 947 dspgvx_(&itype, &jobz, &range, &uplo, &n, ap, bp, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 948 } 949 950 /// Computes selected eigenvalues, and optionally, the eigenvectors of 951 /// a generalized Hermitian-definite generalized eigenproblem, Ax= lambda 952 /// Bx, ABx= lambda x, or BAx= lambda x, where A and B are in packed 953 /// storage. 954 void hpgvx(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, ref f_int info) { 955 chpgvx_(&itype, &jobz, &range, &uplo, &n, ap, bp, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 956 } 957 void hpgvx(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, ref f_int info) { 958 zhpgvx_(&itype, &jobz, &range, &uplo, &n, ap, bp, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 959 } 960 961 /// Computes selected eigenvalues and eigenvectors of a 962 /// symmetric band matrix. 963 void sbevx(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, ref f_int info) { 964 ssbevx_(&jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 965 } 966 void sbevx(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, ref f_int info) { 967 dsbevx_(&jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 968 } 969 970 /// Computes selected eigenvalues and eigenvectors of a 971 /// Hermitian band matrix. 972 void hbevx(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, ref f_int info) { 973 chbevx_(&jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 974 } 975 void hbevx(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, ref f_int info) { 976 zhbevx_(&jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 977 } 978 979 /// Computes selected eigenvalues, and optionally, the eigenvectors 980 /// of a real generalized symmetric-definite banded eigenproblem, of 981 /// the form A*x=(lambda)*B*x. A and B are assumed to be symmetric 982 /// and banded, and B is also positive definite. 983 void sbgvx(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, ref f_int info) { 984 ssbgvx_(&jobz, &range, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 985 } 986 void sbgvx(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, ref f_int info) { 987 dsbgvx_(&jobz, &range, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1, 1); 988 } 989 990 /// Computes selected eigenvalues, and optionally, the eigenvectors 991 /// of a complex generalized Hermitian-definite banded eigenproblem, of 992 /// the form A*x=(lambda)*B*x. A and B are assumed to be Hermitian 993 /// and banded, and B is also positive definite. 994 void hbgvx(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, ref f_int info) { 995 chbgvx_(&jobz, &range, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 996 } 997 void hbgvx(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, ref f_int info) { 998 zhbgvx_(&jobz, &range, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, q, &ldq, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, rwork, iwork, &ifail, &info, 1, 1, 1); 999 } 1000 1001 /// Computes selected eigenvalues and eigenvectors of a real 1002 /// symmetric tridiagonal matrix. 1003 void stevx(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, ref f_int info) { 1004 sstevx_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1); 1005 } 1006 void stevx(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, ref f_int info) { 1007 dstevx_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, work, iwork, &ifail, &info, 1, 1); 1008 } 1009 1010 /// Computes selected eigenvalues, and optionally, eigenvectors of a real 1011 /// symmetric tridiagonal matrix. Eigenvalues are computed by the dqds 1012 /// algorithm, and eigenvectors are computed from various "good" LDL^T 1013 /// representations (also known as Relatively Robust Representations). 1014 void stevr(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, ref f_int info) { 1015 sstevr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 1016 } 1017 void stevr(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, ref f_int info) { 1018 dstevr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 1019 } 1020 1021 /// Computes the eigenvalues and Schur factorization of a general 1022 /// matrix, orders the factorization so that selected eigenvalues 1023 /// are at the top left of the Schur form, and computes reciprocal 1024 /// condition numbers for the average of the selected eigenvalues, 1025 /// and for the associated right invariant subspace. 1026 void geesx(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, ref f_int info) { 1027 sgeesx_(&jobvs, &sort, select, &sense, &n, a, &lda, &sdim, wr, wi, vs, &ldvs, rconde, rcondv, work, &lwork, iwork, &liwork, &bwork, &info, 1, 1, 1); 1028 } 1029 void geesx(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, ref f_int info) { 1030 dgeesx_(&jobvs, &sort, select, &sense, &n, a, &lda, &sdim, wr, wi, vs, &ldvs, rconde, rcondv, work, &lwork, iwork, &liwork, &bwork, &info, 1, 1, 1); 1031 } 1032 void geesx(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, ref f_int info) { 1033 cgeesx_(&jobvs, &sort, select, &sense, &n, a, &lda, &sdim, w, vs, &ldvs, rconde, rcondv, work, &lwork, rwork, &bwork, &info, 1, 1, 1); 1034 } 1035 void geesx(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, ref f_int info) { 1036 zgeesx_(&jobvs, &sort, select, &sense, &n, a, &lda, &sdim, w, vs, &ldvs, rconde, rcondv, work, &lwork, rwork, &bwork, &info, 1, 1, 1); 1037 } 1038 1039 /// Computes the generalized eigenvalues, the real Schur form, and, 1040 /// optionally, the left and/or right matrices of Schur vectors. 1041 void ggesx(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, ref f_int info) { 1042 sggesx_(&jobvsl, &jobvsr, &sort, selctg, &sense, &n, a, &lda, b, &ldb, &sdim, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, rconde, rcondv, work, &lwork, iwork, &liwork, &bwork, &info, 1, 1, 1, 1); 1043 } 1044 void ggesx(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, ref f_int info) { 1045 dggesx_(&jobvsl, &jobvsr, &sort, delctg, &sense, &n, a, &lda, b, &ldb, &sdim, alphar, alphai, betav, vsl, &ldvsl, vsr, &ldvsr, rconde, rcondv, work, &lwork, iwork, &liwork, &bwork, &info, 1, 1, 1, 1); 1046 } 1047 void ggesx(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, ref f_int info) { 1048 cggesx_(&jobvsl, &jobvsr, &sort, selctg, &sense, &n, a, &lda, b, &ldb, &sdim, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, rconde, rcondv, work, &lwork, rwork, iwork, &liwork, &bwork, &info, 1, 1, 1, 1); 1049 } 1050 void ggesx(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, ref f_int info) { 1051 zggesx_(&jobvsl, &jobvsr, &sort, delctg, &sense, &n, a, &lda, b, &ldb, &sdim, alphav, betav, vsl, &ldvsl, vsr, &ldvsr, rconde, rcondv, work, &lwork, rwork, iwork, &liwork, &bwork, &info, 1, 1, 1, 1); 1052 } 1053 1054 /// Computes the eigenvalues and left and right eigenvectors of 1055 /// a general matrix, with preliminary balancing of the matrix, 1056 /// and computes reciprocal condition numbers for the eigenvalues 1057 /// and right eigenvectors. 1058 void geevx(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, ref f_int info) { 1059 sgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, abnrm, rconde, rcondv, work, &lwork, iwork, &info, 1, 1, 1, 1); 1060 } 1061 void geevx(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, ref f_int info) { 1062 dgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, abnrm, rconde, rcondv, work, &lwork, iwork, &info, 1, 1, 1, 1); 1063 } 1064 void geevx(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, ref f_int info) { 1065 cgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, abnrm, rconde, rcondv, work, &lwork, rwork, &info, 1, 1, 1, 1); 1066 } 1067 void geevx(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, ref f_int info) { 1068 zgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, abnrm, rconde, rcondv, work, &lwork, rwork, &info, 1, 1, 1, 1); 1069 } 1070 1071 /// Computes the generalized eigenvalues, and optionally, the left 1072 /// and/or right generalized eigenvectors. 1073 void ggevx(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, ref f_int info) { 1074 sggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, &ilo, &ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, &lwork, iwork, &bwork, &info, 1, 1, 1, 1); 1075 } 1076 void ggevx(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, ref f_int info) { 1077 dggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphar, alphai, betav, vl, &ldvl, vr, &ldvr, &ilo, &ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, &lwork, iwork, &bwork, &info, 1, 1, 1, 1); 1078 } 1079 void ggevx(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, ref f_int info) { 1080 cggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphav, betav, vl, &ldvl, vr, &ldvr, &ilo, &ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, &lwork, rwork, iwork, &bwork, &info, 1, 1, 1, 1); 1081 } 1082 void ggevx(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, ref f_int info) { 1083 zggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphav, betav, vl, &ldvl, vr, &ldvr, &ilo, &ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, &lwork, rwork, iwork, &bwork, &info, 1, 1, 1, 1); 1084 } 1085 1086 1087 1088 //---------------------------------------- 1089 // ---- COMPUTATIONAL routines ---- 1090 //---------------------------------------- 1091 1092 1093 /// Computes the singular value decomposition (SVD) of a real bidiagonal 1094 /// matrix, using a divide and conquer method. 1095 void bdsdc(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, ref f_int info) { 1096 sbdsdc_(&uplo, &compq, &n, d, e, u, &ldu, vt, &ldvt, q, &iq, work, iwork, &info, 1, 1); 1097 } 1098 void bdsdc(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, ref f_int info) { 1099 dbdsdc_(&uplo, &compq, &n, d, e, u, &ldu, vt, &ldvt, q, &iq, work, iwork, &info, 1, 1); 1100 } 1101 1102 /// Computes the singular value decomposition (SVD) of a real bidiagonal 1103 /// matrix, using the bidiagonal QR algorithm. 1104 void bdsqr(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, ref f_int info) { 1105 sbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info, 1); 1106 } 1107 void bdsqr(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, ref f_int info) { 1108 dbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info, 1); 1109 } 1110 void bdsqr(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, ref f_int info) { 1111 cbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, rwork, &info, 1); 1112 } 1113 void bdsqr(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, ref f_int info) { 1114 zbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, rwork, &info, 1); 1115 } 1116 1117 /// Computes the reciprocal condition numbers for the eigenvectors of a 1118 /// real symmetric or complex Hermitian matrix or for the left or right 1119 /// singular vectors of a general matrix. 1120 void disna(char job, f_int m, f_int n, f_float *d, f_float *sep, ref f_int info) { 1121 sdisna_(&job, &m, &n, d, sep, &info, 1); 1122 } 1123 void disna(char job, f_int m, f_int n, f_double *d, f_double *sep, ref f_int info) { 1124 ddisna_(&job, &m, &n, d, sep, &info, 1); 1125 } 1126 1127 /// Reduces a general band matrix to real upper bidiagonal form 1128 /// by an orthogonal transformation. 1129 void gbbrd(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, ref f_int info) { 1130 sgbbrd_(&vect, &m, &n, &ncc, &kl, &ku, ab, &ldab, d, e, q, &ldq, pt, &ldpt, c, &ldc, work, &info, 1); 1131 } 1132 void gbbrd(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, ref f_int info) { 1133 dgbbrd_(&vect, &m, &n, &ncc, &kl, &ku, ab, &ldab, d, e, q, &ldq, pt, &ldpt, c, &ldc, work, &info, 1); 1134 } 1135 void gbbrd(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, ref f_int info) { 1136 cgbbrd_(&vect, &m, &n, &ncc, &kl, &ku, ab, &ldab, d, e, q, &ldq, pt, &ldpt, c, &ldc, work, rwork, &info, 1); 1137 } 1138 void gbbrd(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, ref f_int info) { 1139 zgbbrd_(&vect, &m, &n, &ncc, &kl, &ku, ab, &ldab, d, e, q, &ldq, pt, &ldpt, c, &ldc, work, rwork, &info, 1); 1140 } 1141 1142 /// Estimates the reciprocal of the condition number of a general 1143 /// band matrix, in either the 1-norm or the infinity-norm, using 1144 /// the LU factorization computed by SGBTRF. 1145 void gbcon(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, ref f_int info) { 1146 sgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, anorm, &rcond, work, iwork, &info, 1); 1147 } 1148 void gbcon(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, ref f_int info) { 1149 dgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, anorm, &rcond, work, iwork, &info, 1); 1150 } 1151 void gbcon(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, ref f_int info) { 1152 cgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, anorm, &rcond, work, rwork, &info, 1); 1153 } 1154 void gbcon(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, ref f_int info) { 1155 zgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, anorm, &rcond, work, rwork, &info, 1); 1156 } 1157 1158 /// Computes row and column scalings to equilibrate a general band 1159 /// matrix and reduce its condition number. 1160 void gbequ(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, ref f_int info) { 1161 sgbequ_(&m, &n, &kl, &ku, ab, &ldab, r, c, rowcnd, colcnd, amax, &info); 1162 } 1163 void gbequ(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, ref f_int info) { 1164 dgbequ_(&m, &n, &kl, &ku, ab, &ldab, r, c, rowcnd, colcnd, amax, &info); 1165 } 1166 void gbequ(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, ref f_int info) { 1167 cgbequ_(&m, &n, &kl, &ku, ab, &ldab, r, c, rowcnd, colcnd, amax, &info); 1168 } 1169 void gbequ(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, ref f_int info) { 1170 zgbequ_(&m, &n, &kl, &ku, ab, &ldab, r, c, rowcnd, colcnd, amax, &info); 1171 } 1172 1173 /// Improves the computed solution to a general banded system of 1174 /// linear equations AX=B, A**T X=B or A**H X=B, and provides forward 1175 /// and backward error bounds for the solution. 1176 void gbrfs(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, ref f_int info) { 1177 sgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1178 } 1179 void gbrfs(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, ref f_int info) { 1180 dgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1181 } 1182 void gbrfs(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, ref f_int info) { 1183 cgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1184 } 1185 void gbrfs(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, ref f_int info) { 1186 zgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1187 } 1188 1189 /// Computes an LU factorization of a general band matrix, using 1190 /// partial pivoting with row interchanges. 1191 void gbtrf(f_int m, f_int n, f_int kl, f_int ku, f_float *ab, f_int ldab, f_int *ipiv, ref f_int info) { 1192 sgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info); 1193 } 1194 void gbtrf(f_int m, f_int n, f_int kl, f_int ku, f_double *ab, f_int ldab, f_int *ipiv, ref f_int info) { 1195 dgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info); 1196 } 1197 void gbtrf(f_int m, f_int n, f_int kl, f_int ku, f_cfloat *ab, f_int ldab, f_int *ipiv, ref f_int info) { 1198 cgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info); 1199 } 1200 void gbtrf(f_int m, f_int n, f_int kl, f_int ku, f_cdouble *ab, f_int ldab, f_int *ipiv, ref f_int info) { 1201 zgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info); 1202 } 1203 1204 /// Solves a general banded system of linear equations AX=B, 1205 /// A**T X=B or A**H X=B, using the LU factorization computed 1206 /// by SGBTRF. 1207 void gbtrs(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, ref f_int info) { 1208 sgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info, 1); 1209 } 1210 void gbtrs(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, ref f_int info) { 1211 dgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info, 1); 1212 } 1213 void gbtrs(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, ref f_int info) { 1214 cgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info, 1); 1215 } 1216 void gbtrs(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, ref f_int info) { 1217 zgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info, 1); 1218 } 1219 1220 /// Transforms eigenvectors of a balanced matrix to those of the 1221 /// original matrix supplied to SGEBAL. 1222 void gebak(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, ref f_int info) { 1223 sgebak_(&job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info, 1, 1); 1224 } 1225 void gebak(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, ref f_int info) { 1226 dgebak_(&job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info, 1, 1); 1227 } 1228 void gebak(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, ref f_int info) { 1229 cgebak_(&job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info, 1, 1); 1230 } 1231 void gebak(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, ref f_int info) { 1232 zgebak_(&job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info, 1, 1); 1233 } 1234 1235 /// Balances a general matrix in order to improve the accuracy 1236 /// of computed eigenvalues. 1237 void gebal(char job, f_int n, f_float *a, f_int lda, f_int ilo, f_int ihi, f_float *scale, ref f_int info) { 1238 sgebal_(&job, &n, a, &lda, &ilo, &ihi, scale, &info, 1); 1239 } 1240 void gebal(char job, f_int n, f_double *a, f_int lda, f_int ilo, f_int ihi, f_double *scale, ref f_int info) { 1241 dgebal_(&job, &n, a, &lda, &ilo, &ihi, scale, &info, 1); 1242 } 1243 void gebal(char job, f_int n, f_cfloat *a, f_int lda, f_int ilo, f_int ihi, f_float *scale, ref f_int info) { 1244 cgebal_(&job, &n, a, &lda, &ilo, &ihi, scale, &info, 1); 1245 } 1246 void gebal(char job, f_int n, f_cdouble *a, f_int lda, f_int ilo, f_int ihi, f_double *scale, ref f_int info) { 1247 zgebal_(&job, &n, a, &lda, &ilo, &ihi, scale, &info, 1); 1248 } 1249 1250 /// Reduces a general rectangular matrix to real bidiagonal form 1251 /// by an orthogonal transformation. 1252 void gebrd(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, ref f_int info) { 1253 sgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info); 1254 } 1255 void gebrd(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, ref f_int info) { 1256 dgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info); 1257 } 1258 void gebrd(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, ref f_int info) { 1259 cgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info); 1260 } 1261 void gebrd(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, ref f_int info) { 1262 zgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info); 1263 } 1264 1265 /// Estimates the reciprocal of the condition number of a general 1266 /// matrix, in either the 1-norm or the infinity-norm, using the 1267 /// LU factorization computed by SGETRF. 1268 void gecon(char norm, f_int n, f_float *a, f_int lda, f_float *anorm, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 1269 sgecon_(&norm, &n, a, &lda, anorm, &rcond, work, iwork, &info, 1); 1270 } 1271 void gecon(char norm, f_int n, f_double *a, f_int lda, f_double *anorm, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 1272 dgecon_(&norm, &n, a, &lda, anorm, &rcond, work, iwork, &info, 1); 1273 } 1274 void gecon(char norm, f_int n, f_cfloat *a, f_int lda, f_float *anorm, f_float rcond, f_cfloat *work, f_float *rwork, ref f_int info) { 1275 cgecon_(&norm, &n, a, &lda, anorm, &rcond, work, rwork, &info, 1); 1276 } 1277 void gecon(char norm, f_int n, f_cdouble *a, f_int lda, f_double *anorm, f_double rcond, f_cdouble *work, f_double *rwork, ref f_int info) { 1278 zgecon_(&norm, &n, a, &lda, anorm, &rcond, work, rwork, &info, 1); 1279 } 1280 1281 /// Computes row and column scalings to equilibrate a general 1282 /// rectangular matrix and reduce its condition number. 1283 void geequ(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, ref f_int info) { 1284 sgeequ_(&m, &n, a, &lda, r, c, rowcnd, colcnd, amax, &info); 1285 } 1286 void geequ(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, ref f_int info) { 1287 dgeequ_(&m, &n, a, &lda, r, c, rowcnd, colcnd, amax, &info); 1288 } 1289 void geequ(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, ref f_int info) { 1290 cgeequ_(&m, &n, a, &lda, r, c, rowcnd, colcnd, amax, &info); 1291 } 1292 void geequ(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, ref f_int info) { 1293 zgeequ_(&m, &n, a, &lda, r, c, rowcnd, colcnd, amax, &info); 1294 } 1295 1296 /// Reduces a general matrix to upper Hessenberg form by an 1297 /// orthogonal similarity transformation. 1298 void gehrd(f_int n, f_int ilo, f_int ihi, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1299 sgehrd_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1300 } 1301 void gehrd(f_int n, f_int ilo, f_int ihi, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1302 dgehrd_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1303 } 1304 void gehrd(f_int n, f_int ilo, f_int ihi, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1305 cgehrd_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1306 } 1307 void gehrd(f_int n, f_int ilo, f_int ihi, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1308 zgehrd_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1309 } 1310 1311 /// Computes an LQ factorization of a general rectangular matrix. 1312 void gelqf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1313 sgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1314 } 1315 void gelqf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1316 dgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1317 } 1318 void gelqf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1319 cgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1320 } 1321 void gelqf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1322 zgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1323 } 1324 1325 /// Computes a QL factorization of a general rectangular matrix. 1326 void geqlf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1327 sgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1328 } 1329 void geqlf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1330 dgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1331 } 1332 void geqlf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1333 cgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1334 } 1335 void geqlf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1336 zgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1337 } 1338 1339 /// Computes a QR factorization with column pivoting of a general 1340 /// rectangular matrix using Level 3 BLAS. 1341 void geqp3(f_int m, f_int n, f_float *a, f_int lda, f_int jpvt, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1342 sgeqp3_(&m, &n, a, &lda, &jpvt, tau, work, &lwork, &info); 1343 } 1344 void geqp3(f_int m, f_int n, f_double *a, f_int lda, f_int jpvt, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1345 dgeqp3_(&m, &n, a, &lda, &jpvt, tau, work, &lwork, &info); 1346 } 1347 void geqp3(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, ref f_int info) { 1348 cgeqp3_(&m, &n, a, &lda, &jpvt, tau, work, &lwork, rwork, &info); 1349 } 1350 void geqp3(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, ref f_int info) { 1351 zgeqp3_(&m, &n, a, &lda, &jpvt, tau, work, &lwork, rwork, &info); 1352 } 1353 1354 /// Computes a QR factorization with column pivoting of a general 1355 /// rectangular matrix. 1356 void geqpf(f_int m, f_int n, f_float *a, f_int lda, f_int jpvt, f_float *tau, f_float *work, ref f_int info) { 1357 sgeqpf_(&m, &n, a, &lda, &jpvt, tau, work, &info); 1358 } 1359 void geqpf(f_int m, f_int n, f_double *a, f_int lda, f_int jpvt, f_double *tau, f_double *work, ref f_int info) { 1360 dgeqpf_(&m, &n, a, &lda, &jpvt, tau, work, &info); 1361 } 1362 void geqpf(f_int m, f_int n, f_cfloat *a, f_int lda, f_int jpvt, f_cfloat *tau, f_cfloat *work, f_float *rwork, ref f_int info) { 1363 cgeqpf_(&m, &n, a, &lda, &jpvt, tau, work, rwork, &info); 1364 } 1365 void geqpf(f_int m, f_int n, f_cdouble *a, f_int lda, f_int jpvt, f_cdouble *tau, f_cdouble *work, f_double *rwork, ref f_int info) { 1366 zgeqpf_(&m, &n, a, &lda, &jpvt, tau, work, rwork, &info); 1367 } 1368 1369 /// Computes a QR factorization of a general rectangular matrix. 1370 void geqrf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1371 sgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1372 } 1373 void geqrf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1374 dgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1375 } 1376 void geqrf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1377 cgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1378 } 1379 void geqrf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1380 zgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1381 } 1382 1383 /// Improves the computed solution to a general system of linear 1384 /// equations AX=B, A**T X=B or A**H X=B, and provides forward and 1385 /// backward error bounds for the solution. 1386 void gerfs(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, ref f_int info) { 1387 sgerfs_(&trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1388 } 1389 void gerfs(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, ref f_int info) { 1390 dgerfs_(&trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1391 } 1392 void gerfs(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, ref f_int info) { 1393 cgerfs_(&trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1394 } 1395 void gerfs(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, ref f_int info) { 1396 zgerfs_(&trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1397 } 1398 1399 /// Computes an RQ factorization of a general rectangular matrix. 1400 void gerqf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1401 sgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1402 } 1403 void gerqf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1404 dgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1405 } 1406 void gerqf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1407 cgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1408 } 1409 void gerqf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1410 zgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info); 1411 } 1412 1413 /// Computes an LU factorization of a general matrix, using partial 1414 /// pivoting with row interchanges. 1415 void getrf(f_int m, f_int n, f_float *a, f_int lda, f_int *ipiv, ref f_int info) { 1416 sgetrf_(&m, &n, a, &lda, ipiv, &info); 1417 } 1418 void getrf(f_int m, f_int n, f_double *a, f_int lda, f_int *ipiv, ref f_int info) { 1419 dgetrf_(&m, &n, a, &lda, ipiv, &info); 1420 } 1421 void getrf(f_int m, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, ref f_int info) { 1422 cgetrf_(&m, &n, a, &lda, ipiv, &info); 1423 } 1424 void getrf(f_int m, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, ref f_int info) { 1425 zgetrf_(&m, &n, a, &lda, ipiv, &info); 1426 } 1427 1428 /// Computes the inverse of a general matrix, using the LU factorization 1429 /// computed by SGETRF. 1430 void getri(f_int n, f_float *a, f_int lda, f_int *ipiv, f_float *work, f_int lwork, ref f_int info) { 1431 sgetri_(&n, a, &lda, ipiv, work, &lwork, &info); 1432 } 1433 void getri(f_int n, f_double *a, f_int lda, f_int *ipiv, f_double *work, f_int lwork, ref f_int info) { 1434 dgetri_(&n, a, &lda, ipiv, work, &lwork, &info); 1435 } 1436 void getri(f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *work, f_int lwork, ref f_int info) { 1437 cgetri_(&n, a, &lda, ipiv, work, &lwork, &info); 1438 } 1439 void getri(f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *work, f_int lwork, ref f_int info) { 1440 zgetri_(&n, a, &lda, ipiv, work, &lwork, &info); 1441 } 1442 1443 /// Solves a general system of linear equations AX=B, A**T X=B 1444 /// or A**H X=B, using the LU factorization computed by SGETRF. 1445 void getrs(char trans, f_int n, f_int nrhs, f_float *a, f_int lda, f_int *ipiv, f_float *b, f_int ldb, ref f_int info) { 1446 sgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 1447 } 1448 void getrs(char trans, f_int n, f_int nrhs, f_double *a, f_int lda, f_int *ipiv, f_double *b, f_int ldb, ref f_int info) { 1449 dgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 1450 } 1451 void getrs(char trans, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 1452 cgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 1453 } 1454 void getrs(char trans, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 1455 zgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 1456 } 1457 1458 /// Forms the right or left eigenvectors of the generalized eigenvalue 1459 /// problem by backward transformation on the computed eigenvectors of 1460 /// the balanced pair of matrices output by SGGBAL. 1461 void ggbak(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, ref f_int info) { 1462 sggbak_(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv, &info, 1, 1); 1463 } 1464 void ggbak(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, ref f_int info) { 1465 dggbak_(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv, &info, 1, 1); 1466 } 1467 void ggbak(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, ref f_int info) { 1468 cggbak_(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv, &info, 1, 1); 1469 } 1470 void ggbak(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, ref f_int info) { 1471 zggbak_(&job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv, &info, 1, 1); 1472 } 1473 1474 /// Balances a pair of general real matrices for the generalized 1475 /// eigenvalue problem A x = lambda B x. 1476 void ggbal(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, ref f_int info) { 1477 sggbal_(&job, &n, a, &lda, b, &ldb, &ilo, &ihi, lscale, rscale, work, &info, 1); 1478 } 1479 void ggbal(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, ref f_int info) { 1480 dggbal_(&job, &n, a, &lda, b, &ldb, &ilo, &ihi, lscale, rscale, work, &info, 1); 1481 } 1482 void ggbal(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, ref f_int info) { 1483 cggbal_(&job, &n, a, &lda, b, &ldb, &ilo, &ihi, lscale, rscale, work, &info, 1); 1484 } 1485 void ggbal(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, ref f_int info) { 1486 zggbal_(&job, &n, a, &lda, b, &ldb, &ilo, &ihi, lscale, rscale, work, &info, 1); 1487 } 1488 1489 /// Reduces a pair of real matrices to generalized upper 1490 /// Hessenberg form using orthogonal transformations 1491 void gghrd(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, ref f_int info) { 1492 sgghrd_(&compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info, 1, 1); 1493 } 1494 void gghrd(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, ref f_int info) { 1495 dgghrd_(&compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info, 1, 1); 1496 } 1497 void gghrd(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, ref f_int info) { 1498 cgghrd_(&compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info, 1, 1); 1499 } 1500 void gghrd(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, ref f_int info) { 1501 zgghrd_(&compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info, 1, 1); 1502 } 1503 1504 /// Computes a generalized QR factorization of a pair of matrices. 1505 void ggqrf(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, ref f_int info) { 1506 sggqrf_(&n, &m, &p, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1507 } 1508 void ggqrf(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, ref f_int info) { 1509 dggqrf_(&n, &m, &p, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1510 } 1511 void ggqrf(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, ref f_int info) { 1512 cggqrf_(&n, &m, &p, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1513 } 1514 void ggqrf(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, ref f_int info) { 1515 zggqrf_(&n, &m, &p, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1516 } 1517 1518 /// Computes a generalized RQ factorization of a pair of matrices. 1519 void ggrqf(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, ref f_int info) { 1520 sggrqf_(&m, &p, &n, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1521 } 1522 void ggrqf(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, ref f_int info) { 1523 dggrqf_(&m, &p, &n, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1524 } 1525 void ggrqf(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, ref f_int info) { 1526 cggrqf_(&m, &p, &n, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1527 } 1528 void ggrqf(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, ref f_int info) { 1529 zggrqf_(&m, &p, &n, a, &lda, taua, b, &ldb, taub, work, &lwork, &info); 1530 } 1531 1532 /// Computes orthogonal matrices as a preprocessing step 1533 /// for computing the generalized singular value decomposition 1534 void ggsvp(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, ref f_int info) { 1535 sggsvp_(&jobu, &jobv, &jobq, &m, &p, &n, a, &lda, b, &ldb, tola, tolb, &k, &l, u, &ldu, v, &ldv, q, &ldq, iwork, tau, work, &info, 1, 1, 1); 1536 } 1537 void ggsvp(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, ref f_int info) { 1538 dggsvp_(&jobu, &jobv, &jobq, &m, &p, &n, a, &lda, b, &ldb, tola, tolb, &k, &l, u, &ldu, v, &ldv, q, &ldq, iwork, tau, work, &info, 1, 1, 1); 1539 } 1540 void ggsvp(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, ref f_int info) { 1541 cggsvp_(&jobu, &jobv, &jobq, &m, &p, &n, a, &lda, b, &ldb, tola, tolb, &k, &l, u, &ldu, v, &ldv, q, &ldq, iwork, rwork, tau, work, &info, 1, 1, 1); 1542 } 1543 void ggsvp(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, ref f_int info) { 1544 zggsvp_(&jobu, &jobv, &jobq, &m, &p, &n, a, &lda, b, &ldb, tola, tolb, &k, &l, u, &ldu, v, &ldv, q, &ldq, iwork, rwork, tau, work, &info, 1, 1, 1); 1545 } 1546 1547 /// Estimates the reciprocal of the condition number of a general 1548 /// tridiagonal matrix, in either the 1-norm or the infinity-norm, 1549 /// using the LU factorization computed by SGTTRF. 1550 void gtcon(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, ref f_int info) { 1551 sgtcon_(&norm, &n, dl, d, du, du2, ipiv, anorm, &rcond, work, iwork, &info, 1); 1552 } 1553 void gtcon(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, ref f_int info) { 1554 dgtcon_(&norm, &n, dl, d, du, du2, ipiv, anorm, &rcond, work, iwork, &info, 1); 1555 } 1556 void gtcon(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, ref f_int info) { 1557 cgtcon_(&norm, &n, dl, d, du, du2, ipiv, anorm, &rcond, work, &info, 1); 1558 } 1559 void gtcon(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, ref f_int info) { 1560 zgtcon_(&norm, &n, dl, d, du, du2, ipiv, anorm, &rcond, work, &info, 1); 1561 } 1562 1563 /// Improves the computed solution to a general tridiagonal system 1564 /// of linear equations AX=B, A**T X=B or A**H X=B, and provides 1565 /// forward and backward error bounds for the solution. 1566 void gtrfs(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, ref f_int info) { 1567 sgtrfs_(&trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1568 } 1569 void gtrfs(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, ref f_int info) { 1570 dgtrfs_(&trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 1571 } 1572 void gtrfs(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, ref f_int info) { 1573 cgtrfs_(&trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1574 } 1575 void gtrfs(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, ref f_int info) { 1576 zgtrfs_(&trans, &n, &nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 1577 } 1578 1579 /// Computes an LU factorization of a general tridiagonal matrix, 1580 /// using partial pivoting with row interchanges. 1581 void gttrf(f_int n, f_float *dl, f_float *d, f_float *du, f_float *du2, f_int *ipiv, ref f_int info) { 1582 sgttrf_(&n, dl, d, du, du2, ipiv, &info); 1583 } 1584 void gttrf(f_int n, f_double *dl, f_double *d, f_double *du, f_double *du2, f_int *ipiv, ref f_int info) { 1585 dgttrf_(&n, dl, d, du, du2, ipiv, &info); 1586 } 1587 void gttrf(f_int n, f_cfloat *dl, f_cfloat *d, f_cfloat *du, f_cfloat *du2, f_int *ipiv, ref f_int info) { 1588 cgttrf_(&n, dl, d, du, du2, ipiv, &info); 1589 } 1590 void gttrf(f_int n, f_cdouble *dl, f_cdouble *d, f_cdouble *du, f_cdouble *du2, f_int *ipiv, ref f_int info) { 1591 zgttrf_(&n, dl, d, du, du2, ipiv, &info); 1592 } 1593 1594 /// Solves a general tridiagonal system of linear equations AX=B, 1595 /// A**T X=B or A**H X=B, using the LU factorization computed by 1596 /// SGTTRF. 1597 void gttrs(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, ref f_int info) { 1598 sgttrs_(&trans, &n, &nrhs, dl, d, du, du2, ipiv, b, &ldb, &info, 1); 1599 } 1600 void gttrs(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, ref f_int info) { 1601 dgttrs_(&trans, &n, &nrhs, dl, d, du, du2, ipiv, b, &ldb, &info, 1); 1602 } 1603 void gttrs(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, ref f_int info) { 1604 cgttrs_(&trans, &n, &nrhs, dl, d, du, du2, ipiv, b, &ldb, &info, 1); 1605 } 1606 void gttrs(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, ref f_int info) { 1607 zgttrs_(&trans, &n, &nrhs, dl, d, du, du2, ipiv, b, &ldb, &info, 1); 1608 } 1609 1610 /// Implements a single-/f_double-shift version of the QZ method for 1611 /// finding the generalized eigenvalues of the equation 1612 /// det(A - w(i) B) = 0 1613 void hgeqz(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, ref f_int info) { 1614 shgeqz_(&job, &compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, alphar, alphai, betav, q, &ldq, z, &ldz, work, &lwork, &info, 1, 1, 1); 1615 } 1616 void hgeqz(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, ref f_int info) { 1617 dhgeqz_(&job, &compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, alphar, alphai, betav, q, &ldq, z, &ldz, work, &lwork, &info, 1, 1, 1); 1618 } 1619 void hgeqz(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, ref f_int info) { 1620 chgeqz_(&job, &compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, alphav, betav, q, &ldq, z, &ldz, work, &lwork, rwork, &info, 1, 1, 1); 1621 } 1622 void hgeqz(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, ref f_int info) { 1623 zhgeqz_(&job, &compq, &compz, &n, &ilo, &ihi, a, &lda, b, &ldb, alphav, betav, q, &ldq, z, &ldz, work, &lwork, rwork, &info, 1, 1, 1); 1624 } 1625 1626 /// Computes specified right and/or left eigenvectors of an upper 1627 /// Hessenberg matrix by inverse iteration. 1628 void hsein(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, ref f_int info) { 1629 shsein_(&side, &eigsrc, &initv, &select, &n, h, &ldh, wr, wi, vl, &ldvl, vr, &ldvr, &mm, &m, work, &ifaill, &ifailr, &info, 1, 1, 1); 1630 } 1631 void hsein(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, ref f_int info) { 1632 dhsein_(&side, &eigsrc, &initv, &select, &n, h, &ldh, wr, wi, vl, &ldvl, vr, &ldvr, &mm, &m, work, &ifaill, &ifailr, &info, 1, 1, 1); 1633 } 1634 void hsein(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, ref f_int info) { 1635 chsein_(&side, &eigsrc, &initv, &select, &n, h, &ldh, w, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &ifaill, &ifailr, &info, 1, 1, 1); 1636 } 1637 void hsein(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, ref f_int info) { 1638 zhsein_(&side, &eigsrc, &initv, &select, &n, h, &ldh, w, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &ifaill, &ifailr, &info, 1, 1, 1); 1639 } 1640 1641 /// Computes the eigenvalues and Schur factorization of an upper 1642 /// Hessenberg matrix, using the multishift QR algorithm. 1643 void hseqr(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, ref f_int info) { 1644 shseqr_(&job, &compz, &n, &ilo, &ihi, h, &ldh, wr, wi, z, &ldz, work, &lwork, &info, 1, 1); 1645 } 1646 void hseqr(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, ref f_int info) { 1647 dhseqr_(&job, &compz, &n, &ilo, &ihi, h, &ldh, wr, wi, z, &ldz, work, &lwork, &info, 1, 1); 1648 } 1649 void hseqr(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, ref f_int info) { 1650 chseqr_(&job, &compz, &n, &ilo, &ihi, h, &ldh, w, z, &ldz, work, &lwork, &info, 1, 1); 1651 } 1652 void hseqr(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, ref f_int info) { 1653 zhseqr_(&job, &compz, &n, &ilo, &ihi, h, &ldh, w, z, &ldz, work, &lwork, &info, 1, 1); 1654 } 1655 1656 /// Generates the orthogonal transformation matrix from 1657 /// a reduction to tridiagonal form determined by SSPTRD. 1658 void opgtr(char uplo, f_int n, f_float *ap, f_float *tau, f_float *q, f_int ldq, f_float *work, ref f_int info) { 1659 sopgtr_(&uplo, &n, ap, tau, q, &ldq, work, &info, 1); 1660 } 1661 void opgtr(char uplo, f_int n, f_double *ap, f_double *tau, f_double *q, f_int ldq, f_double *work, ref f_int info) { 1662 dopgtr_(&uplo, &n, ap, tau, q, &ldq, work, &info, 1); 1663 } 1664 1665 /// Generates the unitary transformation matrix from 1666 /// a reduction to tridiagonal form determined by CHPTRD. 1667 void upgtr(char uplo, f_int n, f_cfloat *ap, f_cfloat *tau, f_cfloat *q, f_int ldq, f_cfloat *work, ref f_int info) { 1668 cupgtr_(&uplo, &n, ap, tau, q, &ldq, work, &info, 1); 1669 } 1670 void upgtr(char uplo, f_int n, f_cdouble *ap, f_cdouble *tau, f_cdouble *q, f_int ldq, f_cdouble *work, ref f_int info) { 1671 zupgtr_(&uplo, &n, ap, tau, q, &ldq, work, &info, 1); 1672 } 1673 1674 1675 /// Multiplies a general matrix by the orthogonal 1676 /// transformation matrix from a reduction to tridiagonal form 1677 /// determined by SSPTRD. 1678 void opmtr(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, ref f_int info) { 1679 sopmtr_(&side, &uplo, &trans, &m, &n, ap, tau, c, &ldc, work, &info, 1, 1, 1); 1680 } 1681 void opmtr(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, ref f_int info) { 1682 dopmtr_(&side, &uplo, &trans, &m, &n, ap, tau, c, &ldc, work, &info, 1, 1, 1); 1683 } 1684 1685 /// Generates the orthogonal transformation matrices from 1686 /// a reduction to bidiagonal form determined by SGEBRD. 1687 void orgbr(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, ref f_int info) { 1688 sorgbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info, 1); 1689 } 1690 void orgbr(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, ref f_int info) { 1691 dorgbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info, 1); 1692 } 1693 1694 /// Generates the unitary transformation matrices from 1695 /// a reduction to bidiagonal form determined by CGEBRD. 1696 void ungbr(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, ref f_int info) { 1697 cungbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info, 1); 1698 } 1699 void ungbr(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, ref f_int info) { 1700 zungbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info, 1); 1701 } 1702 1703 /// Generates the orthogonal transformation matrix from 1704 /// a reduction to Hessenberg form determined by SGEHRD. 1705 void orghr(f_int n, f_int ilo, f_int ihi, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1706 sorghr_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1707 } 1708 void orghr(f_int n, f_int ilo, f_int ihi, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1709 dorghr_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1710 } 1711 1712 /// Generates the unitary transformation matrix from 1713 /// a reduction to Hessenberg form determined by CGEHRD. 1714 void unghr(f_int n, f_int ilo, f_int ihi, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1715 cunghr_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1716 } 1717 void unghr(f_int n, f_int ilo, f_int ihi, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1718 zunghr_(&n, &ilo, &ihi, a, &lda, tau, work, &lwork, &info); 1719 } 1720 1721 /// Generates all or part of the orthogonal matrix Q from 1722 /// an LQ factorization determined by SGELQF. 1723 void orglq(f_int m, f_int n, f_int k, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1724 sorglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1725 } 1726 void orglq(f_int m, f_int n, f_int k, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1727 dorglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1728 } 1729 1730 /// Generates all or part of the unitary matrix Q from 1731 /// an LQ factorization determined by CGELQF. 1732 void unglq(f_int m, f_int n, f_int k, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1733 cunglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1734 } 1735 void unglq(f_int m, f_int n, f_int k, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1736 zunglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1737 } 1738 1739 /// Generates all or part of the orthogonal matrix Q from 1740 /// a QL factorization determined by SGEQLF. 1741 void orgql(f_int m, f_int n, f_int k, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1742 sorgql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1743 } 1744 void orgql(f_int m, f_int n, f_int k, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1745 dorgql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1746 } 1747 1748 /// Generates all or part of the unitary matrix Q from 1749 /// a QL factorization determined by CGEQLF. 1750 void ungql(f_int m, f_int n, f_int k, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1751 cungql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1752 } 1753 void ungql(f_int m, f_int n, f_int k, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1754 zungql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1755 } 1756 1757 /// Generates all or part of the orthogonal matrix Q from 1758 /// a QR factorization determined by SGEQRF. 1759 void orgqr(f_int m, f_int n, f_int k, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1760 sorgqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1761 } 1762 void orgqr(f_int m, f_int n, f_int k, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1763 dorgqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1764 } 1765 1766 /// Generates all or part of the unitary matrix Q from 1767 /// a QR factorization determined by CGEQRF. 1768 void ungqr(f_int m, f_int n, f_int k, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1769 cungqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1770 } 1771 void ungqr(f_int m, f_int n, f_int k, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1772 zungqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1773 } 1774 1775 /// Generates all or part of the orthogonal matrix Q from 1776 /// an RQ factorization determined by SGERQF. 1777 void orgrq(f_int m, f_int n, f_int k, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1778 sorgrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1779 } 1780 void orgrq(f_int m, f_int n, f_int k, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1781 dorgrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1782 } 1783 1784 /// Generates all or part of the unitary matrix Q from 1785 /// an RQ factorization determined by CGERQF. 1786 void ungrq(f_int m, f_int n, f_int k, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1787 cungrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1788 } 1789 void ungrq(f_int m, f_int n, f_int k, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1790 zungrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info); 1791 } 1792 1793 /// Generates the orthogonal transformation matrix from 1794 /// a reduction to tridiagonal form determined by SSYTRD. 1795 void orgtr(char uplo, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 1796 sorgtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info, 1); 1797 } 1798 void orgtr(char uplo, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 1799 dorgtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info, 1); 1800 } 1801 1802 /// Generates the unitary transformation matrix from 1803 /// a reduction to tridiagonal form determined by CHETRD. 1804 void ungtr(char uplo, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 1805 cungtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info, 1); 1806 } 1807 void ungtr(char uplo, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 1808 zungtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info, 1); 1809 } 1810 1811 /// Multiplies a general matrix by one of the orthogonal 1812 /// transformation matrices from a reduction to bidiagonal form 1813 /// determined by SGEBRD. 1814 void ormbr(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, ref f_int info) { 1815 sormbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1816 } 1817 void ormbr(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, ref f_int info) { 1818 dormbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1819 } 1820 1821 /// Multiplies a general matrix by one of the unitary 1822 /// transformation matrices from a reduction to bidiagonal form 1823 /// determined by CGEBRD. 1824 void unmbr(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, ref f_int info) { 1825 cunmbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1826 } 1827 void unmbr(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, ref f_int info) { 1828 zunmbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1829 } 1830 1831 /// Multiplies a general matrix by the orthogonal transformation 1832 /// matrix from a reduction to Hessenberg form determined by SGEHRD. 1833 void ormhr(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, ref f_int info) { 1834 sormhr_(&side, &trans, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1835 } 1836 void ormhr(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, ref f_int info) { 1837 dormhr_(&side, &trans, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1838 } 1839 1840 /// Multiplies a general matrix by the unitary transformation 1841 /// matrix from a reduction to Hessenberg form determined by CGEHRD. 1842 void unmhr(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, ref f_int info) { 1843 cunmhr_(&side, &trans, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1844 } 1845 void unmhr(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, ref f_int info) { 1846 zunmhr_(&side, &trans, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1847 } 1848 1849 /// Multiplies a general matrix by the orthogonal matrix 1850 /// from an LQ factorization determined by SGELQF. 1851 void ormlq(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, ref f_int info) { 1852 sormlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1853 } 1854 void ormlq(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, ref f_int info) { 1855 dormlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1856 } 1857 1858 /// Multiplies a general matrix by the unitary matrix 1859 /// from an LQ factorization determined by CGELQF. 1860 void unmlq(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, ref f_int info) { 1861 cunmlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1862 } 1863 void unmlq(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, ref f_int info) { 1864 zunmlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1865 } 1866 1867 /// Multiplies a general matrix by the orthogonal matrix 1868 /// from a QL factorization determined by SGEQLF. 1869 void ormql(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, ref f_int info) { 1870 sormql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1871 } 1872 void ormql(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, ref f_int info) { 1873 dormql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1874 } 1875 1876 /// Multiplies a general matrix by the unitary matrix 1877 /// from a QL factorization determined by CGEQLF. 1878 void unmql(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, ref f_int info) { 1879 cunmql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1880 } 1881 void unmql(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, ref f_int info) { 1882 zunmql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1883 } 1884 1885 /// Multiplies a general matrix by the orthogonal matrix 1886 /// from a QR factorization determined by SGEQRF. 1887 void ormqr(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, ref f_int info) { 1888 sormqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1889 } 1890 void ormqr(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, ref f_int info) { 1891 dormqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1892 } 1893 1894 /// Multiplies a general matrix by the unitary matrix 1895 /// from a QR factorization determined by CGEQRF. 1896 void unmqr(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, ref f_int info) { 1897 cunmqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1898 } 1899 void unmqr(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, ref f_int info) { 1900 zunmqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1901 } 1902 1903 /// Multiples a general matrix by the orthogonal matrix 1904 /// from an RZ factorization determined by STZRZF. 1905 void ormr3(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, ref f_int info) { 1906 sormr3_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &info, 1, 1); 1907 } 1908 void ormr3(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, ref f_int info) { 1909 dormr3_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &info, 1, 1); 1910 } 1911 1912 /// Multiples a general matrix by the unitary matrix 1913 /// from an RZ factorization determined by CTZRZF. 1914 void unmr3(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, ref f_int info) { 1915 cunmr3_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &info, 1, 1); 1916 } 1917 void unmr3(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, ref f_int info) { 1918 zunmr3_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &info, 1, 1); 1919 } 1920 1921 /// Multiplies a general matrix by the orthogonal matrix 1922 /// from an RQ factorization determined by SGERQF. 1923 void ormrq(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, ref f_int info) { 1924 sormrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1925 } 1926 void ormrq(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, ref f_int info) { 1927 dormrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1928 } 1929 1930 /// Multiplies a general matrix by the unitary matrix 1931 /// from an RQ factorization determined by CGERQF. 1932 void unmrq(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, ref f_int info) { 1933 cunmrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1934 } 1935 void unmrq(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, ref f_int info) { 1936 zunmrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1937 } 1938 1939 /// Multiples a general matrix by the orthogonal matrix 1940 /// from an RZ factorization determined by STZRZF. 1941 void ormrz(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, ref f_int info) { 1942 sormrz_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1943 } 1944 void ormrz(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, ref f_int info) { 1945 dormrz_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1946 } 1947 1948 /// Multiples a general matrix by the unitary matrix 1949 /// from an RZ factorization determined by CTZRZF. 1950 void unmrz(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, ref f_int info) { 1951 cunmrz_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1952 } 1953 void unmrz(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, ref f_int info) { 1954 zunmrz_(&side, &trans, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1); 1955 } 1956 1957 /// Multiplies a general matrix by the orthogonal 1958 /// transformation matrix from a reduction to tridiagonal form 1959 /// determined by SSYTRD. 1960 void ormtr(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, ref f_int info) { 1961 sormtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1962 } 1963 void ormtr(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, ref f_int info) { 1964 dormtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1965 } 1966 1967 /// Multiplies a general matrix by the unitary 1968 /// transformation matrix from a reduction to tridiagonal form 1969 /// determined by CHETRD. 1970 void unmtr(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, ref f_int info) { 1971 cunmtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1972 } 1973 void unmtr(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, ref f_int info) { 1974 zunmtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info, 1, 1, 1); 1975 } 1976 1977 /// Estimates the reciprocal of the condition number of a 1978 /// symmetric positive definite band matrix, using the 1979 /// Cholesky factorization computed by SPBTRF. 1980 void pbcon(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, ref f_int info) { 1981 spbcon_(&uplo, &n, &kd, ab, &ldab, anorm, &rcond, work, iwork, &info, 1); 1982 } 1983 void pbcon(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, ref f_int info) { 1984 dpbcon_(&uplo, &n, &kd, ab, &ldab, anorm, &rcond, work, iwork, &info, 1); 1985 } 1986 void pbcon(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, ref f_int info) { 1987 cpbcon_(&uplo, &n, &kd, ab, &ldab, anorm, &rcond, work, rwork, &info, 1); 1988 } 1989 void pbcon(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, ref f_int info) { 1990 zpbcon_(&uplo, &n, &kd, ab, &ldab, anorm, &rcond, work, rwork, &info, 1); 1991 } 1992 1993 /// Computes row and column scalings to equilibrate a symmetric 1994 /// positive definite band matrix and reduce its condition number. 1995 void pbequ(char uplo, f_int n, f_int kd, f_float *ab, f_int ldab, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 1996 spbequ_(&uplo, &n, &kd, ab, &ldab, s, scond, amax, &info, 1); 1997 } 1998 void pbequ(char uplo, f_int n, f_int kd, f_double *ab, f_int ldab, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 1999 dpbequ_(&uplo, &n, &kd, ab, &ldab, s, scond, amax, &info, 1); 2000 } 2001 void pbequ(char uplo, f_int n, f_int kd, f_cfloat *ab, f_int ldab, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 2002 cpbequ_(&uplo, &n, &kd, ab, &ldab, s, scond, amax, &info, 1); 2003 } 2004 void pbequ(char uplo, f_int n, f_int kd, f_cdouble *ab, f_int ldab, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 2005 zpbequ_(&uplo, &n, &kd, ab, &ldab, s, scond, amax, &info, 1); 2006 } 2007 2008 /// Improves the computed solution to a symmetric positive 2009 /// definite banded system of linear equations AX=B, and provides 2010 /// forward and backward error bounds for the solution. 2011 void pbrfs(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, ref f_int info) { 2012 spbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2013 } 2014 void pbrfs(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, ref f_int info) { 2015 dpbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2016 } 2017 void pbrfs(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, ref f_int info) { 2018 cpbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2019 } 2020 void pbrfs(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, ref f_int info) { 2021 zpbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2022 } 2023 2024 /// Computes a split Cholesky factorization of a real symmetric positive 2025 /// definite band matrix. 2026 void pbstf(char uplo, f_int n, f_int kd, f_float *ab, f_int ldab, ref f_int info) { 2027 spbstf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2028 } 2029 void pbstf(char uplo, f_int n, f_int kd, f_double *ab, f_int ldab, ref f_int info) { 2030 dpbstf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2031 } 2032 void pbstf(char uplo, f_int n, f_int kd, f_cfloat *ab, f_int ldab, ref f_int info) { 2033 cpbstf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2034 } 2035 void pbstf(char uplo, f_int n, f_int kd, f_cdouble *ab, f_int ldab, ref f_int info) { 2036 zpbstf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2037 } 2038 2039 /// Computes the Cholesky factorization of a symmetric 2040 /// positive definite band matrix. 2041 void pbtrf(char uplo, f_int n, f_int kd, f_float *ab, f_int ldab, ref f_int info) { 2042 spbtrf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2043 } 2044 void pbtrf(char uplo, f_int n, f_int kd, f_double *ab, f_int ldab, ref f_int info) { 2045 dpbtrf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2046 } 2047 void pbtrf(char uplo, f_int n, f_int kd, f_cfloat *ab, f_int ldab, ref f_int info) { 2048 cpbtrf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2049 } 2050 void pbtrf(char uplo, f_int n, f_int kd, f_cdouble *ab, f_int ldab, ref f_int info) { 2051 zpbtrf_(&uplo, &n, &kd, ab, &ldab, &info, 1); 2052 } 2053 2054 /// Solves a symmetric positive definite banded system 2055 /// of linear equations AX=B, using the Cholesky factorization 2056 /// computed by SPBTRF. 2057 void pbtrs(char uplo, f_int n, f_int kd, f_int nrhs, f_float *ab, f_int ldab, f_float *b, f_int ldb, ref f_int info) { 2058 spbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 2059 } 2060 void pbtrs(char uplo, f_int n, f_int kd, f_int nrhs, f_double *ab, f_int ldab, f_double *b, f_int ldb, ref f_int info) { 2061 dpbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 2062 } 2063 void pbtrs(char uplo, f_int n, f_int kd, f_int nrhs, f_cfloat *ab, f_int ldab, f_cfloat *b, f_int ldb, ref f_int info) { 2064 cpbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 2065 } 2066 void pbtrs(char uplo, f_int n, f_int kd, f_int nrhs, f_cdouble *ab, f_int ldab, f_cdouble *b, f_int ldb, ref f_int info) { 2067 zpbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1); 2068 } 2069 2070 /// Estimates the reciprocal of the condition number of a 2071 /// symmetric positive definite matrix, using the 2072 /// Cholesky factorization computed by SPOTRF. 2073 void pocon(char uplo, f_int n, f_float *a, f_int lda, f_float *anorm, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 2074 spocon_(&uplo, &n, a, &lda, anorm, &rcond, work, iwork, &info, 1); 2075 } 2076 void pocon(char uplo, f_int n, f_double *a, f_int lda, f_double *anorm, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 2077 dpocon_(&uplo, &n, a, &lda, anorm, &rcond, work, iwork, &info, 1); 2078 } 2079 void pocon(char uplo, f_int n, f_cfloat *a, f_int lda, f_float *anorm, f_float rcond, f_cfloat *work, f_float *rwork, ref f_int info) { 2080 cpocon_(&uplo, &n, a, &lda, anorm, &rcond, work, rwork, &info, 1); 2081 } 2082 void pocon(char uplo, f_int n, f_cdouble *a, f_int lda, f_double *anorm, f_double rcond, f_cdouble *work, f_double *rwork, ref f_int info) { 2083 zpocon_(&uplo, &n, a, &lda, anorm, &rcond, work, rwork, &info, 1); 2084 } 2085 2086 /// Computes row and column scalings to equilibrate a symmetric 2087 /// positive definite matrix and reduce its condition number. 2088 void poequ(f_int n, f_float *a, f_int lda, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 2089 spoequ_(&n, a, &lda, s, scond, amax, &info); 2090 } 2091 void poequ(f_int n, f_double *a, f_int lda, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 2092 dpoequ_(&n, a, &lda, s, scond, amax, &info); 2093 } 2094 void poequ(f_int n, f_cfloat *a, f_int lda, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 2095 cpoequ_(&n, a, &lda, s, scond, amax, &info); 2096 } 2097 void poequ(f_int n, f_cdouble *a, f_int lda, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 2098 zpoequ_(&n, a, &lda, s, scond, amax, &info); 2099 } 2100 2101 /// Improves the computed solution to a symmetric positive 2102 /// definite system of linear equations AX=B, and provides forward 2103 /// and backward error bounds for the solution. 2104 void porfs(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, ref f_int info) { 2105 sporfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2106 } 2107 void porfs(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, ref f_int info) { 2108 dporfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2109 } 2110 void porfs(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, ref f_int info) { 2111 cporfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2112 } 2113 void porfs(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, ref f_int info) { 2114 zporfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2115 } 2116 2117 /// Computes the Cholesky factorization of a symmetric 2118 /// positive definite matrix. 2119 void potrf(char uplo, f_int n, f_float *a, f_int lda, ref f_int info) { 2120 spotrf_(&uplo, &n, a, &lda, &info, 1); 2121 } 2122 void potrf(char uplo, f_int n, f_double *a, f_int lda, ref f_int info) { 2123 dpotrf_(&uplo, &n, a, &lda, &info, 1); 2124 } 2125 void potrf(char uplo, f_int n, f_cfloat *a, f_int lda, ref f_int info) { 2126 cpotrf_(&uplo, &n, a, &lda, &info, 1); 2127 } 2128 void potrf(char uplo, f_int n, f_cdouble *a, f_int lda, ref f_int info) { 2129 zpotrf_(&uplo, &n, a, &lda, &info, 1); 2130 } 2131 2132 /// Computes the inverse of a symmetric positive definite 2133 /// matrix, using the Cholesky factorization computed by SPOTRF. 2134 void potri(char uplo, f_int n, f_float *a, f_int lda, ref f_int info) { 2135 spotri_(&uplo, &n, a, &lda, &info, 1); 2136 } 2137 void potri(char uplo, f_int n, f_double *a, f_int lda, ref f_int info) { 2138 dpotri_(&uplo, &n, a, &lda, &info, 1); 2139 } 2140 void potri(char uplo, f_int n, f_cfloat *a, f_int lda, ref f_int info) { 2141 cpotri_(&uplo, &n, a, &lda, &info, 1); 2142 } 2143 void potri(char uplo, f_int n, f_cdouble *a, f_int lda, ref f_int info) { 2144 zpotri_(&uplo, &n, a, &lda, &info, 1); 2145 } 2146 2147 /// Solves a symmetric positive definite system of linear 2148 /// equations AX=B, using the Cholesky factorization computed by 2149 /// SPOTRF. 2150 void potrs(char uplo, f_int n, f_int nrhs, f_float *a, f_int lda, f_float *b, f_int ldb, ref f_int info) { 2151 spotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 2152 } 2153 void potrs(char uplo, f_int n, f_int nrhs, f_double *a, f_int lda, f_double *b, f_int ldb, ref f_int info) { 2154 dpotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 2155 } 2156 void potrs(char uplo, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_cfloat *b, f_int ldb, ref f_int info) { 2157 cpotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 2158 } 2159 void potrs(char uplo, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_cdouble *b, f_int ldb, ref f_int info) { 2160 zpotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info, 1); 2161 } 2162 2163 /// Estimates the reciprocal of the condition number of a 2164 /// symmetric positive definite matrix in packed storage, 2165 /// using the Cholesky factorization computed by SPPTRF. 2166 void ppcon(char uplo, f_int n, f_float *ap, f_float *anorm, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 2167 sppcon_(&uplo, &n, ap, anorm, &rcond, work, iwork, &info, 1); 2168 } 2169 void ppcon(char uplo, f_int n, f_double *ap, f_double *anorm, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 2170 dppcon_(&uplo, &n, ap, anorm, &rcond, work, iwork, &info, 1); 2171 } 2172 void ppcon(char uplo, f_int n, f_cfloat *ap, f_float *anorm, f_float rcond, f_cfloat *work, f_float *rwork, ref f_int info) { 2173 cppcon_(&uplo, &n, ap, anorm, &rcond, work, rwork, &info, 1); 2174 } 2175 void ppcon(char uplo, f_int n, f_cdouble *ap, f_double *anorm, f_double rcond, f_cdouble *work, f_double *rwork, ref f_int info) { 2176 zppcon_(&uplo, &n, ap, anorm, &rcond, work, rwork, &info, 1); 2177 } 2178 2179 /// Computes row and column scalings to equilibrate a symmetric 2180 /// positive definite matrix in packed storage and reduce its condition 2181 /// number. 2182 void ppequ(char uplo, f_int n, f_float *ap, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 2183 sppequ_(&uplo, &n, ap, s, scond, amax, &info, 1); 2184 } 2185 void ppequ(char uplo, f_int n, f_double *ap, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 2186 dppequ_(&uplo, &n, ap, s, scond, amax, &info, 1); 2187 } 2188 void ppequ(char uplo, f_int n, f_cfloat *ap, f_float *s, f_float *scond, f_float *amax, ref f_int info) { 2189 cppequ_(&uplo, &n, ap, s, scond, amax, &info, 1); 2190 } 2191 void ppequ(char uplo, f_int n, f_cdouble *ap, f_double *s, f_double *scond, f_double *amax, ref f_int info) { 2192 zppequ_(&uplo, &n, ap, s, scond, amax, &info, 1); 2193 } 2194 2195 /// Improves the computed solution to a symmetric positive 2196 /// definite system of linear equations AX=B, where A is held in 2197 /// packed storage, and provides forward and backward error bounds 2198 /// for the solution. 2199 void pprfs(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, ref f_int info) { 2200 spprfs_(&uplo, &n, &nrhs, ap, afp, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2201 } 2202 void pprfs(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, ref f_int info) { 2203 dpprfs_(&uplo, &n, &nrhs, ap, afp, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2204 } 2205 void pprfs(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, ref f_int info) { 2206 cpprfs_(&uplo, &n, &nrhs, ap, afp, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2207 } 2208 void pprfs(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, ref f_int info) { 2209 zpprfs_(&uplo, &n, &nrhs, ap, afp, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2210 } 2211 2212 /// Computes the Cholesky factorization of a symmetric 2213 /// positive definite matrix in packed storage. 2214 void pptrf(char uplo, f_int n, f_float *ap, ref f_int info) { 2215 spptrf_(&uplo, &n, ap, &info, 1); 2216 } 2217 void pptrf(char uplo, f_int n, f_double *ap, ref f_int info) { 2218 dpptrf_(&uplo, &n, ap, &info, 1); 2219 } 2220 void pptrf(char uplo, f_int n, f_cfloat *ap, ref f_int info) { 2221 cpptrf_(&uplo, &n, ap, &info, 1); 2222 } 2223 void pptrf(char uplo, f_int n, f_cdouble *ap, ref f_int info) { 2224 zpptrf_(&uplo, &n, ap, &info, 1); 2225 } 2226 2227 /// Computes the inverse of a symmetric positive definite 2228 /// matrix in packed storage, using the Cholesky factorization computed 2229 /// by SPPTRF. 2230 void pptri(char uplo, f_int n, f_float *ap, ref f_int info) { 2231 spptri_(&uplo, &n, ap, &info, 1); 2232 } 2233 void pptri(char uplo, f_int n, f_double *ap, ref f_int info) { 2234 dpptri_(&uplo, &n, ap, &info, 1); 2235 } 2236 void pptri(char uplo, f_int n, f_cfloat *ap, ref f_int info) { 2237 cpptri_(&uplo, &n, ap, &info, 1); 2238 } 2239 void pptri(char uplo, f_int n, f_cdouble *ap, ref f_int info) { 2240 zpptri_(&uplo, &n, ap, &info, 1); 2241 } 2242 2243 /// Solves a symmetric positive definite system of linear 2244 /// equations AX=B, where A is held in packed storage, using the 2245 /// Cholesky factorization computed by SPPTRF. 2246 void pptrs(char uplo, f_int n, f_int nrhs, f_float *ap, f_float *b, f_int ldb, ref f_int info) { 2247 spptrs_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 2248 } 2249 void pptrs(char uplo, f_int n, f_int nrhs, f_double *ap, f_double *b, f_int ldb, ref f_int info) { 2250 dpptrs_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 2251 } 2252 void pptrs(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_cfloat *b, f_int ldb, ref f_int info) { 2253 cpptrs_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 2254 } 2255 void pptrs(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_cdouble *b, f_int ldb, ref f_int info) { 2256 zpptrs_(&uplo, &n, &nrhs, ap, b, &ldb, &info, 1); 2257 } 2258 2259 /// Computes the reciprocal of the condition number of a 2260 /// symmetric positive definite tridiagonal matrix, 2261 /// using the LDL**H factorization computed by SPTTRF. 2262 void ptcon(f_int n, f_float *d, f_float *e, f_float *anorm, f_float rcond, f_float *work, ref f_int info) { 2263 sptcon_(&n, d, e, anorm, &rcond, work, &info); 2264 } 2265 void ptcon(f_int n, f_double *d, f_double *e, f_double *anorm, f_double rcond, f_double *work, ref f_int info) { 2266 dptcon_(&n, d, e, anorm, &rcond, work, &info); 2267 } 2268 void ptcon(f_int n, f_float *d, f_cfloat *e, f_float *anorm, f_float rcond, f_float *rwork, ref f_int info) { 2269 cptcon_(&n, d, e, anorm, &rcond, rwork, &info); 2270 } 2271 void ptcon(f_int n, f_double *d, f_cdouble *e, f_double *anorm, f_double rcond, f_double *rwork, ref f_int info) { 2272 zptcon_(&n, d, e, anorm, &rcond, rwork, &info); 2273 } 2274 2275 /// Computes all eigenvalues and eigenvectors of a real symmetric 2276 /// positive definite tridiagonal matrix, by computing the SVD of 2277 /// its bidiagonal Cholesky factor. 2278 void pteqr(char compz, f_int n, f_float *d, f_float *e, f_float *z, f_int ldz, f_float *work, ref f_int info) { 2279 spteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2280 } 2281 void pteqr(char compz, f_int n, f_double *d, f_double *e, f_double *z, f_int ldz, f_double *work, ref f_int info) { 2282 dpteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2283 } 2284 void pteqr(char compz, f_int n, f_float *d, f_float *e, f_cfloat *z, f_int ldz, f_float *work, ref f_int info) { 2285 cpteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2286 } 2287 void pteqr(char compz, f_int n, f_double *d, f_double *e, f_cdouble *z, f_int ldz, f_double *work, ref f_int info) { 2288 zpteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2289 } 2290 2291 /// Improves the computed solution to a symmetric positive 2292 /// definite tridiagonal system of linear equations AX=B, and provides 2293 /// forward and backward error bounds for the solution. 2294 void ptrfs(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, ref f_int info) { 2295 sptrfs_(&n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, ferr, berr, work, &info); 2296 } 2297 void ptrfs(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, ref f_int info) { 2298 dptrfs_(&n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, ferr, berr, work, &info); 2299 } 2300 void ptrfs(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, ref f_int info) { 2301 cptrfs_(&uplo, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2302 } 2303 void ptrfs(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, ref f_int info) { 2304 zptrfs_(&uplo, &n, &nrhs, d, e, df, ef, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2305 } 2306 2307 /// Computes the LDL**H factorization of a symmetric 2308 /// positive definite tridiagonal matrix. 2309 void pttrf(f_int n, f_float *d, f_float *e, ref f_int info) { 2310 spttrf_(&n, d, e, &info); 2311 } 2312 void pttrf(f_int n, f_double *d, f_double *e, ref f_int info) { 2313 dpttrf_(&n, d, e, &info); 2314 } 2315 void pttrf(f_int n, f_float *d, f_cfloat *e, ref f_int info) { 2316 cpttrf_(&n, d, e, &info); 2317 } 2318 void pttrf(f_int n, f_double *d, f_cdouble *e, ref f_int info) { 2319 zpttrf_(&n, d, e, &info); 2320 } 2321 2322 /// Solves a symmetric positive definite tridiagonal 2323 /// system of linear equations, using the LDL**H factorization 2324 /// computed by SPTTRF. 2325 void pttrs(f_int n, f_int nrhs, f_float *d, f_float *e, f_float *b, f_int ldb, ref f_int info) { 2326 spttrs_(&n, &nrhs, d, e, b, &ldb, &info); 2327 } 2328 void pttrs(f_int n, f_int nrhs, f_double *d, f_double *e, f_double *b, f_int ldb, ref f_int info) { 2329 dpttrs_(&n, &nrhs, d, e, b, &ldb, &info); 2330 } 2331 void pttrs(char uplo, f_int n, f_int nrhs, f_float *d, f_cfloat *e, f_cfloat *b, f_int ldb, ref f_int info) { 2332 cpttrs_(&uplo, &n, &nrhs, d, e, b, &ldb, &info, 1); 2333 } 2334 void pttrs(char uplo, f_int n, f_int nrhs, f_double *d, f_cdouble *e, f_cdouble *b, f_int ldb, ref f_int info) { 2335 zpttrs_(&uplo, &n, &nrhs, d, e, b, &ldb, &info, 1); 2336 } 2337 2338 /// Reduces a real symmetric-definite banded generalized eigenproblem 2339 /// A x = lambda B x to standard form, where B has been factorized by 2340 /// SPBSTF (Crawford's algorithm). 2341 void sbgst(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, ref f_int info) { 2342 ssbgst_(&vect, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, x, &ldx, work, &info, 1, 1); 2343 } 2344 void sbgst(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, ref f_int info) { 2345 dsbgst_(&vect, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, x, &ldx, work, &info, 1, 1); 2346 } 2347 2348 /// Reduces a complex Hermitian-definite banded generalized eigenproblem 2349 /// A x = lambda B x to standard form, where B has been factorized by 2350 /// CPBSTF (Crawford's algorithm). 2351 void hbgst(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, ref f_int info) { 2352 chbgst_(&vect, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, x, &ldx, work, rwork, &info, 1, 1); 2353 } 2354 void hbgst(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, ref f_int info) { 2355 zhbgst_(&vect, &uplo, &n, &ka, &kb, ab, &ldab, bb, &ldbb, x, &ldx, work, rwork, &info, 1, 1); 2356 } 2357 2358 /// Reduces a symmetric band matrix to real symmetric 2359 /// tridiagonal form by an orthogonal similarity transformation. 2360 void sbtrd(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, ref f_int info) { 2361 ssbtrd_(&vect, &uplo, &n, &kd, ab, &ldab, d, e, q, &ldq, work, &info, 1, 1); 2362 } 2363 void sbtrd(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, ref f_int info) { 2364 dsbtrd_(&vect, &uplo, &n, &kd, ab, &ldab, d, e, q, &ldq, work, &info, 1, 1); 2365 } 2366 2367 /// Reduces a Hermitian band matrix to real symmetric 2368 /// tridiagonal form by a unitary similarity transformation. 2369 void hbtrd(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, ref f_int info) { 2370 chbtrd_(&vect, &uplo, &n, &kd, ab, &ldab, d, e, q, &ldq, work, &info, 1, 1); 2371 } 2372 void hbtrd(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, ref f_int info) { 2373 zhbtrd_(&vect, &uplo, &n, &kd, ab, &ldab, d, e, q, &ldq, work, &info, 1, 1); 2374 } 2375 2376 /// Estimates the reciprocal of the condition number of a 2377 /// real symmetric indefinite 2378 /// matrix in packed storage, using the factorization computed 2379 /// by SSPTRF. 2380 void spcon(char uplo, f_int n, f_float *ap, f_int *ipiv, f_float *anorm, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 2381 sspcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, iwork, &info, 1); 2382 } 2383 void spcon(char uplo, f_int n, f_double *ap, f_int *ipiv, f_double *anorm, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 2384 dspcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, iwork, &info, 1); 2385 } 2386 void spcon(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, f_float *anorm, f_float rcond, f_cfloat *work, ref f_int info) { 2387 cspcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, &info, 1); 2388 } 2389 void spcon(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, f_double *anorm, f_double rcond, f_cdouble *work, ref f_int info) { 2390 zspcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, &info, 1); 2391 } 2392 2393 /// Estimates the reciprocal of the condition number of a 2394 /// complex Hermitian indefinite 2395 /// matrix in packed storage, using the factorization computed 2396 /// by CHPTRF. 2397 void hpcon(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, f_float *anorm, f_float rcond, f_cfloat *work, ref f_int info) { 2398 chpcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, &info, 1); 2399 } 2400 void hpcon(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, f_double *anorm, f_double rcond, f_cdouble *work, ref f_int info) { 2401 zhpcon_(&uplo, &n, ap, ipiv, anorm, &rcond, work, &info, 1); 2402 } 2403 2404 /// Reduces a symmetric-definite generalized eigenproblem 2405 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 2406 /// form, where A and B are held in packed storage, and B has been 2407 /// factorized by SPPTRF. 2408 void spgst(f_int itype, char uplo, f_int n, f_float *ap, f_float *bp, ref f_int info) { 2409 sspgst_(&itype, &uplo, &n, ap, bp, &info, 1); 2410 } 2411 void spgst(f_int itype, char uplo, f_int n, f_double *ap, f_double *bp, ref f_int info) { 2412 dspgst_(&itype, &uplo, &n, ap, bp, &info, 1); 2413 } 2414 2415 /// Reduces a Hermitian-definite generalized eigenproblem 2416 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 2417 /// form, where A and B are held in packed storage, and B has been 2418 /// factorized by CPPTRF. 2419 void hpgst(f_int itype, char uplo, f_int n, f_cfloat *ap, f_cfloat *bp, ref f_int info) { 2420 chpgst_(&itype, &uplo, &n, ap, bp, &info, 1); 2421 } 2422 void hpgst(f_int itype, char uplo, f_int n, f_cdouble *ap, f_cdouble *bp, ref f_int info) { 2423 zhpgst_(&itype, &uplo, &n, ap, bp, &info, 1); 2424 } 2425 2426 /// Improves the computed solution to a real 2427 /// symmetric indefinite system of linear equations 2428 /// AX=B, where A is held in packed storage, and provides forward 2429 /// and backward error bounds for the solution. 2430 void sprfs(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, ref f_int info) { 2431 ssprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2432 } 2433 void sprfs(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, ref f_int info) { 2434 dsprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2435 } 2436 void sprfs(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, ref f_int info) { 2437 csprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2438 } 2439 void sprfs(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, ref f_int info) { 2440 zsprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2441 } 2442 2443 /// Improves the computed solution to a complex 2444 /// Hermitian indefinite system of linear equations 2445 /// AX=B, where A is held in packed storage, and provides forward 2446 /// and backward error bounds for the solution. 2447 void hprfs(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, ref f_int info) { 2448 chprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2449 } 2450 void hprfs(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, ref f_int info) { 2451 zhprfs_(&uplo, &n, &nrhs, ap, afp, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2452 } 2453 2454 /// Reduces a symmetric matrix in packed storage to real 2455 /// symmetric tridiagonal form by an orthogonal similarity 2456 /// transformation. 2457 void sptrd(char uplo, f_int n, f_float *ap, f_float *d, f_float *e, f_float *tau, ref f_int info) { 2458 ssptrd_(&uplo, &n, ap, d, e, tau, &info, 1); 2459 } 2460 void sptrd(char uplo, f_int n, f_double *ap, f_double *d, f_double *e, f_double *tau, ref f_int info) { 2461 dsptrd_(&uplo, &n, ap, d, e, tau, &info, 1); 2462 } 2463 2464 /// Reduces a Hermitian matrix in packed storage to real 2465 /// symmetric tridiagonal form by a unitary similarity 2466 /// transformation. 2467 void hptrd(char uplo, f_int n, f_cfloat *ap, f_float *d, f_float *e, f_cfloat *tau, ref f_int info) { 2468 chptrd_(&uplo, &n, ap, d, e, tau, &info, 1); 2469 } 2470 void hptrd(char uplo, f_int n, f_cdouble *ap, f_double *d, f_double *e, f_cdouble *tau, ref f_int info) { 2471 zhptrd_(&uplo, &n, ap, d, e, tau, &info, 1); 2472 } 2473 2474 /// Computes the factorization of a real 2475 /// symmetric-indefinite matrix in packed storage, 2476 /// using the diagonal pivoting method. 2477 void sptrf(char uplo, f_int n, f_float *ap, f_int *ipiv, ref f_int info) { 2478 ssptrf_(&uplo, &n, ap, ipiv, &info, 1); 2479 } 2480 void sptrf(char uplo, f_int n, f_double *ap, f_int *ipiv, ref f_int info) { 2481 dsptrf_(&uplo, &n, ap, ipiv, &info, 1); 2482 } 2483 void sptrf(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, ref f_int info) { 2484 csptrf_(&uplo, &n, ap, ipiv, &info, 1); 2485 } 2486 void sptrf(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, ref f_int info) { 2487 zsptrf_(&uplo, &n, ap, ipiv, &info, 1); 2488 } 2489 2490 /// Computes the factorization of a complex 2491 /// Hermitian-indefinite matrix in packed storage, 2492 /// using the diagonal pivoting method. 2493 void hptrf(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, ref f_int info) { 2494 chptrf_(&uplo, &n, ap, ipiv, &info, 1); 2495 } 2496 void hptrf(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, ref f_int info) { 2497 zhptrf_(&uplo, &n, ap, ipiv, &info, 1); 2498 } 2499 2500 /// Computes the inverse of a real symmetric 2501 /// indefinite matrix in packed storage, using the factorization 2502 /// computed by SSPTRF. 2503 void sptri(char uplo, f_int n, f_float *ap, f_int *ipiv, f_float *work, ref f_int info) { 2504 ssptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2505 } 2506 void sptri(char uplo, f_int n, f_double *ap, f_int *ipiv, f_double *work, ref f_int info) { 2507 dsptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2508 } 2509 void sptri(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, f_cfloat *work, ref f_int info) { 2510 csptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2511 } 2512 void sptri(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, f_cdouble *work, ref f_int info) { 2513 zsptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2514 } 2515 2516 /// Computes the inverse of a complex 2517 /// Hermitian indefinite matrix in packed storage, using the factorization 2518 /// computed by CHPTRF. 2519 void hptri(char uplo, f_int n, f_cfloat *ap, f_int *ipiv, f_cfloat *work, ref f_int info) { 2520 chptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2521 } 2522 void hptri(char uplo, f_int n, f_cdouble *ap, f_int *ipiv, f_cdouble *work, ref f_int info) { 2523 zhptri_(&uplo, &n, ap, ipiv, work, &info, 1); 2524 } 2525 2526 /// Solves a real symmetric 2527 /// indefinite system of linear equations AX=B, where A is held 2528 /// in packed storage, using the factorization computed 2529 /// by SSPTRF. 2530 void sptrs(char uplo, f_int n, f_int nrhs, f_float *ap, f_int *ipiv, f_float *b, f_int ldb, ref f_int info) { 2531 ssptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2532 } 2533 void sptrs(char uplo, f_int n, f_int nrhs, f_double *ap, f_int *ipiv, f_double *b, f_int ldb, ref f_int info) { 2534 dsptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2535 } 2536 void sptrs(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 2537 csptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2538 } 2539 void sptrs(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 2540 zsptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2541 } 2542 2543 /// Solves a complex Hermitian 2544 /// indefinite system of linear equations AX=B, where A is held 2545 /// in packed storage, using the factorization computed 2546 /// by CHPTRF. 2547 void hptrs(char uplo, f_int n, f_int nrhs, f_cfloat *ap, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 2548 chptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2549 } 2550 void hptrs(char uplo, f_int n, f_int nrhs, f_cdouble *ap, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 2551 zhptrs_(&uplo, &n, &nrhs, ap, ipiv, b, &ldb, &info, 1); 2552 } 2553 2554 /// Computes selected eigenvalues of a real symmetric tridiagonal 2555 /// matrix by bisection. 2556 void stebz(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, ref f_int info) { 2557 sstebz_(&range, &order, &n, vl, vu, &il, &iu, abstol, d, e, &m, &nsplit, w, &iblock, &isplit, work, iwork, &info, 1, 1); 2558 } 2559 void stebz(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, ref f_int info) { 2560 dstebz_(&range, &order, &n, vl, vu, &il, &iu, abstol, d, e, &m, &nsplit, w, &iblock, &isplit, work, iwork, &info, 1, 1); 2561 } 2562 2563 /// Computes all eigenvalues and, optionally, eigenvectors of a 2564 /// symmetric tridiagonal matrix using the divide and conquer algorithm. 2565 void stedc(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, ref f_int info) { 2566 sstedc_(&compz, &n, d, e, z, &ldz, work, &lwork, iwork, &liwork, &info, 1); 2567 } 2568 void stedc(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, ref f_int info) { 2569 dstedc_(&compz, &n, d, e, z, &ldz, work, &lwork, iwork, &liwork, &info, 1); 2570 } 2571 void stedc(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, ref f_int info) { 2572 cstedc_(&compz, &n, d, e, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1); 2573 } 2574 void stedc(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, ref f_int info) { 2575 zstedc_(&compz, &n, d, e, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info, 1); 2576 } 2577 2578 /// Computes selected eigenvalues and, optionally, eigenvectors of a 2579 /// symmetric tridiagonal matrix. The eigenvalues are computed by the 2580 /// dqds algorithm, while eigenvectors are computed from various "good" 2581 /// LDL^T representations (also known as Relatively Robust Representations.) 2582 void stegr(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, ref f_int info) { 2583 sstegr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 2584 } 2585 void stegr(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, ref f_int info) { 2586 dstegr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 2587 } 2588 void stegr(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, ref f_int info) { 2589 cstegr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 2590 } 2591 void stegr(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, ref f_int info) { 2592 zstegr_(&jobz, &range, &n, d, e, vl, vu, &il, &iu, abstol, &m, w, z, &ldz, &isuppz, work, &lwork, iwork, &liwork, &info, 1, 1); 2593 } 2594 2595 /// Computes selected eigenvectors of a real symmetric tridiagonal 2596 /// matrix by inverse iteration. 2597 void stein(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, ref f_int info) { 2598 sstein_(&n, d, e, &m, w, &iblock, &isplit, z, &ldz, work, iwork, &ifail, &info); 2599 } 2600 void stein(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, ref f_int info) { 2601 dstein_(&n, d, e, &m, w, &iblock, &isplit, z, &ldz, work, iwork, &ifail, &info); 2602 } 2603 void stein(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, ref f_int info) { 2604 cstein_(&n, d, e, &m, w, &iblock, &isplit, z, &ldz, work, iwork, &ifail, &info); 2605 } 2606 void stein(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, ref f_int info) { 2607 zstein_(&n, d, e, &m, w, &iblock, &isplit, z, &ldz, work, iwork, &ifail, &info); 2608 } 2609 2610 /// Computes all eigenvalues and eigenvectors of a real symmetric 2611 /// tridiagonal matrix, using the implicit QL or QR algorithm. 2612 void steqr(char compz, f_int n, f_float *d, f_float *e, f_float *z, f_int ldz, f_float *work, ref f_int info) { 2613 ssteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2614 } 2615 void steqr(char compz, f_int n, f_double *d, f_double *e, f_double *z, f_int ldz, f_double *work, ref f_int info) { 2616 dsteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2617 } 2618 void steqr(char compz, f_int n, f_float *d, f_float *e, f_cfloat *z, f_int ldz, f_float *work, ref f_int info) { 2619 csteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2620 } 2621 void steqr(char compz, f_int n, f_double *d, f_double *e, f_cdouble *z, f_int ldz, f_double *work, ref f_int info) { 2622 zsteqr_(&compz, &n, d, e, z, &ldz, work, &info, 1); 2623 } 2624 2625 /// Computes all eigenvalues of a real symmetric tridiagonal matrix, 2626 /// using a root-free variant of the QL or QR algorithm. 2627 void sterf(f_int n, f_float *d, f_float *e, ref f_int info) { 2628 ssterf_(&n, d, e, &info); 2629 } 2630 void sterf(f_int n, f_double *d, f_double *e, ref f_int info) { 2631 dsterf_(&n, d, e, &info); 2632 } 2633 2634 /// Estimates the reciprocal of the condition number of a 2635 /// real symmetric indefinite matrix, 2636 /// using the factorization computed by SSYTRF. 2637 void sycon(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, ref f_int info) { 2638 ssycon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, iwork, &info, 1); 2639 } 2640 void sycon(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, ref f_int info) { 2641 dsycon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, iwork, &info, 1); 2642 } 2643 void sycon(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_float *anorm, f_float rcond, f_cfloat *work, ref f_int info) { 2644 csycon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, &info, 1); 2645 } 2646 void sycon(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_double *anorm, f_double rcond, f_cdouble *work, ref f_int info) { 2647 zsycon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, &info, 1); 2648 } 2649 2650 /// Estimates the reciprocal of the condition number of a 2651 /// complex Hermitian indefinite matrix, 2652 /// using the factorization computed by CHETRF. 2653 void hecon(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_float *anorm, f_float rcond, f_cfloat *work, ref f_int info) { 2654 checon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, &info, 1); 2655 } 2656 void hecon(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_double *anorm, f_double rcond, f_cdouble *work, ref f_int info) { 2657 zhecon_(&uplo, &n, a, &lda, ipiv, anorm, &rcond, work, &info, 1); 2658 } 2659 2660 /// Reduces a symmetric-definite generalized eigenproblem 2661 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 2662 /// form, where B has been factorized by SPOTRF. 2663 void sygst(f_int itype, char uplo, f_int n, f_float *a, f_int lda, f_float *b, f_int ldb, ref f_int info) { 2664 ssygst_(&itype, &uplo, &n, a, &lda, b, &ldb, &info, 1); 2665 } 2666 void sygst(f_int itype, char uplo, f_int n, f_double *a, f_int lda, f_double *b, f_int ldb, ref f_int info) { 2667 dsygst_(&itype, &uplo, &n, a, &lda, b, &ldb, &info, 1); 2668 } 2669 2670 /// Reduces a Hermitian-definite generalized eigenproblem 2671 /// Ax= lambda Bx, ABx= lambda x, or BAx= lambda x, to standard 2672 /// form, where B has been factorized by CPOTRF. 2673 void hegst(f_int itype, char uplo, f_int n, f_cfloat *a, f_int lda, f_cfloat *b, f_int ldb, ref f_int info) { 2674 chegst_(&itype, &uplo, &n, a, &lda, b, &ldb, &info, 1); 2675 } 2676 void hegst(f_int itype, char uplo, f_int n, f_cdouble *a, f_int lda, f_cdouble *b, f_int ldb, ref f_int info) { 2677 zhegst_(&itype, &uplo, &n, a, &lda, b, &ldb, &info, 1); 2678 } 2679 2680 /// Improves the computed solution to a real 2681 /// symmetric indefinite system of linear equations 2682 /// AX=B, and provides forward and backward error bounds for the 2683 /// solution. 2684 void syrfs(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, ref f_int info) { 2685 ssyrfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2686 } 2687 void syrfs(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, ref f_int info) { 2688 dsyrfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1); 2689 } 2690 void syrfs(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, ref f_int info) { 2691 csyrfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2692 } 2693 void syrfs(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, ref f_int info) { 2694 zsyrfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2695 } 2696 2697 /// Improves the computed solution to a complex 2698 /// Hermitian indefinite system of linear equations 2699 /// AX=B, and provides forward and backward error bounds for the 2700 /// solution. 2701 void herfs(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, ref f_int info) { 2702 cherfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2703 } 2704 void herfs(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, ref f_int info) { 2705 zherfs_(&uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1); 2706 } 2707 2708 /// Reduces a symmetric matrix to real symmetric tridiagonal 2709 /// form by an orthogonal similarity transformation. 2710 void sytrd(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, ref f_int info) { 2711 ssytrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info, 1); 2712 } 2713 void sytrd(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, ref f_int info) { 2714 dsytrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info, 1); 2715 } 2716 2717 /// Reduces a Hermitian matrix to real symmetric tridiagonal 2718 /// form by an orthogonal/unitary similarity transformation. 2719 void hetrd(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, ref f_int info) { 2720 chetrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info, 1); 2721 } 2722 void hetrd(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, ref f_int info) { 2723 zhetrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info, 1); 2724 } 2725 2726 /// Computes the factorization of a real symmetric-indefinite matrix, 2727 /// using the diagonal pivoting method. 2728 void sytrf(char uplo, f_int n, f_float *a, f_int lda, f_int *ipiv, f_float *work, f_int lwork, ref f_int info) { 2729 ssytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2730 } 2731 void sytrf(char uplo, f_int n, f_double *a, f_int lda, f_int *ipiv, f_double *work, f_int lwork, ref f_int info) { 2732 dsytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2733 } 2734 void sytrf(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *work, f_int lwork, ref f_int info) { 2735 csytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2736 } 2737 void sytrf(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *work, f_int lwork, ref f_int info) { 2738 zsytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2739 } 2740 2741 /// Computes the factorization of a complex Hermitian-indefinite matrix, 2742 /// using the diagonal pivoting method. 2743 void hetrf(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *work, f_int lwork, ref f_int info) { 2744 chetrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2745 } 2746 void hetrf(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *work, f_int lwork, ref f_int info) { 2747 zhetrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info, 1); 2748 } 2749 2750 /// Computes the inverse of a real symmetric indefinite matrix, 2751 /// using the factorization computed by SSYTRF. 2752 void sytri(char uplo, f_int n, f_float *a, f_int lda, f_int *ipiv, f_float *work, ref f_int info) { 2753 ssytri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2754 } 2755 void sytri(char uplo, f_int n, f_double *a, f_int lda, f_int *ipiv, f_double *work, ref f_int info) { 2756 dsytri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2757 } 2758 void sytri(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *work, ref f_int info) { 2759 csytri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2760 } 2761 void sytri(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *work, ref f_int info) { 2762 zsytri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2763 } 2764 2765 /// Computes the inverse of a complex Hermitian indefinite matrix, 2766 /// using the factorization computed by CHETRF. 2767 void hetri(char uplo, f_int n, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *work, ref f_int info) { 2768 chetri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2769 } 2770 void hetri(char uplo, f_int n, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *work, ref f_int info) { 2771 zhetri_(&uplo, &n, a, &lda, ipiv, work, &info, 1); 2772 } 2773 2774 /// Solves a real symmetric indefinite system of linear equations AX=B, 2775 /// using the factorization computed by SSPTRF. 2776 void sytrs(char uplo, f_int n, f_int nrhs, f_float *a, f_int lda, f_int *ipiv, f_float *b, f_int ldb, ref f_int info) { 2777 ssytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2778 } 2779 void sytrs(char uplo, f_int n, f_int nrhs, f_double *a, f_int lda, f_int *ipiv, f_double *b, f_int ldb, ref f_int info) { 2780 dsytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2781 } 2782 void sytrs(char uplo, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 2783 csytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2784 } 2785 void sytrs(char uplo, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 2786 zsytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2787 } 2788 2789 /// Solves a complex Hermitian indefinite system of linear equations AX=B, 2790 /// using the factorization computed by CHPTRF. 2791 void hetrs(char uplo, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_int *ipiv, f_cfloat *b, f_int ldb, ref f_int info) { 2792 chetrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2793 } 2794 void hetrs(char uplo, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_int *ipiv, f_cdouble *b, f_int ldb, ref f_int info) { 2795 zhetrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info, 1); 2796 } 2797 2798 /// Estimates the reciprocal of the condition number of a triangular 2799 /// band matrix, in either the 1-norm or the infinity-norm. 2800 void tbcon(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, ref f_int info) { 2801 stbcon_(&norm, &uplo, &diag, &n, &kd, ab, &ldab, &rcond, work, iwork, &info, 1, 1, 1); 2802 } 2803 void tbcon(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, ref f_int info) { 2804 dtbcon_(&norm, &uplo, &diag, &n, &kd, ab, &ldab, &rcond, work, iwork, &info, 1, 1, 1); 2805 } 2806 void tbcon(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, ref f_int info) { 2807 ctbcon_(&norm, &uplo, &diag, &n, &kd, ab, &ldab, &rcond, work, rwork, &info, 1, 1, 1); 2808 } 2809 void tbcon(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, ref f_int info) { 2810 ztbcon_(&norm, &uplo, &diag, &n, &kd, ab, &ldab, &rcond, work, rwork, &info, 1, 1, 1); 2811 } 2812 2813 /// Provides forward and backward error bounds for the solution 2814 /// of a triangular banded system of linear equations AX=B, 2815 /// A**T X=B or A**H X=B. 2816 void tbrfs(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, ref f_int info) { 2817 stbrfs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 2818 } 2819 void tbrfs(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, ref f_int info) { 2820 dtbrfs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 2821 } 2822 void tbrfs(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, ref f_int info) { 2823 ctbrfs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 2824 } 2825 void tbrfs(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, ref f_int info) { 2826 ztbrfs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 2827 } 2828 2829 /// Solves a triangular banded system of linear equations AX=B, 2830 /// A**T X=B or A**H X=B. 2831 void tbtrs(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, ref f_int info) { 2832 stbtrs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1, 1, 1); 2833 } 2834 void tbtrs(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, ref f_int info) { 2835 dtbtrs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1, 1, 1); 2836 } 2837 void tbtrs(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, ref f_int info) { 2838 ctbtrs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1, 1, 1); 2839 } 2840 void tbtrs(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, ref f_int info) { 2841 ztbtrs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info, 1, 1, 1); 2842 } 2843 2844 /// Computes some or all of the right and/or left generalized eigenvectors 2845 /// of a pair of upper triangular matrices. 2846 void tgevc(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, ref f_int info) { 2847 stgevc_(&side, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info, 1, 1); 2848 } 2849 void tgevc(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, ref f_int info) { 2850 dtgevc_(&side, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info, 1, 1); 2851 } 2852 void tgevc(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, ref f_int info) { 2853 ctgevc_(&side, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info, 1, 1); 2854 } 2855 void tgevc(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, ref f_int info) { 2856 ztgevc_(&side, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info, 1, 1); 2857 } 2858 2859 /// Reorders the generalized real Schur decomposition of a real 2860 /// matrix pair (A,B) using an orthogonal equivalence transformation 2861 /// so that the diagonal block of (A,B) with row index IFST is moved 2862 /// to row ILST. 2863 void tgexc(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, ref f_int info) { 2864 stgexc_(&wantq, &wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &ifst, &ilst, work, &lwork, &info); 2865 } 2866 void tgexc(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, ref f_int info) { 2867 dtgexc_(&wantq, &wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &ifst, &ilst, work, &lwork, &info); 2868 } 2869 void tgexc(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, ref f_int info) { 2870 ctgexc_(&wantq, &wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &ifst, &ilst, &info); 2871 } 2872 void tgexc(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, ref f_int info) { 2873 ztgexc_(&wantq, &wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &ifst, &ilst, &info); 2874 } 2875 2876 /// Reorders the generalized real Schur decomposition of a real 2877 /// matrix pair (A, B) so that a selected cluster of eigenvalues 2878 /// appears in the leading diagonal blocks of the upper quasi-triangular 2879 /// matrix A and the upper triangular B. 2880 void tgsen(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, ref f_int info) { 2881 stgsen_(&ijob, &wantq, &wantz, &select, &n, a, &lda, b, &ldb, alphar, alphai, betav, q, &ldq, z, &ldz, &m, pl, pr, dif, work, &lwork, iwork, &liwork, &info); 2882 } 2883 void tgsen(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, ref f_int info) { 2884 dtgsen_(&ijob, &wantq, &wantz, &select, &n, a, &lda, b, &ldb, alphar, alphai, betav, q, &ldq, z, &ldz, &m, pl, pr, dif, work, &lwork, iwork, &liwork, &info); 2885 } 2886 void tgsen(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, ref f_int info) { 2887 ctgsen_(&ijob, &wantq, &wantz, &select, &n, a, &lda, b, &ldb, alphav, betav, q, &ldq, z, &ldz, &m, pl, pr, dif, work, &lwork, iwork, &liwork, &info); 2888 } 2889 void tgsen(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, ref f_int info) { 2890 ztgsen_(&ijob, &wantq, &wantz, &select, &n, a, &lda, b, &ldb, alphav, betav, q, &ldq, z, &ldz, &m, pl, pr, dif, work, &lwork, iwork, &liwork, &info); 2891 } 2892 2893 /// Computes the generalized singular value decomposition of two real 2894 /// upper triangular (or trapezoidal) matrices as output by SGGSVP. 2895 void tgsja(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, ref f_int info) { 2896 stgsja_(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, a, &lda, b, &ldb, tola, tolb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, &ncycle, &info, 1, 1, 1); 2897 } 2898 void tgsja(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, ref f_int info) { 2899 dtgsja_(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, a, &lda, b, &ldb, tola, tolb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, &ncycle, &info, 1, 1, 1); 2900 } 2901 void tgsja(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, ref f_int info) { 2902 ctgsja_(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, a, &lda, b, &ldb, tola, tolb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, &ncycle, &info, 1, 1, 1); 2903 } 2904 void tgsja(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, ref f_int info) { 2905 ztgsja_(&jobu, &jobv, &jobq, &m, &p, &n, &k, &l, a, &lda, b, &ldb, tola, tolb, alphav, betav, u, &ldu, v, &ldv, q, &ldq, work, &ncycle, &info, 1, 1, 1); 2906 } 2907 2908 /// Estimates reciprocal condition numbers for specified 2909 /// eigenvalues and/or eigenvectors of a matrix pair (A, B) in 2910 /// generalized real Schur canonical form, as returned by SGGES. 2911 void tgsna(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, ref f_int info) { 2912 stgsna_(&job, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, s, dif, &mm, &m, work, &lwork, iwork, &info, 1, 1); 2913 } 2914 void tgsna(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, ref f_int info) { 2915 dtgsna_(&job, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, s, dif, &mm, &m, work, &lwork, iwork, &info, 1, 1); 2916 } 2917 void tgsna(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, ref f_int info) { 2918 ctgsna_(&job, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, s, dif, &mm, &m, work, &lwork, iwork, &info, 1, 1); 2919 } 2920 void tgsna(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, ref f_int info) { 2921 ztgsna_(&job, &howmny, &select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr, s, dif, &mm, &m, work, &lwork, iwork, &info, 1, 1); 2922 } 2923 2924 /// Solves the generalized Sylvester equation. 2925 void tgsyl(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, ref f_int info) { 2926 stgsyl_(&trans, &ijob, &m, &n, a, &lda, b, &ldb, c, &ldc, d, &ldd, e, &lde, f, &ldf, scale, dif, work, &lwork, iwork, &info, 1); 2927 } 2928 void tgsyl(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, ref f_int info) { 2929 dtgsyl_(&trans, &ijob, &m, &n, a, &lda, b, &ldb, c, &ldc, d, &ldd, e, &lde, f, &ldf, scale, dif, work, &lwork, iwork, &info, 1); 2930 } 2931 void tgsyl(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, ref f_int info) { 2932 ctgsyl_(&trans, &ijob, &m, &n, a, &lda, b, &ldb, c, &ldc, d, &ldd, e, &lde, f, &ldf, scale, dif, work, &lwork, iwork, &info, 1); 2933 } 2934 void tgsyl(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, ref f_int info) { 2935 ztgsyl_(&trans, &ijob, &m, &n, a, &lda, b, &ldb, c, &ldc, d, &ldd, e, &lde, f, &ldf, scale, dif, work, &lwork, iwork, &info, 1); 2936 } 2937 2938 /// Estimates the reciprocal of the condition number of a triangular 2939 /// matrix in packed storage, in either the 1-norm or the infinity-norm. 2940 void tpcon(char norm, char uplo, char diag, f_int n, f_float *ap, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 2941 stpcon_(&norm, &uplo, &diag, &n, ap, &rcond, work, iwork, &info, 1, 1, 1); 2942 } 2943 void tpcon(char norm, char uplo, char diag, f_int n, f_double *ap, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 2944 dtpcon_(&norm, &uplo, &diag, &n, ap, &rcond, work, iwork, &info, 1, 1, 1); 2945 } 2946 void tpcon(char norm, char uplo, char diag, f_int n, f_cfloat *ap, f_float rcond, f_cfloat *work, f_float *rwork, ref f_int info) { 2947 ctpcon_(&norm, &uplo, &diag, &n, ap, &rcond, work, rwork, &info, 1, 1, 1); 2948 } 2949 void tpcon(char norm, char uplo, char diag, f_int n, f_cdouble *ap, f_double rcond, f_cdouble *work, f_double *rwork, ref f_int info) { 2950 ztpcon_(&norm, &uplo, &diag, &n, ap, &rcond, work, rwork, &info, 1, 1, 1); 2951 } 2952 2953 /// Provides forward and backward error bounds for the solution 2954 /// of a triangular system of linear equations AX=B, A**T X=B or 2955 /// A**H X=B, where A is held in packed storage. 2956 void tprfs(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, ref f_int info) { 2957 stprfs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 2958 } 2959 void tprfs(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, ref f_int info) { 2960 dtprfs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 2961 } 2962 void tprfs(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, ref f_int info) { 2963 ctprfs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 2964 } 2965 void tprfs(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, ref f_int info) { 2966 ztprfs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 2967 } 2968 2969 /// Computes the inverse of a triangular matrix in packed storage. 2970 void tptri(char uplo, char diag, f_int n, f_float *ap, ref f_int info) { 2971 stptri_(&uplo, &diag, &n, ap, &info, 1, 1); 2972 } 2973 void tptri(char uplo, char diag, f_int n, f_double *ap, ref f_int info) { 2974 dtptri_(&uplo, &diag, &n, ap, &info, 1, 1); 2975 } 2976 void tptri(char uplo, char diag, f_int n, f_cfloat *ap, ref f_int info) { 2977 ctptri_(&uplo, &diag, &n, ap, &info, 1, 1); 2978 } 2979 void tptri(char uplo, char diag, f_int n, f_cdouble *ap, ref f_int info) { 2980 ztptri_(&uplo, &diag, &n, ap, &info, 1, 1); 2981 } 2982 2983 /// Solves a triangular system of linear equations AX=B, 2984 /// A**T X=B or A**H X=B, where A is held in packed storage. 2985 void tptrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_float *ap, f_float *b, f_int ldb, ref f_int info) { 2986 stptrs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, &info, 1, 1, 1); 2987 } 2988 void tptrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_double *ap, f_double *b, f_int ldb, ref f_int info) { 2989 dtptrs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, &info, 1, 1, 1); 2990 } 2991 void tptrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_cfloat *ap, f_cfloat *b, f_int ldb, ref f_int info) { 2992 ctptrs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, &info, 1, 1, 1); 2993 } 2994 void tptrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_cdouble *ap, f_cdouble *b, f_int ldb, ref f_int info) { 2995 ztptrs_(&uplo, &trans, &diag, &n, &nrhs, ap, b, &ldb, &info, 1, 1, 1); 2996 } 2997 2998 /// Estimates the reciprocal of the condition number of a triangular 2999 /// matrix, in either the 1-norm or the infinity-norm. 3000 void trcon(char norm, char uplo, char diag, f_int n, f_float *a, f_int lda, f_float rcond, f_float *work, f_int *iwork, ref f_int info) { 3001 strcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, iwork, &info, 1, 1, 1); 3002 } 3003 void trcon(char norm, char uplo, char diag, f_int n, f_double *a, f_int lda, f_double rcond, f_double *work, f_int *iwork, ref f_int info) { 3004 dtrcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, iwork, &info, 1, 1, 1); 3005 } 3006 void trcon(char norm, char uplo, char diag, f_int n, f_cfloat *a, f_int lda, f_float rcond, f_cfloat *work, f_float *rwork, ref f_int info) { 3007 ctrcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, rwork, &info, 1, 1, 1); 3008 } 3009 void trcon(char norm, char uplo, char diag, f_int n, f_cdouble *a, f_int lda, f_double rcond, f_cdouble *work, f_double *rwork, ref f_int info) { 3010 ztrcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, rwork, &info, 1, 1, 1); 3011 } 3012 3013 /// Computes some or all of the right and/or left eigenvectors of 3014 /// an upper quasi-triangular matrix. 3015 void trevc(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, ref f_int info) { 3016 strevc_(&side, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info, 1, 1); 3017 } 3018 void trevc(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, ref f_int info) { 3019 dtrevc_(&side, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info, 1, 1); 3020 } 3021 void trevc(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, ref f_int info) { 3022 ctrevc_(&side, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info, 1, 1); 3023 } 3024 void trevc(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, ref f_int info) { 3025 ztrevc_(&side, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info, 1, 1); 3026 } 3027 3028 /// Reorders the Schur factorization of a matrix by an orthogonal 3029 /// similarity transformation. 3030 void trexc(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, ref f_int info) { 3031 strexc_(&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, work, &info, 1); 3032 } 3033 void trexc(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, ref f_int info) { 3034 dtrexc_(&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, work, &info, 1); 3035 } 3036 void trexc(char compq, f_int n, f_cfloat *t, f_int ldt, f_cfloat *q, f_int ldq, f_int ifst, f_int ilst, ref f_int info) { 3037 ctrexc_(&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, &info, 1); 3038 } 3039 void trexc(char compq, f_int n, f_cdouble *t, f_int ldt, f_cdouble *q, f_int ldq, f_int ifst, f_int ilst, ref f_int info) { 3040 ztrexc_(&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, &info, 1); 3041 } 3042 3043 /// Provides forward and backward error bounds for the solution 3044 /// of a triangular system of linear equations A X=B, A**T X=B or 3045 /// A**H X=B. 3046 void trrfs(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, ref f_int info) { 3047 strrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 3048 } 3049 void trrfs(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, ref f_int info) { 3050 dtrrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, ferr, berr, work, iwork, &info, 1, 1, 1); 3051 } 3052 void trrfs(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, ref f_int info) { 3053 ctrrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 3054 } 3055 void trrfs(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, ref f_int info) { 3056 ztrrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info, 1, 1, 1); 3057 } 3058 3059 /// Reorders the Schur factorization of a matrix in order to find 3060 /// an orthonormal basis of a right invariant subspace corresponding 3061 /// to selected eigenvalues, and returns reciprocal condition numbers 3062 /// (sensitivities) of the average of the cluster of eigenvalues 3063 /// and of the invariant subspace. 3064 void trsen(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, ref f_int info) { 3065 strsen_(&job, &compq, &select, &n, t, &ldt, q, &ldq, wr, wi, &m, s, sep, work, &lwork, iwork, &liwork, &info, 1, 1); 3066 } 3067 void trsen(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, ref f_int info) { 3068 dtrsen_(&job, &compq, &select, &n, t, &ldt, q, &ldq, wr, wi, &m, s, sep, work, &lwork, iwork, &liwork, &info, 1, 1); 3069 } 3070 void trsen(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, ref f_int info) { 3071 ctrsen_(&job, &compq, &select, &n, t, &ldt, q, &ldq, w, &m, s, sep, work, &lwork, &info, 1, 1); 3072 } 3073 void trsen(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, ref f_int info) { 3074 ztrsen_(&job, &compq, &select, &n, t, &ldt, q, &ldq, w, &m, s, sep, work, &lwork, &info, 1, 1); 3075 } 3076 3077 /// Estimates the reciprocal condition numbers (sensitivities) 3078 /// of selected eigenvalues and eigenvectors of an upper 3079 /// quasi-triangular matrix. 3080 void trsna(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, ref f_int info) { 3081 strsna_(&job, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, s, sep, &mm, &m, work, &ldwork, iwork, &info, 1, 1); 3082 } 3083 void trsna(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, ref f_int info) { 3084 dtrsna_(&job, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, s, sep, &mm, &m, work, &ldwork, iwork, &info, 1, 1); 3085 } 3086 void trsna(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, ref f_int info) { 3087 ctrsna_(&job, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, s, sep, &mm, &m, work, &ldwork, rwork, &info, 1, 1); 3088 } 3089 void trsna(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, ref f_int info) { 3090 ztrsna_(&job, &howmny, &select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, s, sep, &mm, &m, work, &ldwork, rwork, &info, 1, 1); 3091 } 3092 3093 /// Solves the Sylvester matrix equation A X +/- X B=C where A 3094 /// and B are upper quasi-triangular, and may be transposed. 3095 void trsyl(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, ref f_int info) { 3096 strsyl_(&trana, &tranb, &isgn, &m, &n, a, &lda, b, &ldb, c, &ldc, scale, &info, 1, 1); 3097 } 3098 void trsyl(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, ref f_int info) { 3099 dtrsyl_(&trana, &tranb, &isgn, &m, &n, a, &lda, b, &ldb, c, &ldc, scale, &info, 1, 1); 3100 } 3101 void trsyl(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, ref f_int info) { 3102 ctrsyl_(&trana, &tranb, &isgn, &m, &n, a, &lda, b, &ldb, c, &ldc, scale, &info, 1, 1); 3103 } 3104 void trsyl(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, ref f_int info) { 3105 ztrsyl_(&trana, &tranb, &isgn, &m, &n, a, &lda, b, &ldb, c, &ldc, scale, &info, 1, 1); 3106 } 3107 3108 /// Computes the inverse of a triangular matrix. 3109 void trtri(char uplo, char diag, f_int n, f_float *a, f_int lda, ref f_int info) { 3110 strtri_(&uplo, &diag, &n, a, &lda, &info, 1, 1); 3111 } 3112 void trtri(char uplo, char diag, f_int n, f_double *a, f_int lda, ref f_int info) { 3113 dtrtri_(&uplo, &diag, &n, a, &lda, &info, 1, 1); 3114 } 3115 void trtri(char uplo, char diag, f_int n, f_cfloat *a, f_int lda, ref f_int info) { 3116 ctrtri_(&uplo, &diag, &n, a, &lda, &info, 1, 1); 3117 } 3118 void trtri(char uplo, char diag, f_int n, f_cdouble *a, f_int lda, ref f_int info) { 3119 ztrtri_(&uplo, &diag, &n, a, &lda, &info, 1, 1); 3120 } 3121 3122 /// Solves a triangular system of linear equations AX=B, 3123 /// A**T X=B or A**H X=B. 3124 void trtrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_float *a, f_int lda, f_float *b, f_int ldb, ref f_int info) { 3125 strtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info, 1, 1, 1); 3126 } 3127 void trtrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_double *a, f_int lda, f_double *b, f_int ldb, ref f_int info) { 3128 dtrtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info, 1, 1, 1); 3129 } 3130 void trtrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_cfloat *a, f_int lda, f_cfloat *b, f_int ldb, ref f_int info) { 3131 ctrtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info, 1, 1, 1); 3132 } 3133 void trtrs(char uplo, char trans, char diag, f_int n, f_int nrhs, f_cdouble *a, f_int lda, f_cdouble *b, f_int ldb, ref f_int info) { 3134 ztrtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info, 1, 1, 1); 3135 } 3136 3137 /// Computes an RQ factorization of an upper trapezoidal matrix. 3138 void tzrqf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, ref f_int info) { 3139 stzrqf_(&m, &n, a, &lda, tau, &info); 3140 } 3141 void tzrqf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, ref f_int info) { 3142 dtzrqf_(&m, &n, a, &lda, tau, &info); 3143 } 3144 void tzrqf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, ref f_int info) { 3145 ctzrqf_(&m, &n, a, &lda, tau, &info); 3146 } 3147 void tzrqf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, ref f_int info) { 3148 ztzrqf_(&m, &n, a, &lda, tau, &info); 3149 } 3150 3151 /// Computes an RZ factorization of an upper trapezoidal matrix 3152 /// (blocked version of STZRQF). 3153 void tzrzf(f_int m, f_int n, f_float *a, f_int lda, f_float *tau, f_float *work, f_int lwork, ref f_int info) { 3154 stzrzf_(&m, &n, a, &lda, tau, work, &lwork, &info); 3155 } 3156 void tzrzf(f_int m, f_int n, f_double *a, f_int lda, f_double *tau, f_double *work, f_int lwork, ref f_int info) { 3157 dtzrzf_(&m, &n, a, &lda, tau, work, &lwork, &info); 3158 } 3159 void tzrzf(f_int m, f_int n, f_cfloat *a, f_int lda, f_cfloat *tau, f_cfloat *work, f_int lwork, ref f_int info) { 3160 ctzrzf_(&m, &n, a, &lda, tau, work, &lwork, &info); 3161 } 3162 void tzrzf(f_int m, f_int n, f_cdouble *a, f_int lda, f_cdouble *tau, f_cdouble *work, f_int lwork, ref f_int info) { 3163 ztzrzf_(&m, &n, a, &lda, tau, work, &lwork, &info); 3164 } 3165 3166 3167 /// Multiplies a general matrix by the unitary 3168 /// transformation matrix from a reduction to tridiagonal form 3169 /// determined by CHPTRD. 3170 void upmtr(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, ref f_int info) { 3171 cupmtr_(&side, &uplo, &trans, &m, &n, ap, tau, c, &ldc, work, &info, 1, 1, 1); 3172 } 3173 void upmtr(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, ref f_int info) { 3174 zupmtr_(&side, &uplo, &trans, &m, &n, ap, tau, c, &ldc, work, &info, 1, 1, 1); 3175 } 3176 3177 3178 //------------------------------------ 3179 // ----- MISC routines ----- 3180 //------------------------------------ 3181 3182 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) { 3183 return ilaenv_(&ispec, name, opts, &n1, &n2, &n3, &n4, len_name, len_opts); 3184 } 3185 void ilaenvset(f_int ispec, char *name, char *opts, f_int n1, f_int n2, f_int n3, f_int n4, f_int nvalue, ref f_int info, f_int len_name, f_int len_opts) { 3186 // hmm this doesn't seem to exist in the lib in -g debug builds for some reason 3187 //ilaenvset_(&ispec, name, opts, &n1, &n2, &n3, &n4, &nvalue, &info, len_name, len_opts); 3188 } 3189 3190 /// 3191 f_float slamch(char[]cmach) { 3192 return slamch_(cmach.ptr, toInt(cmach.length)); 3193 } 3194 f_double dlamch(char[]cmach) { 3195 return dlamch_(cmach.ptr, toInt(cmach.length)); 3196 } 3197 3198 version(netlib_clapack) 3199 { 3200 /// 3201 lapack_float_ret_t second() { 3202 return second_(); 3203 } 3204 f_double secnd() { 3205 return dsecnd_(); 3206 } 3207 }