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