1 // @HEADER
2 // ***********************************************************************
3 //
4 //                    Teuchos: Common Tools Package
5 //                 Copyright (2004) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #include <vector>
43 #include "Teuchos_ConfigDefs.hpp"
44 #include "Teuchos_ScalarTraits.hpp"
45 #include "Teuchos_LAPACK.hpp"
46 #include "Teuchos_LAPACK_wrappers.hpp"
47 #ifdef HAVE_TEUCHOSCORE_QUADMATH
48 #  include "Teuchos_Details_Lapack128.hpp" // impl for __float128
49 #endif // HAVE_TEUCHOSCORE_QUADMATH
50 
51 /* for INTEL_CXML, the second arg may need to be changed to 'one'.  If so
52 the appropriate declaration of one will need to be added back into
53 functions that include the macro:
54 */
55 
56 #ifdef CHAR_MACRO
57 #undef CHAR_MACRO
58 #endif
59 #if defined (INTEL_CXML)
60 #define CHAR_MACRO(char_var) &char_var, one
61 #else
62 #define CHAR_MACRO(char_var) &char_var
63 #endif
64 
65 #ifdef CHARPTR_MACRO
66 #undef CHARPR_MACRO
67 #endif
68 #if defined (INTEL_CXML)
69 #define CHARPTR_MACRO(charptr_var) charptr_var, one
70 #else
71 #define CHARPTR_MACRO(charptr_var) charptr_var
72 #endif
73 
74 namespace {
75 
76 #if defined (INTEL_CXML)
77         unsigned int one=1;
78 #endif
79 
80 // Use a wrapper function to handle calling ILAENV().  This removes
81 // duplicaiton and avoid name lookup problems with member functions called
82 // ILAENV() trying to call nonmember functions called ILAENV() (which does not
83 // work on Intel compiler on Windows, see Trilinos bug 5762).
84 inline
ilaenv_wrapper(const int * ispec,const char * name,const unsigned int & name_length,const char * opts,const unsigned int & opts_length,const int * N1,const int * N2,const int * N3,const int * N4)85 int ilaenv_wrapper(
86   const int* ispec, const char* name, const unsigned int& name_length,
87   const char* opts, const unsigned int& opts_length,
88   const int* N1, const int* N2, const int* N3, const int* N4 )
89 {
90 #if defined (INTEL_CXML)
91     return ILAENV_F77(ispec, name, name_length, opts, opts_length, N1, N2, N3, N4 );
92 #else
93     return ILAENV_F77(ispec, name, opts, N1, N2, N3, N4, name_length, opts_length );
94 #endif
95 }
96 
97 } // namespace
98 
99 
100 
101 extern "C" {
102 
103 
104 typedef int (*gees_nullfptr_t)(double*,double*);
105 
106 
107 } // extern "C"
108 
109 
110 namespace Teuchos
111 {
112   // BEGIN INT, FLOAT SPECIALIZATION IMPLEMENTATION //
113 
PTTRF(const int & n,float * d,float * e,int * info) const114   void LAPACK<int, float>::PTTRF(const int& n, float* d, float* e, int* info) const
115   { SPTTRF_F77(&n,d,e,info); }
116 
117 
PTTRS(const int & n,const int & nrhs,const float * d,const float * e,float * B,const int & ldb,int * info) const118   void LAPACK<int, float>::PTTRS(const int& n, const int& nrhs, const float* d, const float* e, float* B, const int& ldb, int* info) const
119   { SPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
120 
121 
POTRF(const char & UPLO,const int & n,float * A,const int & lda,int * info) const122   void LAPACK<int, float>::POTRF(const char& UPLO, const int& n, float* A, const int& lda, int* info) const
123   { SPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
124 
125 
POTRS(const char & UPLO,const int & n,const int & nrhs,const float * A,const int & lda,float * B,const int & ldb,int * info) const126   void LAPACK<int, float>::POTRS(const char& UPLO, const int& n, const int& nrhs, const float* A, const int& lda, float* B, const int& ldb, int* info) const
127   { SPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
128 
129 
POTRI(const char & UPLO,const int & n,float * A,const int & lda,int * info) const130   void LAPACK<int, float>::POTRI(const char& UPLO, const int& n, float* A, const int& lda, int* info) const
131   { SPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
132 
133 
POCON(const char & UPLO,const int & n,const float * A,const int & lda,const float & anorm,float * rcond,float * WORK,int * IWORK,int * info) const134   void LAPACK<int, float>::POCON(const char& UPLO, const int& n, const float* A, const int& lda, const float& anorm, float* rcond, float* WORK, int* IWORK, int* info) const
135   { SPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
136 
137 
POSV(const char & UPLO,const int & n,const int & nrhs,float * A,const int & lda,float * B,const int & ldb,int * info) const138   void LAPACK<int, float>::POSV(const char& UPLO, const int& n, const int& nrhs, float* A, const int& lda, float* B, const int& ldb, int* info) const
139   { SPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
140 
141 
POEQU(const int & n,const float * A,const int & lda,float * S,float * scond,float * amax,int * info) const142   void LAPACK<int, float>::POEQU(const int& n, const float* A, const int& lda, float* S, float* scond, float* amax, int* info) const
143   { SPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
144 
145 
PORFS(const char & UPLO,const int & n,const int & nrhs,float * A,const int & lda,const float * AF,const int & ldaf,const float * B,const int & ldb,float * X,const int & ldx,float * FERR,float * BERR,float * WORK,int * IWORK,int * info) const146   void LAPACK<int, float>::PORFS(const char& UPLO, const int& n, const int& nrhs, float* A, const int& lda, const float* AF, const int& ldaf, const float* B, const int& ldb, float* X, const int& ldx, float* FERR, float* BERR, float* WORK, int* IWORK, int* info) const
147   { SPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
148 
POSVX(const char & FACT,const char & UPLO,const int & n,const int & nrhs,float * A,const int & lda,float * AF,const int & ldaf,char * EQUED,float * S,float * B,const int & ldb,float * X,const int & ldx,float * rcond,float * FERR,float * BERR,float * WORK,int * IWORK,int * info) const149   void LAPACK<int, float>::POSVX(const char& FACT, const char& UPLO, const int& n, const int& nrhs, float* A, const int& lda, float* AF, const int& ldaf, char* EQUED, float* S, float* B, const int& ldb, float* X, const int& ldx, float* rcond, float* FERR, float* BERR, float* WORK, int* IWORK, int* info) const
150   { SPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
151 
152 
GELS(const char & TRANS,const int & m,const int & n,const int & nrhs,float * A,const int & lda,float * B,const int & ldb,float * WORK,const int & lwork,int * info) const153   void LAPACK<int,float>::GELS(const char& TRANS, const int& m, const int& n, const int& nrhs, float* A, const int& lda, float* B, const int& ldb, float* WORK, const int& lwork, int* info) const
154   { SGELS_F77(CHAR_MACRO(TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
155 
GELSS(const int & m,const int & n,const int & nrhs,float * A,const int & lda,float * B,const int & ldb,float * S,const float & rcond,int * rank,float * WORK,const int & lwork,float * rwork,int * info) const156   void LAPACK<int,float>::GELSS (const int& m, const int& n, const int& nrhs, float* A, const int& lda, float* B, const int& ldb, float* S, const float& rcond, int* rank, float* WORK, const int& lwork, float* rwork, int* info) const
157   {
158     (void) rwork;
159     SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
160   }
161 
GELSS(const int & m,const int & n,const int & nrhs,float * A,const int & lda,float * B,const int & ldb,float * S,const float & rcond,int * rank,float * WORK,const int & lwork,int * info) const162   void LAPACK<int,float>::GELSS(const int& m, const int& n, const int& nrhs, float* A, const int& lda, float* B, const int& ldb, float* S, const float& rcond, int* rank, float* WORK, const int& lwork, int* info) const
163   { SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
164 
165 
GGLSE(const int & m,const int & n,const int & p,float * A,const int & lda,float * B,const int & ldb,float * C,float * D,float * X,float * WORK,const int & lwork,int * info) const166   void LAPACK<int,float>::GGLSE(const int& m, const int& n, const int& p, float* A, const int& lda, float* B, const int& ldb, float* C, float* D, float* X, float* WORK, const int& lwork, int* info) const
167   { SGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
168 
169 
GEQRF(const int & m,const int & n,float * A,const int & lda,float * TAU,float * WORK,const int & lwork,int * info) const170   void LAPACK<int,float>::GEQRF( const int& m, const int& n, float* A, const int& lda, float* TAU, float* WORK, const int& lwork, int* info) const
171   { SGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
172 
GEQR2(const int & m,const int & n,float A[],const int & lda,float TAU[],float WORK[],int * const info) const173   void LAPACK<int,float>::GEQR2 (const int& m, const int& n, float A[], const int& lda, float TAU[], float WORK[], int* const info) const
174   {
175     SGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
176   }
177 
GETRF(const int & m,const int & n,float * A,const int & lda,int * IPIV,int * info) const178   void LAPACK<int,float>::GETRF(const int& m, const int& n, float* A, const int& lda, int* IPIV, int* info) const
179   { SGETRF_F77(&m, &n, A, &lda, IPIV, info); }
180 
181 
GETRS(const char & TRANS,const int & n,const int & nrhs,const float * A,const int & lda,const int * IPIV,float * B,const int & ldb,int * info) const182   void LAPACK<int,float>::GETRS(const char& TRANS, const int& n, const int& nrhs, const float* A, const int& lda, const int* IPIV, float* B, const int& ldb, int* info) const
183   { SGETRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
184 
185 
LASCL(const char & TYPE,const int & kl,const int & ku,const float & cfrom,const float & cto,const int & m,const int & n,float * A,const int & lda,int * info) const186   void LAPACK<int,float>::LASCL(const char& TYPE, const int& kl, const int& ku, const float& cfrom, const float& cto, const int& m, const int& n, float* A, const int& lda, int* info) const
187   { SLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
188 
189   void
190   LAPACK<int,float>::
GEQP3(const int & m,const int & n,float * A,const int & lda,int * jpvt,float * TAU,float * WORK,const int & lwork,float * RWORK,int * info) const191   GEQP3 (const int& m,
192          const int& n,
193          float* A,
194          const int& lda,
195          int* jpvt,
196          float* TAU,
197          float* WORK,
198          const int& lwork,
199          float* RWORK,
200          int* info) const
201   {
202     (void) RWORK;
203     SGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
204   }
205 
206   void LAPACK<int, float>::
LASWP(const int & N,float A[],const int & LDA,const int & K1,const int & K2,const int IPIV[],const int & INCX) const207   LASWP (const int& N,
208          float A[],
209          const int& LDA,
210          const int& K1,
211          const int& K2,
212          const int IPIV[],
213          const int& INCX) const
214   {
215     SLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
216   }
217 
GBTRF(const int & m,const int & n,const int & kl,const int & ku,float * A,const int & lda,int * IPIV,int * info) const218   void LAPACK<int,float>::GBTRF(const int& m, const int& n, const int& kl, const int& ku, float* A, const int& lda, int* IPIV, int* info) const
219   { SGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
220 
221 
GBTRS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const float * A,const int & lda,const int * IPIV,float * B,const int & ldb,int * info) const222   void LAPACK<int,float>::GBTRS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const float* A, const int& lda, const int* IPIV, float* B, const int& ldb, int* info) const
223   { SGBTRS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
224 
225 
GTTRF(const int & n,float * dl,float * d,float * du,float * du2,int * IPIV,int * info) const226   void LAPACK<int,float>::GTTRF(const int& n, float* dl, float* d, float* du, float* du2, int* IPIV, int* info) const
227   { SGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
228 
229 
GTTRS(const char & TRANS,const int & n,const int & nrhs,const float * dl,const float * d,const float * du,const float * du2,const int * IPIV,float * B,const int & ldb,int * info) const230   void LAPACK<int,float>::GTTRS(const char& TRANS, const int& n, const int& nrhs, const float* dl, const float* d, const float* du, const float* du2, const int* IPIV, float* B, const int& ldb, int* info) const
231   { SGTTRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
232 
233 
GETRI(const int & n,float * A,const int & lda,const int * IPIV,float * WORK,const int & lwork,int * info) const234   void LAPACK<int,float>::GETRI(const int& n, float* A, const int& lda, const int* IPIV, float* WORK, const int& lwork, int* info) const
235   { SGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
236 
237   void
LATRS(const char & UPLO,const char & TRANS,const char & DIAG,const char & NORMIN,const int & N,float * A,const int & LDA,float * X,float * SCALE,float * CNORM,int * INFO) const238   LAPACK<int, float>::LATRS (const char& UPLO,
239                              const char& TRANS,
240                              const char& DIAG,
241                              const char& NORMIN,
242                              const int& N,
243                              float* A,
244                              const int& LDA,
245                              float* X,
246                              float* SCALE,
247                              float* CNORM,
248                              int* INFO) const
249   {
250     SLATRS_F77(CHAR_MACRO(UPLO),
251                CHAR_MACRO(TRANS),
252                CHAR_MACRO(DIAG),
253                CHAR_MACRO(NORMIN),
254                &N,
255                A,
256                &LDA,
257                X,
258                SCALE,
259                CNORM,
260                INFO);
261   }
262 
263 
GECON(const char & NORM,const int & n,const float * A,const int & lda,const float & anorm,float * rcond,float * WORK,int * IWORK,int * info) const264   void LAPACK<int,float>::GECON(const char& NORM, const int& n, const float* A, const int& lda, const float& anorm, float* rcond, float* WORK, int* IWORK, int* info) const
265   { SGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
266 
267 
GBCON(const char & NORM,const int & n,const int & kl,const int & ku,const float * A,const int & lda,int * IPIV,const float & anorm,float * rcond,float * WORK,int * IWORK,int * info) const268   void LAPACK<int,float>::GBCON(const char& NORM, const int& n, const int& kl, const int& ku, const float* A, const int& lda, int* IPIV, const float& anorm, float* rcond, float* WORK, int* IWORK, int* info) const
269   { SGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
270 
271 
LANGB(const char & NORM,const int & n,const int & kl,const int & ku,const float * A,const int & lda,float * WORK) const272   float LAPACK<int,float>::LANGB(const char& NORM, const int& n, const int& kl, const int& ku, const float* A, const int& lda, float* WORK) const
273   { return( SLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
274 
275 
GESV(const int & n,const int & nrhs,float * A,const int & lda,int * IPIV,float * B,const int & ldb,int * info) const276   void LAPACK<int,float>::GESV(const int& n, const int& nrhs, float* A, const int& lda, int* IPIV, float* B, const int& ldb, int* info) const
277   { SGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
278 
279 
GEEQU(const int & m,const int & n,const float * A,const int & lda,float * R,float * C,float * rowcond,float * colcond,float * amax,int * info) const280   void LAPACK<int,float>::GEEQU(const int& m, const int& n, const float* A, const int& lda, float* R, float* C, float* rowcond, float* colcond, float* amax, int* info) const
281   { SGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
282 
283 
GERFS(const char & TRANS,const int & n,const int & nrhs,const float * A,const int & lda,const float * AF,const int & ldaf,const int * IPIV,const float * B,const int & ldb,float * X,const int & ldx,float * FERR,float * BERR,float * WORK,int * IWORK,int * info) const284   void LAPACK<int,float>::GERFS(const char& TRANS, const int& n, const int& nrhs, const float* A, const int& lda, const float* AF, const int& ldaf, const int* IPIV, const float* B, const int& ldb, float* X, const int& ldx, float* FERR, float* BERR, float* WORK, int* IWORK, int* info) const
285   { SGERFS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
286 
287 
GBEQU(const int & m,const int & n,const int & kl,const int & ku,const float * A,const int & lda,float * R,float * C,float * rowcond,float * colcond,float * amax,int * info) const288   void LAPACK<int,float>::GBEQU(const int& m, const int& n, const int& kl, const int& ku, const float* A, const int& lda, float* R, float* C, float* rowcond, float* colcond, float* amax, int* info) const
289   { SGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
290 
291 
GBRFS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const float * A,const int & lda,const float * AF,const int & ldaf,const int * IPIV,const float * B,const int & ldb,float * X,const int & ldx,float * FERR,float * BERR,float * WORK,int * IWORK,int * info) const292   void LAPACK<int,float>::GBRFS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const float* A, const int& lda, const float* AF, const int& ldaf, const int* IPIV, const float* B, const int& ldb, float* X, const int& ldx, float* FERR, float* BERR, float* WORK, int* IWORK, int* info) const
293   { SGBRFS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
294 
GESVX(const char & FACT,const char & TRANS,const int & n,const int & nrhs,float * A,const int & lda,float * AF,const int & ldaf,int * IPIV,char * EQUED,float * R,float * C,float * B,const int & ldb,float * X,const int & ldx,float * rcond,float * FERR,float * BERR,float * WORK,int * IWORK,int * info) const295   void LAPACK<int,float>::GESVX(const char& FACT, const char& TRANS, const int& n, const int& nrhs, float* A, const int& lda, float* AF, const int& ldaf, int* IPIV, char* EQUED, float* R, float* C, float* B, const int& ldb, float* X, const int& ldx, float* rcond, float* FERR, float* BERR, float* WORK, int* IWORK, int* info) const
296   { SGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
297 
298 
SYTRD(const char & UPLO,const int & n,float * A,const int & lda,float * D,float * E,float * TAU,float * WORK,const int & lwork,int * info) const299   void LAPACK<int,float>::SYTRD(const char& UPLO, const int& n, float* A, const int& lda, float* D, float* E, float* TAU, float* WORK, const int& lwork, int* info) const
300   { SSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
301 
302 
GEHRD(const int & n,const int & ilo,const int & ihi,float * A,const int & lda,float * TAU,float * WORK,const int & lwork,int * info) const303   void LAPACK<int,float>::GEHRD(const int& n, const int& ilo, const int& ihi, float* A, const int& lda, float* TAU, float* WORK, const int& lwork, int* info) const
304   { SGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
305 
306 
TRTRS(const char & UPLO,const char & TRANS,const char & DIAG,const int & n,const int & nrhs,const float * A,const int & lda,float * B,const int & ldb,int * info) const307   void LAPACK<int,float>::TRTRS(const char& UPLO, const char& TRANS, const char& DIAG, const int& n, const int& nrhs, const float* A, const int& lda, float* B, const int& ldb, int* info) const
308   { STRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
309 
310 
TRTRI(const char & UPLO,const char & DIAG,const int & n,const float * A,const int & lda,int * info) const311   void LAPACK<int,float>::TRTRI(const char& UPLO, const char& DIAG, const int& n, const float* A, const int& lda, int* info) const
312   { STRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
313 
314 
SPEV(const char & JOBZ,const char & UPLO,const int & n,float * AP,float * W,float * Z,const int & ldz,float * WORK,int * info) const315   void LAPACK<int,float>::SPEV(const char& JOBZ, const char& UPLO, const int& n, float* AP, float* W, float* Z, const int& ldz, float* WORK, int* info) const
316   { SSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
317 
318 
SYEV(const char & JOBZ,const char & UPLO,const int & n,float * A,const int & lda,float * W,float * WORK,const int & lwork,int * info) const319   void LAPACK<int,float>::SYEV(const char& JOBZ, const char& UPLO, const int& n, float* A, const int& lda, float* W, float* WORK, const int& lwork, int* info) const
320   { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
321 
322 
SYGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,float * A,const int & lda,float * B,const int & ldb,float * W,float * WORK,const int & lwork,int * info) const323   void LAPACK<int,float>::SYGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, float* A, const int& lda, float* B, const int& ldb, float* W, float* WORK, const int& lwork, int* info) const
324   { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
325 
326 
HEEV(const char & JOBZ,const char & UPLO,const int & n,float * A,const int & lda,float * W,float * WORK,const int & lwork,float *,int * info) const327   void LAPACK<int,float>::HEEV(const char& JOBZ, const char& UPLO, const int& n, float* A, const int& lda, float* W, float* WORK, const int& lwork, float* /* RWORK */, int* info) const
328   { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
329 
330 
HEGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,float * A,const int & lda,float * B,const int & ldb,float * W,float * WORK,const int & lwork,float *,int * info) const331   void LAPACK<int,float>::HEGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, float* A, const int& lda, float* B, const int& ldb, float* W, float* WORK, const int& lwork, float* /* RWORK */, int* info) const
332   { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
333 
334 
STEQR(const char & COMPZ,const int & n,float * D,float * E,float * Z,const int & ldz,float * WORK,int * info) const335   void LAPACK<int,float>::STEQR(const char& COMPZ, const int& n, float* D, float* E, float* Z, const int& ldz, float* WORK, int* info) const
336   { SSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
337 
338 
PTEQR(const char & COMPZ,const int & n,float * D,float * E,float * Z,const int & ldz,float * WORK,int * info) const339   void LAPACK<int,float>::PTEQR(const char& COMPZ, const int& n, float* D, float* E, float* Z, const int& ldz, float* WORK, int* info) const
340   { SPTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
341 
342 
HSEQR(const char & JOB,const char & COMPZ,const int & n,const int & ilo,const int & ihi,float * H,const int & ldh,float * WR,float * WI,float * Z,const int & ldz,float * WORK,const int & lwork,int * info) const343   void LAPACK<int, float>::HSEQR(const char& JOB, const char& COMPZ, const int& n, const int& ilo, const int& ihi, float* H, const int& ldh, float* WR, float* WI, float* Z, const int& ldz, float* WORK, const int& lwork, int* info) const
344   { SHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info); }
345 
346 
GEES(const char & JOBVS,const char & SORT,int (* ptr2func)(float *,float *),const int & n,float * A,const int & lda,int * sdim,float * WR,float * WI,float * VS,const int & ldvs,float * WORK,const int & lwork,int * BWORK,int * info) const347   void LAPACK<int, float>::GEES(const char& JOBVS, const char& SORT, int (*ptr2func)(float*, float*), const int& n, float* A, const int& lda, int* sdim, float* WR, float* WI, float* VS, const int& ldvs, float* WORK, const int& lwork, int* BWORK, int* info) const
348   { SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info); }
349 
350 
GEES(const char & JOBVS,const int & n,float * A,const int & lda,int * sdim,float * WR,float * WI,float * VS,const int & ldvs,float * WORK,const int & lwork,float *,int * BWORK,int * info) const351   void LAPACK<int, float>::GEES(const char& JOBVS, const int& n, float* A, const int& lda, int* sdim, float* WR, float* WI, float* VS, const int& ldvs, float* WORK, const int& lwork, float* /* RWORK */, int* BWORK, int* info) const
352   {
353     int (*nullfptr)(float*,float*) = NULL;
354     const char sort = 'N';
355     SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
356   }
357 
358 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,float * A,const int & lda,float * WR,float * WI,float * VL,const int & ldvl,float * VR,const int & ldvr,float * WORK,const int & lwork,int * info) const359   void LAPACK<int, float>::GEEV(const char& JOBVL, const char& JOBVR, const int& n, float* A, const int& lda, float* WR, float* WI, float* VL, const int& ldvl, float* VR, const int& ldvr, float* WORK, const int& lwork, int* info) const
360   { SGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
361 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,float * A,const int & lda,float * WR,float * WI,float * VL,const int & ldvl,float * VR,const int & ldvr,float * WORK,const int & lwork,float *,int * info) const362   void LAPACK<int, float>::GEEV(const char& JOBVL, const char& JOBVR, const int& n, float* A, const int& lda, float* WR, float* WI, float* VL, const int& ldvl, float* VR, const int& ldvr, float* WORK, const int& lwork, float* /* RWORK */, int* info) const
363   {
364     GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
365   }
366 
367 
GESVD(const char & JOBU,const char & JOBVT,const int & m,const int & n,float * A,const int & lda,float * S,float * U,const int & ldu,float * V,const int & ldv,float * WORK,const int & lwork,float *,int * info) const368   void LAPACK<int, float>::GESVD(const char& JOBU, const char& JOBVT, const int& m, const int& n, float* A, const int& lda, float* S, float* U, const int& ldu, float* V, const int& ldv, float* WORK, const int& lwork, float* /* RWORK */, int* info) const
369   { SGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info); }
370 
371 
GEEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,float * A,const int & lda,float * WR,float * WI,float * VL,const int & ldvl,float * VR,const int & ldvr,int * ilo,int * ihi,float * SCALE,float * abnrm,float * RCONDE,float * RCONDV,float * WORK,const int & lwork,int * IWORK,int * info) const372   void LAPACK<int,float>::GEEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, float* A, const int& lda, float* WR, float* WI, float* VL, const int& ldvl, float* VR, const int& ldvr, int* ilo, int* ihi, float* SCALE, float* abnrm, float* RCONDE, float* RCONDV, float* WORK, const int& lwork, int* IWORK, int* info) const
373   { SGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, info); }
374 
375 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,float * A,const int & lda,float * B,const int & ldb,float * ALPHAR,float * ALPHAI,float * BETA,float * VL,const int & ldvl,float * VR,const int & ldvr,int * ilo,int * ihi,float * lscale,float * rscale,float * abnrm,float * bbnrm,float * RCONDE,float * RCONDV,float * WORK,const int & lwork,int * IWORK,int * BWORK,int * info) const376   void LAPACK<int,float>::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, float* A, const int& lda, float* B, const int& ldb, float* ALPHAR, float* ALPHAI, float* BETA, float* VL, const int& ldvl, float* VR, const int& ldvr, int* ilo, int* ihi, float* lscale, float* rscale, float* abnrm, float* bbnrm, float* RCONDE, float* RCONDV, float* WORK, const int& lwork, int* IWORK, int* BWORK, int* info) const
377   { SGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, BWORK, info); }
378 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,float * A,const int & lda,float * B,const int & ldb,float * ALPHAR,float * ALPHAI,float * BETA,float * VL,const int & ldvl,float * VR,const int & ldvr,int * ilo,int * ihi,float * lscale,float * rscale,float * abnrm,float * bbnrm,float * RCONDE,float * RCONDV,float * WORK,const int & lwork,float *,int * IWORK,int * BWORK,int * info) const379   void LAPACK<int,float>::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, float* A, const int& lda, float* B, const int& ldb, float* ALPHAR, float* ALPHAI, float* BETA, float* VL, const int& ldvl, float* VR, const int& ldvr, int* ilo, int* ihi, float* lscale, float* rscale, float* abnrm, float* bbnrm, float* RCONDE, float* RCONDV, float* WORK, const int& lwork, float* /* RWORK */, int* IWORK, int* BWORK, int* info) const
380   {
381     GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, ALPHAR, ALPHAI, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, IWORK, BWORK, info);
382   }
383 
GGEV(const char & JOBVL,const char & JOBVR,const int & n,float * A,const int & lda,float * B,const int & ldb,float * ALPHAR,float * ALPHAI,float * BETA,float * VL,const int & ldvl,float * VR,const int & ldvr,float * WORK,const int & lwork,int * info) const384   void LAPACK<int, float>::GGEV(const char& JOBVL, const char& JOBVR, const int& n, float* A, const int& lda, float* B, const int& ldb, float* ALPHAR, float* ALPHAI, float* BETA, float* VL, const int& ldvl, float* VR, const int& ldvr, float* WORK, const int& lwork, int* info) const
385   { SGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
386 
387 
TRSEN(const char & JOB,const char & COMPQ,const int * SELECT,const int & n,float * T,const int & ldt,float * Q,const int & ldq,float * WR,float * WI,int * M,float * S,float * SEP,float * WORK,const int & lwork,int * IWORK,const int & liwork,int * info) const388   void LAPACK<int, float>::TRSEN(const char& JOB, const char& COMPQ, const int* SELECT, const int& n, float* T, const int& ldt, float* Q, const int& ldq, float* WR, float* WI, int* M, float* S, float* SEP, float* WORK, const int& lwork, int* IWORK, const int& liwork, int* info ) const
389   { STRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
390 
391 
TGSEN(const int & ijob,const int & wantq,const int & wantz,const int * SELECT,const int & n,float * A,const int & lda,float * B,const int & ldb,float * ALPHAR,float * ALPHAI,float * BETA,float * Q,const int & ldq,float * Z,const int & ldz,int * M,float * PL,float * PR,float * DIF,float * WORK,const int & lwork,int * IWORK,const int & liwork,int * info) const392   void LAPACK<int, float>::TGSEN(const int& ijob, const int& wantq, const int& wantz, const int* SELECT, const int& n, float* A, const int& lda, float* B, const int& ldb, float* ALPHAR, float* ALPHAI, float* BETA, float* Q, const int& ldq, float* Z, const int& ldz, int* M, float* PL, float* PR, float* DIF, float* WORK, const int& lwork, int* IWORK, const int& liwork, int* info ) const
393   { STGSEN_F77(&ijob, &wantq, &wantz, SELECT, &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, Q, &ldq, Z, &ldz, M, PL, PR, DIF, WORK, &lwork, IWORK, &liwork, info); }
394 
395 
GGES(const char & JOBVL,const char & JOBVR,const char & SORT,int (* ptr2func)(float *,float *,float *),const int & n,float * A,const int & lda,float * B,const int & ldb,int * sdim,float * ALPHAR,float * ALPHAI,float * BETA,float * VL,const int & ldvl,float * VR,const int & ldvr,float * WORK,const int & lwork,int * BWORK,int * info) const396   void LAPACK<int, float>::GGES(const char& JOBVL, const char& JOBVR, const char& SORT, int (*ptr2func)(float* , float* , float* ), const int& n, float* A, const int& lda, float* B, const int& ldb, int* sdim, float* ALPHAR, float* ALPHAI, float* BETA, float* VL, const int& ldvl, float* VR, const int& ldvr, float* WORK, const int& lwork, int* BWORK, int* info ) const
397   { SGGES_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, B, &ldb, sdim, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, BWORK, info); }
398 
399 
ORMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,float * A,const int & lda,const float * TAU,float * C,const int & ldc,float * WORK,const int & lwork,int * info) const400   void LAPACK<int, float>::ORMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, float* A, const int& lda, const float* TAU, float* C, const int& ldc, float* WORK, const int& lwork, int* info) const
401   { SORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
402 
403 
ORM2R(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,const float A[],const int & lda,const float TAU[],float C[],const int & ldc,float WORK[],int * const info) const404   void LAPACK<int, float>::ORM2R(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, const float A[], const int& lda, const float TAU[], float C[], const int& ldc, float WORK[], int* const info) const
405   { SORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info); }
406 
407 
UNMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,float * A,const int & lda,const float * TAU,float * C,const int & ldc,float * WORK,const int & lwork,int * info) const408   void LAPACK<int, float>::UNMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, float* A, const int& lda, const float* TAU, float* C, const int& ldc, float* WORK, const int& lwork, int* info) const
409   {
410     // LAPACK only defines UNMQR for Z and C (complex*8
411     // resp. complex*16), but logically, UNMQR means the same thing as
412     // ORMQR for real arithmetic.
413     ORMQR (SIDE, TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
414   }
415 
UNM2R(const char & SIDE,const char & TRANS,const int & M,const int & N,const int & K,const float A[],const int & LDA,const float TAU[],float C[],const int & LDC,float WORK[],int * const INFO) const416   void LAPACK<int, float>::UNM2R (const char& SIDE, const char& TRANS, const int& M, const int& N, const int& K, const float A[], const int& LDA, const float TAU[], float C[], const int& LDC, float WORK[], int* const INFO) const
417   {
418     // LAPACK only defines UNM2R for Z and C (complex*8
419     // resp. complex*16), but logically, UNM2R means the same thing as
420     // ORM2R for real arithmetic.
421     ORM2R (SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
422   }
423 
424 
ORGQR(const int & m,const int & n,const int & k,float * A,const int & lda,const float * TAU,float * WORK,const int & lwork,int * info) const425   void LAPACK<int, float>::ORGQR(const int& m, const int& n, const int& k, float* A, const int& lda, const float* TAU, float* WORK, const int& lwork, int* info) const
426   { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
427 
428 
UNGQR(const int & m,const int & n,const int & k,float * A,const int & lda,const float * TAU,float * WORK,const int & lwork,int * info) const429   void LAPACK<int, float>::UNGQR(const int& m, const int& n, const int& k, float* A, const int& lda, const float* TAU, float* WORK, const int& lwork, int* info) const
430   { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
431 
432 
ORGHR(const int & n,const int & ilo,const int & ihi,float * A,const int & lda,const float * TAU,float * WORK,const int & lwork,int * info) const433   void LAPACK<int, float>::ORGHR(const int& n, const int& ilo, const int& ihi, float* A, const int& lda, const float* TAU, float* WORK, const int& lwork, int* info) const
434   { SORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
435 
436 
ORMHR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & ilo,const int & ihi,const float * A,const int & lda,const float * TAU,float * C,const int & ldc,float * WORK,const int & lwork,int * info) const437   void LAPACK<int, float>::ORMHR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& ilo, const int& ihi, const float* A, const int& lda, const float* TAU, float* C, const int& ldc, float* WORK, const int& lwork, int* info) const
438   { SORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
439 
440 
TREVC(const char & SIDE,const char & HOWMNY,int * select,const int & n,const float * T,const int & ldt,float * VL,const int & ldvl,float * VR,const int & ldvr,const int & mm,int * m,float * WORK,int * info) const441   void LAPACK<int, float>::TREVC(const char& SIDE, const char& HOWMNY, int* select, const int& n, const float* T, const int& ldt, float* VL, const int& ldvl, float* VR, const int& ldvr, const int& mm, int* m, float* WORK, int* info) const
442   { STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info); }
443 
444 
TREVC(const char & SIDE,const int & n,const float * T,const int & ldt,float * VL,const int & ldvl,float * VR,const int & ldvr,const int & mm,int * m,float * WORK,float *,int * info) const445   void LAPACK<int, float>::TREVC(const char& SIDE, const int& n, const float* T, const int& ldt, float* VL, const int& ldvl, float* VR, const int& ldvr, const int& mm, int* m, float* WORK, float* /* RWORK */, int* info) const
446   {
447     std::vector<int> select(1);
448     const char whch = 'A';
449     STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
450   }
451 
TREXC(const char & COMPQ,const int & n,float * T,const int & ldt,float * Q,const int & ldq,int * ifst,int * ilst,float * WORK,int * info) const452   void LAPACK<int, float>::TREXC(const char& COMPQ, const int& n, float* T, const int& ldt, float* Q, const int& ldq, int* ifst, int* ilst, float* WORK, int* info) const
453   { STREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, WORK, info); }
454 
455 
TGEVC(const char & SIDE,const char & HOWMNY,const int * SELECT,const int & n,float * S,const int & lds,float * P,const int & ldp,float * VL,const int & ldvl,float * VR,const int & ldvr,const int & mm,int * M,float * WORK,int * info) const456   void LAPACK<int, float>::TGEVC(const char& SIDE, const char& HOWMNY, const int* SELECT, const int& n, float* S, const int& lds, float* P, const int& ldp, float* VL, const int& ldvl, float* VR, const int& ldvr, const int& mm, int* M, float* WORK, int* info) const
457   { STGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
458 
459 
LARTG(const float & f,const float & g,float * c,float * s,float * r) const460   void LAPACK<int, float>::LARTG( const float& f, const float& g, float* c, float* s, float* r ) const
461   { SLARTG_F77(&f, &g, c, s, r); }
462 
463 
LARFG(const int & n,float * alpha,float * x,const int & incx,float * tau) const464   void LAPACK<int, float>::LARFG( const int& n, float* alpha, float* x, const int& incx, float* tau ) const
465   { SLARFG_F77(&n, alpha, x, &incx, tau); }
466 
GEBAL(const char & JOBZ,const int & n,float * A,const int & lda,int * ilo,int * ihi,float * scale,int * info) const467   void LAPACK<int, float>::GEBAL(const char& JOBZ, const int& n, float* A, const int& lda, int* ilo, int* ihi, float* scale, int* info) const
468   { SGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info); }
469 
470 
GEBAK(const char & JOBZ,const char & SIDE,const int & n,const int & ilo,const int & ihi,const float * scale,const int & m,float * V,const int & ldv,int * info) const471   void LAPACK<int, float>::GEBAK(const char& JOBZ, const char& SIDE, const int& n, const int& ilo, const int& ihi, const float* scale, const int& m, float* V, const int& ldv, int* info) const
472   { SGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info); }
473 
474 #ifdef HAVE_TEUCHOS_LAPACKLARND
LARND(const int & idist,int * seed) const475   float LAPACK<int, float>::LARND( const int& idist, int* seed ) const
476   { return(SLARND_F77(&idist, seed)); }
477 #endif
478 
LARNV(const int & idist,int * seed,const int & n,float * v) const479   void LAPACK<int, float>::LARNV( const int& idist, int* seed, const int& n, float* v ) const
480   { SLARNV_F77(&idist, seed, &n, v); }
481 
482 
LAMCH(const char & CMACH) const483   float LAPACK<int, float>::LAMCH(const char& CMACH) const
484   { return(SLAMCH_F77(CHAR_MACRO(CMACH))); }
485 
486 
ILAENV(const int & ispec,const std::string & NAME,const std::string & OPTS,const int & N1,const int & N2,const int & N3,const int & N4) const487   int LAPACK<int, float>::ILAENV( const int& ispec, const std::string& NAME, const std::string& OPTS, const int& N1, const int& N2, const int& N3, const int& N4 ) const
488   {
489     unsigned int opts_length = OPTS.length();
490     // if user queries a Hermitian routine, change it to a symmetric routine
491     std::string temp_NAME = "s" + NAME;
492     if (temp_NAME.substr(1,2) == "he") {
493       temp_NAME.replace(1,2,"sy");
494     }
495     unsigned int name_length = temp_NAME.length();
496     return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
497   }
498 
499 
LAPY2(const float & x,const float & y) const500   float LAPACK<int, float>::LAPY2(const float& x, const float& y) const
501   {
502 #if defined(HAVE_TEUCHOS_BLASFLOAT)
503     return SLAPY2_F77(&x, &y);
504 #else
505     typedef ScalarTraits<float> ST;
506     const float xabs = ST::magnitude(x);
507     const float yabs = ST::magnitude(y);
508     const float w = TEUCHOS_MAX(xabs, yabs);
509     const float z = TEUCHOS_MIN(xabs, yabs);
510     if ( z == 0.0 ) {
511       return w;
512     }
513     const float z_over_w = z/w;
514     return w*ST::squareroot( 1.0+(z_over_w*z_over_w));
515 #endif
516   }
517 
518   // END INT, FLOAT SPECIALIZATION IMPLEMENTATION //
519 
520   // BEGIN INT, DOUBLE SPECIALIZATION IMPLEMENTATION //
521 
522 
523 
PTTRF(const int & n,double * d,double * e,int * info) const524   void LAPACK<int, double>::PTTRF(const int& n, double* d, double* e, int* info) const
525   { DPTTRF_F77(&n,d,e,info); }
526 
527 
PTTRS(const int & n,const int & nrhs,const double * d,const double * e,double * B,const int & ldb,int * info) const528   void LAPACK<int, double>::PTTRS(const int& n, const int& nrhs, const double* d, const double* e, double* B, const int& ldb, int* info) const
529   { DPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
530 
531 
POTRF(const char & UPLO,const int & n,double * A,const int & lda,int * info) const532   void LAPACK<int, double>::POTRF(const char& UPLO, const int& n, double* A, const int& lda, int* info) const
533   { DPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
534 
535 
POTRS(const char & UPLO,const int & n,const int & nrhs,const double * A,const int & lda,double * B,const int & ldb,int * info) const536   void LAPACK<int, double>::POTRS(const char& UPLO, const int& n, const int& nrhs, const double* A, const int& lda, double* B, const int& ldb, int* info) const
537   { DPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
538 
539 
POTRI(const char & UPLO,const int & n,double * A,const int & lda,int * info) const540   void LAPACK<int, double>::POTRI(const char& UPLO, const int& n, double* A, const int& lda, int* info) const
541   { DPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
542 
543 
POCON(const char & UPLO,const int & n,const double * A,const int & lda,const double & anorm,double * rcond,double * WORK,int * IWORK,int * info) const544   void LAPACK<int, double>::POCON(const char& UPLO, const int& n, const double* A, const int& lda, const double& anorm, double* rcond, double* WORK, int* IWORK, int* info) const
545   { DPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
546 
547 
POSV(const char & UPLO,const int & n,const int & nrhs,double * A,const int & lda,double * B,const int & ldb,int * info) const548   void LAPACK<int, double>::POSV(const char& UPLO, const int& n, const int& nrhs, double* A, const int& lda, double* B, const int& ldb, int* info) const
549   { DPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
550 
551 
POEQU(const int & n,const double * A,const int & lda,double * S,double * scond,double * amax,int * info) const552   void LAPACK<int, double>::POEQU(const int& n, const double* A, const int& lda, double* S, double* scond, double* amax, int* info) const
553   { DPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
554 
555 
PORFS(const char & UPLO,const int & n,const int & nrhs,double * A,const int & lda,const double * AF,const int & ldaf,const double * B,const int & ldb,double * X,const int & ldx,double * FERR,double * BERR,double * WORK,int * IWORK,int * info) const556   void LAPACK<int, double>::PORFS(const char& UPLO, const int& n, const int& nrhs, double* A, const int& lda, const double* AF, const int& ldaf, const double* B, const int& ldb, double* X, const int& ldx, double* FERR, double* BERR, double* WORK, int* IWORK, int* info) const
557   { DPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
558 
POSVX(const char & FACT,const char & UPLO,const int & n,const int & nrhs,double * A,const int & lda,double * AF,const int & ldaf,char * EQUED,double * S,double * B,const int & ldb,double * X,const int & ldx,double * rcond,double * FERR,double * BERR,double * WORK,int * IWORK,int * info) const559   void LAPACK<int, double>::POSVX(const char& FACT, const char& UPLO, const int& n, const int& nrhs, double* A, const int& lda, double* AF, const int& ldaf, char* EQUED, double* S, double* B, const int& ldb, double* X, const int& ldx, double* rcond, double* FERR, double* BERR, double* WORK, int* IWORK, int* info) const
560   { DPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
561 
562 
GELS(const char & TRANS,const int & m,const int & n,const int & nrhs,double * A,const int & lda,double * B,const int & ldb,double * WORK,const int & lwork,int * info) const563   void LAPACK<int,double>::GELS(const char& TRANS, const int& m, const int& n, const int& nrhs, double* A, const int& lda, double* B, const int& ldb, double* WORK, const int& lwork, int* info) const
564   { DGELS_F77(CHAR_MACRO(TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
565 
566 
GELSS(const int & m,const int & n,const int & nrhs,double * A,const int & lda,double * B,const int & ldb,double * S,const double & rcond,int * rank,double * WORK,const int & lwork,double * rwork,int * info) const567   void LAPACK<int,double>::GELSS(const int& m, const int& n, const int& nrhs, double* A, const int& lda, double* B, const int& ldb, double* S, const double& rcond, int* rank, double* WORK, const int& lwork, double* rwork, int* info) const
568   {
569     (void) rwork;
570     DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
571   }
572 
573 
GELSS(const int & m,const int & n,const int & nrhs,double * A,const int & lda,double * B,const int & ldb,double * S,const double & rcond,int * rank,double * WORK,const int & lwork,int * info) const574   void LAPACK<int,double>::GELSS(const int& m, const int& n, const int& nrhs, double* A, const int& lda, double* B, const int& ldb, double* S, const double& rcond, int* rank, double* WORK, const int& lwork, int* info) const
575   { DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
576 
577 
GGLSE(const int & m,const int & n,const int & p,double * A,const int & lda,double * B,const int & ldb,double * C,double * D,double * X,double * WORK,const int & lwork,int * info) const578   void LAPACK<int,double>::GGLSE(const int& m, const int& n, const int& p, double* A, const int& lda, double* B, const int& ldb, double* C, double* D, double* X, double* WORK, const int& lwork, int* info) const
579   { DGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
580 
581 
GEQRF(const int & m,const int & n,double * A,const int & lda,double * TAU,double * WORK,const int & lwork,int * info) const582   void LAPACK<int,double>::GEQRF( const int& m, const int& n, double* A, const int& lda, double* TAU, double* WORK, const int& lwork, int* info) const
583   { DGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
584 
GEQR2(const int & m,const int & n,double A[],const int & lda,double TAU[],double WORK[],int * const info) const585   void LAPACK<int,double>::GEQR2 (const int& m, const int& n, double A[], const int& lda, double TAU[], double WORK[], int* const info) const
586   {
587     DGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
588   }
589 
GETRF(const int & m,const int & n,double * A,const int & lda,int * IPIV,int * info) const590   void LAPACK<int,double>::GETRF(const int& m, const int& n, double* A, const int& lda, int* IPIV, int* info) const
591   { DGETRF_F77(&m, &n, A, &lda, IPIV, info); }
592 
593 
GETRS(const char & TRANS,const int & n,const int & nrhs,const double * A,const int & lda,const int * IPIV,double * B,const int & ldb,int * info) const594   void LAPACK<int,double>::GETRS(const char& TRANS, const int& n, const int& nrhs, const double* A, const int& lda, const int* IPIV, double* B, const int& ldb, int* info) const
595   { DGETRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
596 
597 
LASCL(const char & TYPE,const int & kl,const int & ku,const double & cfrom,const double & cto,const int & m,const int & n,double * A,const int & lda,int * info) const598   void LAPACK<int,double>::LASCL(const char& TYPE, const int& kl, const int& ku, const double& cfrom, const double& cto, const int& m, const int& n, double* A, const int& lda, int* info) const
599   { DLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
600 
GEQP3(const int & m,const int & n,double * A,const int & lda,int * jpvt,double * TAU,double * WORK,const int & lwork,double * RWORK,int * info) const601   void LAPACK<int,double>::GEQP3(const int& m, const int& n, double* A, const int& lda, int* jpvt, double* TAU, double* WORK, const int& lwork, double* RWORK, int* info ) const
602   {
603     (void) RWORK;
604     DGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
605   }
606 
607   void LAPACK<int, double>::
LASWP(const int & N,double A[],const int & LDA,const int & K1,const int & K2,const int IPIV[],const int & INCX) const608   LASWP (const int& N,
609          double A[],
610          const int& LDA,
611          const int& K1,
612          const int& K2,
613          const int IPIV[],
614          const int& INCX) const
615   {
616     DLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
617   }
618 
GBTRF(const int & m,const int & n,const int & kl,const int & ku,double * A,const int & lda,int * IPIV,int * info) const619   void LAPACK<int,double>::GBTRF(const int& m, const int& n, const int& kl, const int& ku, double* A, const int& lda, int* IPIV, int* info) const
620   { DGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
621 
622 
GBTRS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const double * A,const int & lda,const int * IPIV,double * B,const int & ldb,int * info) const623   void LAPACK<int,double>::GBTRS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const double* A, const int& lda, const int* IPIV, double* B, const int& ldb, int* info) const
624   { DGBTRS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
625 
626 
GTTRF(const int & n,double * dl,double * d,double * du,double * du2,int * IPIV,int * info) const627   void LAPACK<int,double>::GTTRF(const int& n, double* dl, double* d, double* du, double* du2, int* IPIV, int* info) const
628   { DGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
629 
630 
GTTRS(const char & TRANS,const int & n,const int & nrhs,const double * dl,const double * d,const double * du,const double * du2,const int * IPIV,double * B,const int & ldb,int * info) const631   void LAPACK<int,double>::GTTRS(const char& TRANS, const int& n, const int& nrhs, const double* dl, const double* d, const double* du, const double* du2, const int* IPIV, double* B, const int& ldb, int* info) const
632   { DGTTRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
633 
634 
GETRI(const int & n,double * A,const int & lda,const int * IPIV,double * WORK,const int & lwork,int * info) const635   void LAPACK<int,double>::GETRI(const int& n, double* A, const int& lda, const int* IPIV, double* WORK, const int& lwork, int* info) const
636   { DGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
637 
638   void
LATRS(const char & UPLO,const char & TRANS,const char & DIAG,const char & NORMIN,const int & N,double * A,const int & LDA,double * X,double * SCALE,double * CNORM,int * INFO) const639   LAPACK<int, double>::LATRS (const char& UPLO,
640                               const char& TRANS,
641                               const char& DIAG,
642                               const char& NORMIN,
643                               const int& N,
644                               double* A,
645                               const int& LDA,
646                               double* X,
647                               double* SCALE,
648                               double* CNORM,
649                               int* INFO) const
650   {
651     DLATRS_F77(CHAR_MACRO(UPLO),
652                CHAR_MACRO(TRANS),
653                CHAR_MACRO(DIAG),
654                CHAR_MACRO(NORMIN),
655                &N,
656                A,
657                &LDA,
658                X,
659                SCALE,
660                CNORM,
661                INFO);
662   }
663 
GECON(const char & NORM,const int & n,const double * A,const int & lda,const double & anorm,double * rcond,double * WORK,int * IWORK,int * info) const664   void LAPACK<int,double>::GECON(const char& NORM, const int& n, const double* A, const int& lda, const double& anorm, double* rcond, double* WORK, int* IWORK, int* info) const
665   { DGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
666 
667 
GBCON(const char & NORM,const int & n,const int & kl,const int & ku,const double * A,const int & lda,int * IPIV,const double & anorm,double * rcond,double * WORK,int * IWORK,int * info) const668   void LAPACK<int,double>::GBCON(const char& NORM, const int& n, const int& kl, const int& ku, const double* A, const int& lda, int* IPIV, const double& anorm, double* rcond, double* WORK, int* IWORK, int* info) const
669   { DGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
670 
671 
LANGB(const char & NORM,const int & n,const int & kl,const int & ku,const double * A,const int & lda,double * WORK) const672   double LAPACK<int,double>::LANGB(const char& NORM, const int& n, const int& kl, const int& ku, const double* A, const int& lda, double* WORK) const
673   { return( DLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
674 
675 
GESV(const int & n,const int & nrhs,double * A,const int & lda,int * IPIV,double * B,const int & ldb,int * info) const676   void LAPACK<int,double>::GESV(const int& n, const int& nrhs, double* A, const int& lda, int* IPIV, double* B, const int& ldb, int* info) const
677   { DGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
678 
679 
GEEQU(const int & m,const int & n,const double * A,const int & lda,double * R,double * C,double * rowcond,double * colcond,double * amax,int * info) const680   void LAPACK<int,double>::GEEQU(const int& m, const int& n, const double* A, const int& lda, double* R, double* C, double* rowcond, double* colcond, double* amax, int* info) const
681   { DGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
682 
683 
GERFS(const char & TRANS,const int & n,const int & nrhs,const double * A,const int & lda,const double * AF,const int & ldaf,const int * IPIV,const double * B,const int & ldb,double * X,const int & ldx,double * FERR,double * BERR,double * WORK,int * IWORK,int * info) const684   void LAPACK<int,double>::GERFS(const char& TRANS, const int& n, const int& nrhs, const double* A, const int& lda, const double* AF, const int& ldaf, const int* IPIV, const double* B, const int& ldb, double* X, const int& ldx, double* FERR, double* BERR, double* WORK, int* IWORK, int* info) const
685   { DGERFS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
686 
687 
GBEQU(const int & m,const int & n,const int & kl,const int & ku,const double * A,const int & lda,double * R,double * C,double * rowcond,double * colcond,double * amax,int * info) const688   void LAPACK<int,double>::GBEQU(const int& m, const int& n, const int& kl, const int& ku, const double* A, const int& lda, double* R, double* C, double* rowcond, double* colcond, double* amax, int* info) const
689   { DGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
690 
691 
GBRFS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const double * A,const int & lda,const double * AF,const int & ldaf,const int * IPIV,const double * B,const int & ldb,double * X,const int & ldx,double * FERR,double * BERR,double * WORK,int * IWORK,int * info) const692   void LAPACK<int,double>::GBRFS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const double* A, const int& lda, const double* AF, const int& ldaf, const int* IPIV, const double* B, const int& ldb, double* X, const int& ldx, double* FERR, double* BERR, double* WORK, int* IWORK, int* info) const
693   { DGBRFS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
694 
GESVX(const char & FACT,const char & TRANS,const int & n,const int & nrhs,double * A,const int & lda,double * AF,const int & ldaf,int * IPIV,char * EQUED,double * R,double * C,double * B,const int & ldb,double * X,const int & ldx,double * rcond,double * FERR,double * BERR,double * WORK,int * IWORK,int * info) const695   void LAPACK<int,double>::GESVX(const char& FACT, const char& TRANS, const int& n, const int& nrhs, double* A, const int& lda, double* AF, const int& ldaf, int* IPIV, char* EQUED, double* R, double* C, double* B, const int& ldb, double* X, const int& ldx, double* rcond, double* FERR, double* BERR, double* WORK, int* IWORK, int* info) const
696   { DGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
697 
698 
SYTRD(const char & UPLO,const int & n,double * A,const int & lda,double * D,double * E,double * TAU,double * WORK,const int & lwork,int * info) const699   void LAPACK<int,double>::SYTRD(const char& UPLO, const int& n, double* A, const int& lda, double* D, double* E, double* TAU, double* WORK, const int& lwork, int* info) const
700   { DSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
701 
702 
GEHRD(const int & n,const int & ilo,const int & ihi,double * A,const int & lda,double * TAU,double * WORK,const int & lwork,int * info) const703   void LAPACK<int, double>::GEHRD(const int& n, const int& ilo, const int& ihi, double* A, const int& lda, double* TAU, double* WORK, const int& lwork, int* info) const
704   { DGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
705 
706 
TRTRS(const char & UPLO,const char & TRANS,const char & DIAG,const int & n,const int & nrhs,const double * A,const int & lda,double * B,const int & ldb,int * info) const707   void LAPACK<int,double>::TRTRS(const char& UPLO, const char& TRANS, const char& DIAG, const int& n, const int& nrhs, const double* A, const int& lda, double* B, const int& ldb, int* info) const
708   { DTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
709 
710 
TRTRI(const char & UPLO,const char & DIAG,const int & n,const double * A,const int & lda,int * info) const711   void LAPACK<int,double>::TRTRI(const char& UPLO, const char& DIAG, const int& n, const double* A, const int& lda, int* info) const
712   { DTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
713 
714 
SPEV(const char & JOBZ,const char & UPLO,const int & n,double * AP,double * W,double * Z,const int & ldz,double * WORK,int * info) const715   void LAPACK<int,double>::SPEV(const char& JOBZ, const char& UPLO, const int& n, double* AP, double* W, double* Z, const int& ldz, double* WORK, int* info) const
716   { DSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
717 
718 
SYEV(const char & JOBZ,const char & UPLO,const int & n,double * A,const int & lda,double * W,double * WORK,const int & lwork,int * info) const719   void LAPACK<int,double>::SYEV(const char& JOBZ, const char& UPLO, const int& n, double* A, const int& lda, double* W, double* WORK, const int& lwork, int* info) const
720   {
721     DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
722   }
723 
724 
SYGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,double * A,const int & lda,double * B,const int & ldb,double * W,double * WORK,const int & lwork,int * info) const725   void LAPACK<int,double>::SYGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, double* A, const int& lda, double* B, const int& ldb, double* W, double* WORK, const int& lwork, int* info) const
726   {
727     DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
728   }
729 
730 
HEEV(const char & JOBZ,const char & UPLO,const int & n,double * A,const int & lda,double * W,double * WORK,const int & lwork,double *,int * info) const731   void LAPACK<int,double>::HEEV(const char& JOBZ, const char& UPLO, const int& n, double* A, const int& lda, double* W, double* WORK, const int& lwork, double* /* RWORK */, int* info) const
732   {
733     DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
734   }
735 
736 
HEGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,double * A,const int & lda,double * B,const int & ldb,double * W,double * WORK,const int & lwork,double *,int * info) const737   void LAPACK<int,double>::HEGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, double* A, const int& lda, double* B, const int& ldb, double* W, double* WORK, const int& lwork, double* /* RWORK */, int* info) const
738   {
739     DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
740   }
741 
742 
STEQR(const char & COMPZ,const int & n,double * D,double * E,double * Z,const int & ldz,double * WORK,int * info) const743   void LAPACK<int,double>::STEQR(const char& COMPZ, const int& n, double* D, double* E, double* Z, const int& ldz, double* WORK, int* info) const
744   { DSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
745 
746 
PTEQR(const char & COMPZ,const int & n,double * D,double * E,double * Z,const int & ldz,double * WORK,int * info) const747   void LAPACK<int,double>::PTEQR(const char& COMPZ, const int& n, double* D, double* E, double* Z, const int& ldz, double* WORK, int* info) const
748   { DPTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
749 
750 
HSEQR(const char & JOB,const char & COMPZ,const int & n,const int & ilo,const int & ihi,double * H,const int & ldh,double * WR,double * WI,double * Z,const int & ldz,double * WORK,const int & lwork,int * info) const751   void LAPACK<int, double>::HSEQR(const char& JOB, const char& COMPZ, const int& n, const int& ilo, const int& ihi, double* H, const int& ldh, double* WR, double* WI, double* Z, const int& ldz, double* WORK, const int& lwork, int* info) const
752   {
753     DHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info);
754   }
755 
756 
GEES(const char & JOBVS,const char & SORT,int (* ptr2func)(double *,double *),const int & n,double * A,const int & lda,int * sdim,double * WR,double * WI,double * VS,const int & ldvs,double * WORK,const int & lwork,int * BWORK,int * info) const757   void LAPACK<int, double>::GEES(const char& JOBVS, const char& SORT, int (*ptr2func)(double*, double*), const int& n, double* A, const int& lda, int* sdim, double* WR, double* WI, double* VS, const int& ldvs, double* WORK, const int& lwork, int* BWORK, int* info) const
758   {
759     DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
760   }
761 
762 
GEES(const char & JOBVS,const int & n,double * A,const int & lda,int * sdim,double * WR,double * WI,double * VS,const int & ldvs,double * WORK,const int & lwork,double *,int * BWORK,int * info) const763   void LAPACK<int, double>::GEES(const char& JOBVS, const int& n, double* A, const int& lda, int* sdim, double* WR, double* WI, double* VS, const int& ldvs, double* WORK, const int& lwork, double* /* RWORK */, int* BWORK, int* info) const
764   {
765     //int (*nullfptr)(double*,double*) = NULL;
766     gees_nullfptr_t nullfptr = 0;
767     const char sort = 'N';
768     DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
769   }
770 
771 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,double * A,const int & lda,double * WR,double * WI,double * VL,const int & ldvl,double * VR,const int & ldvr,double * WORK,const int & lwork,int * info) const772   void LAPACK<int, double>::GEEV(const char& JOBVL, const char& JOBVR, const int& n, double* A, const int& lda, double* WR, double* WI, double* VL, const int& ldvl, double* VR, const int& ldvr, double* WORK, const int& lwork, int* info) const
773   {
774     DGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
775   }
776 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,double * A,const int & lda,double * WR,double * WI,double * VL,const int & ldvl,double * VR,const int & ldvr,double * WORK,const int & lwork,double *,int * info) const777   void LAPACK<int, double>::GEEV(const char& JOBVL, const char& JOBVR, const int& n, double* A, const int& lda, double* WR, double* WI, double* VL, const int& ldvl, double* VR, const int& ldvr, double* WORK, const int& lwork, double* /* RWORK */, int* info) const
778   {
779     GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
780   }
781 
782 
GESVD(const char & JOBU,const char & JOBVT,const int & m,const int & n,double * A,const int & lda,double * S,double * U,const int & ldu,double * V,const int & ldv,double * WORK,const int & lwork,double *,int * info) const783   void LAPACK<int, double>::GESVD(const char& JOBU, const char& JOBVT, const int& m, const int& n, double* A, const int& lda, double* S, double* U, const int& ldu, double* V, const int& ldv, double* WORK, const int& lwork, double* /* RWORK */, int* info) const {
784     DGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info);
785   }
786 
787 
GEEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,double * A,const int & lda,double * WR,double * WI,double * VL,const int & ldvl,double * VR,const int & ldvr,int * ilo,int * ihi,double * SCALE,double * abnrm,double * RCONDE,double * RCONDV,double * WORK,const int & lwork,int * IWORK,int * info) const788   void LAPACK<int,double>::GEEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, double* A, const int& lda, double* WR, double* WI, double* VL, const int& ldvl, double* VR, const int& ldvr, int* ilo, int* ihi, double* SCALE, double* abnrm, double* RCONDE, double* RCONDV, double* WORK, const int& lwork, int* IWORK, int* info) const
789   {
790     DGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, info);
791   }
792 
793 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,double * A,const int & lda,double * B,const int & ldb,double * ALPHAR,double * ALPHAI,double * BETA,double * VL,const int & ldvl,double * VR,const int & ldvr,int * ilo,int * ihi,double * lscale,double * rscale,double * abnrm,double * bbnrm,double * RCONDE,double * RCONDV,double * WORK,const int & lwork,int * IWORK,int * BWORK,int * info) const794   void LAPACK<int, double>::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, double* A, const int& lda, double* B, const int& ldb, double* ALPHAR, double* ALPHAI, double* BETA, double* VL, const int& ldvl, double* VR, const int& ldvr, int* ilo, int* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm, double* RCONDE, double* RCONDV, double* WORK, const int& lwork, int* IWORK, int* BWORK, int* info) const
795   {
796     DGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, BWORK, info);
797   }
798 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,double * A,const int & lda,double * B,const int & ldb,double * ALPHAR,double * ALPHAI,double * BETA,double * VL,const int & ldvl,double * VR,const int & ldvr,int * ilo,int * ihi,double * lscale,double * rscale,double * abnrm,double * bbnrm,double * RCONDE,double * RCONDV,double * WORK,const int & lwork,double *,int * IWORK,int * BWORK,int * info) const799   void LAPACK<int, double>::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, double* A, const int& lda, double* B, const int& ldb, double* ALPHAR, double* ALPHAI, double* BETA, double* VL, const int& ldvl, double* VR, const int& ldvr, int* ilo, int* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm, double* RCONDE, double* RCONDV, double* WORK, const int& lwork, double* /* RWORK */, int* IWORK, int* BWORK, int* info) const
800   {
801     GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, ALPHAR, ALPHAI, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, IWORK, BWORK, info);
802   }
803 
GGEV(const char & JOBVL,const char & JOBVR,const int & n,double * A,const int & lda,double * B,const int & ldb,double * ALPHAR,double * ALPHAI,double * BETA,double * VL,const int & ldvl,double * VR,const int & ldvr,double * WORK,const int & lwork,int * info) const804   void LAPACK<int, double>::GGEV(const char& JOBVL, const char& JOBVR, const int& n, double* A, const int& lda, double* B, const int& ldb, double* ALPHAR, double* ALPHAI, double* BETA, double* VL, const int& ldvl, double* VR, const int& ldvr, double* WORK, const int& lwork, int* info) const
805   {
806     DGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
807   }
808 
TRSEN(const char & JOB,const char & COMPQ,const int * SELECT,const int & n,double * T,const int & ldt,double * Q,const int & ldq,double * WR,double * WI,int * M,double * S,double * SEP,double * WORK,const int & lwork,int * IWORK,const int & liwork,int * info) const809   void LAPACK<int, double>::TRSEN(const char& JOB, const char& COMPQ, const int* SELECT, const int& n, double* T, const int& ldt, double* Q, const int& ldq, double* WR, double* WI, int* M, double* S, double* SEP, double* WORK, const int& lwork, int* IWORK, const int& liwork, int* info ) const
810   { DTRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
811 
812 
TGSEN(const int & ijob,const int & wantq,const int & wantz,const int * SELECT,const int & n,double * A,const int & lda,double * B,const int & ldb,double * ALPHAR,double * ALPHAI,double * BETA,double * Q,const int & ldq,double * Z,const int & ldz,int * M,double * PL,double * PR,double * DIF,double * WORK,const int & lwork,int * IWORK,const int & liwork,int * info) const813   void LAPACK<int, double>::TGSEN(const int& ijob, const int& wantq, const int& wantz, const int* SELECT, const int& n, double* A, const int& lda, double* B, const int& ldb, double* ALPHAR, double* ALPHAI, double* BETA, double* Q, const int& ldq, double* Z, const int& ldz, int* M, double* PL, double* PR, double* DIF, double* WORK, const int& lwork, int* IWORK, const int& liwork, int* info ) const
814   { DTGSEN_F77(&ijob, &wantq, &wantz, SELECT, &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, Q, &ldq, Z, &ldz, M, PL, PR, DIF, WORK, &lwork, IWORK, &liwork, info); }
815 
816 
GGES(const char & JOBVL,const char & JOBVR,const char & SORT,int (* ptr2func)(double *,double *,double *),const int & n,double * A,const int & lda,double * B,const int & ldb,int * sdim,double * ALPHAR,double * ALPHAI,double * BETA,double * VL,const int & ldvl,double * VR,const int & ldvr,double * WORK,const int & lwork,int * BWORK,int * info) const817   void LAPACK<int, double>::GGES(const char& JOBVL, const char& JOBVR, const char& SORT, int (*ptr2func)(double* , double* , double* ), const int& n, double* A, const int& lda, double* B, const int& ldb, int* sdim, double* ALPHAR, double* ALPHAI, double* BETA, double* VL, const int& ldvl, double* VR, const int& ldvr, double* WORK, const int& lwork, int* BWORK, int* info ) const
818   { DGGES_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, B, &ldb, sdim, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, BWORK, info); }
819 
820 
ORMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,double * A,const int & lda,const double * TAU,double * C,const int & ldc,double * WORK,const int & lwork,int * info) const821   void LAPACK<int, double>::ORMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, double* A, const int& lda, const double* TAU, double* C, const int& ldc, double* WORK, const int& lwork, int* info) const
822   {
823     DORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
824   }
825 
ORM2R(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,const double A[],const int & lda,const double TAU[],double C[],const int & ldc,double WORK[],int * const info) const826   void LAPACK<int, double>::ORM2R(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, const double A[], const int& lda, const double TAU[], double C[], const int& ldc, double WORK[], int* const info) const
827   {
828     DORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info);
829   }
830 
UNMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,double * A,const int & lda,const double * TAU,double * C,const int & ldc,double * WORK,const int & lwork,int * info) const831   void LAPACK<int, double>::UNMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, double* A, const int& lda, const double* TAU, double* C, const int& ldc, double* WORK, const int& lwork, int* info) const
832   {
833     // LAPACK only defines UNMQR for Z and C (complex*8
834     // resp. complex*16), but logically, UNMQR means the same thing as
835     // ORMQR for real arithmetic.
836     ORMQR (SIDE, TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
837   }
838 
UNM2R(const char & SIDE,const char & TRANS,const int & M,const int & N,const int & K,const double A[],const int & LDA,const double TAU[],double C[],const int & LDC,double WORK[],int * const INFO) const839   void LAPACK<int, double>::UNM2R (const char& SIDE, const char& TRANS, const int& M, const int& N, const int& K, const double A[], const int& LDA, const double TAU[], double C[], const int& LDC, double WORK[], int* const INFO) const
840   {
841     // LAPACK only defines UNM2R for Z and C (complex*8
842     // resp. complex*16), but logically, UNM2R means the same thing as
843     // ORM2R for real arithmetic.
844     ORM2R (SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
845   }
846 
ORGQR(const int & m,const int & n,const int & k,double * A,const int & lda,const double * TAU,double * WORK,const int & lwork,int * info) const847   void LAPACK<int, double>::ORGQR(const int& m, const int& n, const int& k, double* A, const int& lda, const double* TAU, double* WORK, const int& lwork, int* info) const
848   {
849     DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
850   }
851 
852 
UNGQR(const int & m,const int & n,const int & k,double * A,const int & lda,const double * TAU,double * WORK,const int & lwork,int * info) const853   void LAPACK<int, double>::UNGQR(const int& m, const int& n, const int& k, double* A, const int& lda, const double* TAU, double* WORK, const int& lwork, int* info) const
854   {
855     DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
856   }
857 
858 
ORGHR(const int & n,const int & ilo,const int & ihi,double * A,const int & lda,const double * TAU,double * WORK,const int & lwork,int * info) const859   void LAPACK<int, double>::ORGHR(const int& n, const int& ilo, const int& ihi, double* A, const int& lda, const double* TAU, double* WORK, const int& lwork, int* info) const
860   {
861     DORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
862   }
863 
864 
ORMHR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & ilo,const int & ihi,const double * A,const int & lda,const double * TAU,double * C,const int & ldc,double * WORK,const int & lwork,int * info) const865   void LAPACK<int, double>::ORMHR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& ilo, const int& ihi, const double* A, const int& lda, const double* TAU, double* C, const int& ldc, double* WORK, const int& lwork, int* info) const
866   {
867     DORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
868   }
869 
870 
TREVC(const char & SIDE,const char & HOWMNY,int * select,const int & n,const double * T,const int & ldt,double * VL,const int & ldvl,double * VR,const int & ldvr,const int & mm,int * m,double * WORK,int * info) const871   void LAPACK<int, double>::TREVC(const char& SIDE, const char& HOWMNY, int* select, const int& n, const double* T, const int& ldt, double* VL, const int& ldvl, double* VR, const int& ldvr, const int& mm, int* m, double* WORK, int* info) const
872   {
873     DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
874   }
875 
876 
TREVC(const char & SIDE,const int & n,const double * T,const int & ldt,double * VL,const int & ldvl,double * VR,const int & ldvr,const int & mm,int * m,double * WORK,double *,int * info) const877   void LAPACK<int, double>::TREVC(const char& SIDE, const int& n, const double* T, const int& ldt, double* VL, const int& ldvl, double* VR, const int& ldvr, const int& mm, int* m, double* WORK, double* /* RWORK */, int* info) const
878   {
879     std::vector<int> select(1);
880     const char whch = 'A';
881     DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
882   }
883 
TREXC(const char & COMPQ,const int & n,double * T,const int & ldt,double * Q,const int & ldq,int * ifst,int * ilst,double * WORK,int * info) const884   void LAPACK<int, double>::TREXC(const char& COMPQ, const int& n, double* T, const int& ldt, double* Q, const int& ldq, int* ifst, int* ilst, double* WORK, int* info) const
885   {
886     DTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, WORK, info);
887   }
888 
889 
TGEVC(const char & SIDE,const char & HOWMNY,const int * SELECT,const int & n,double * S,const int & lds,double * P,const int & ldp,double * VL,const int & ldvl,double * VR,const int & ldvr,const int & mm,int * M,double * WORK,int * info) const890   void LAPACK<int, double>::TGEVC(const char& SIDE, const char& HOWMNY, const int* SELECT, const int& n, double* S, const int& lds, double* P, const int& ldp, double* VL, const int& ldvl, double* VR, const int& ldvr, const int& mm, int* M, double* WORK, int* info) const
891   { DTGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
892 
893 
LARTG(const double & f,const double & g,double * c,double * s,double * r) const894   void LAPACK<int, double>::LARTG( const double& f, const double& g, double* c, double* s, double* r ) const
895   {
896     DLARTG_F77(&f, &g, c, s, r);
897   }
898 
899 
LARFG(const int & n,double * alpha,double * x,const int & incx,double * tau) const900   void LAPACK<int, double>::LARFG( const int& n, double* alpha, double* x, const int& incx, double* tau ) const
901   {
902     DLARFG_F77(&n, alpha, x, &incx, tau);
903   }
904 
GEBAL(const char & JOBZ,const int & n,double * A,const int & lda,int * ilo,int * ihi,double * scale,int * info) const905   void LAPACK<int, double>::GEBAL(const char& JOBZ, const int& n, double* A, const int& lda, int* ilo, int* ihi, double* scale, int* info) const
906   {
907     DGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
908   }
909 
910 
GEBAK(const char & JOBZ,const char & SIDE,const int & n,const int & ilo,const int & ihi,const double * scale,const int & m,double * V,const int & ldv,int * info) const911   void LAPACK<int, double>::GEBAK(const char& JOBZ, const char& SIDE, const int& n, const int& ilo, const int& ihi, const double* scale, const int& m, double* V, const int& ldv, int* info) const
912   {
913     DGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
914   }
915 
916 
917 #ifdef HAVE_TEUCHOS_LAPACKLARND
LARND(const int & idist,int * seed) const918   double LAPACK<int, double>::LARND( const int& idist, int* seed ) const
919   {
920     return(DLARND_F77(&idist, seed));
921   }
922 #endif
923 
LARNV(const int & idist,int * seed,const int & n,double * v) const924   void LAPACK<int, double>::LARNV( const int& idist, int* seed, const int& n, double* v ) const
925   {
926     DLARNV_F77(&idist, seed, &n, v);
927   }
928 
929 
LAMCH(const char & CMACH) const930   double LAPACK<int, double>::LAMCH(const char& CMACH) const
931   {
932     return(DLAMCH_F77(CHAR_MACRO(CMACH)));
933   }
934 
935 
ILAENV(const int & ispec,const std::string & NAME,const std::string & OPTS,const int & N1,const int & N2,const int & N3,const int & N4) const936   int LAPACK<int, double>::ILAENV( const int& ispec, const std::string& NAME, const std::string& OPTS, const int& N1, const int& N2, const int& N3, const int& N4 ) const
937   {
938     unsigned int opts_length = OPTS.length();
939     // if user queries a Hermitian routine, change it to a symmetric routine
940     std::string temp_NAME = "d" + NAME;
941     if (temp_NAME.substr(1,2) == "he") {
942       temp_NAME.replace(1,2,"sy");
943     }
944     unsigned int name_length = temp_NAME.length();
945     return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
946   }
947 
948 
LAPY2(const double & x,const double & y) const949   double LAPACK<int, double>::LAPY2(const double& x, const double& y) const
950   {
951     return DLAPY2_F77(&x, &y);
952   }
953 
954   // END INT, DOUBLE SPECIALIZATION IMPLEMENTATION //
955 
956 #ifdef HAVE_TEUCHOS_COMPLEX
957 
958   // BEGIN INT, COMPLEX<FLOAT> SPECIALIZATION IMPLEMENTATION //
959 
960 
PTTRF(const int & n,std::complex<float> * d,std::complex<float> * e,int * info) const961   void LAPACK<int, std::complex<float> >::PTTRF(const int& n, std::complex<float>* d, std::complex<float>* e, int* info) const
962   {
963     CPTTRF_F77(&n,d,e,info);
964   }
965 
966 
PTTRS(const int & n,const int & nrhs,const std::complex<float> * d,const std::complex<float> * e,std::complex<float> * B,const int & ldb,int * info) const967   void LAPACK<int, std::complex<float> >::PTTRS(const int& n, const int& nrhs, const std::complex<float>* d, const std::complex<float>* e, std::complex<float>* B, const int& ldb, int* info) const
968   {
969     CPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
970   }
971 
972 
POTRF(const char & UPLO,const int & n,std::complex<float> * A,const int & lda,int * info) const973   void LAPACK<int, std::complex<float> >::POTRF(const char& UPLO, const int& n, std::complex<float>* A, const int& lda, int* info) const
974   {
975     CPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
976   }
977 
978 
POTRS(const char & UPLO,const int & n,const int & nrhs,const std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,int * info) const979   void LAPACK<int, std::complex<float> >::POTRS(const char& UPLO, const int& n, const int& nrhs, const std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, int* info) const
980   {
981     CPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
982   }
983 
984 
POTRI(const char & UPLO,const int & n,std::complex<float> * A,const int & lda,int * info) const985   void LAPACK<int, std::complex<float> >::POTRI(const char& UPLO, const int& n, std::complex<float>* A, const int& lda, int* info) const
986   {
987     CPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
988   }
989 
990 
POCON(const char & UPLO,const int & n,const std::complex<float> * A,const int & lda,const float & anorm,float * rcond,std::complex<float> * WORK,float * RWORK,int * info) const991   void LAPACK<int, std::complex<float> >::POCON(const char& UPLO, const int& n, const std::complex<float>* A, const int& lda, const float& anorm, float* rcond, std::complex<float>* WORK, float* RWORK, int* info) const
992   {
993     CPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
994   }
995 
996 
POSV(const char & UPLO,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,int * info) const997   void LAPACK<int, std::complex<float> >::POSV(const char& UPLO, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, int* info) const
998   {
999     CPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1000   }
1001 
1002 
POEQU(const int & n,const std::complex<float> * A,const int & lda,float * S,float * scond,float * amax,int * info) const1003   void LAPACK<int, std::complex<float> >::POEQU(const int& n, const std::complex<float>* A, const int& lda, float* S, float* scond, float* amax, int* info) const
1004   {
1005     CPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1006   }
1007 
1008 
PORFS(const char & UPLO,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,const std::complex<float> * AF,const int & ldaf,const std::complex<float> * B,const int & ldb,std::complex<float> * X,const int & ldx,float * FERR,float * BERR,std::complex<float> * WORK,float * RWORK,int * info) const1009   void LAPACK<int, std::complex<float> >::PORFS(const char& UPLO, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, const std::complex<float>* AF, const int& ldaf, const std::complex<float>* B, const int& ldb, std::complex<float>* X, const int& ldx, float* FERR, float* BERR, std::complex<float>* WORK, float* RWORK, int* info) const
1010   {
1011     CPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1012   }
1013 
POSVX(const char & FACT,const char & UPLO,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,std::complex<float> * AF,const int & ldaf,char * EQUED,float * S,std::complex<float> * B,const int & ldb,std::complex<float> * X,const int & ldx,float * rcond,float * FERR,float * BERR,std::complex<float> * WORK,float * RWORK,int * info) const1014   void LAPACK<int, std::complex<float> >::POSVX(const char& FACT, const char& UPLO, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, std::complex<float>* AF, const int& ldaf, char* EQUED, float* S, std::complex<float>* B, const int& ldb, std::complex<float>* X, const int& ldx, float* rcond, float* FERR, float* BERR, std::complex<float>* WORK, float* RWORK, int* info) const
1015   {
1016     CPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1017   }
1018 
1019 
GELS(const char & TRANS,const int & m,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,std::complex<float> * WORK,const int & lwork,int * info) const1020   void LAPACK<int,std::complex<float> >::GELS(const char& TRANS, const int& m, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, std::complex<float>* WORK, const int& lwork, int* info) const
1021   {
1022     CGELS_F77(CHAR_MACRO(TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1023   }
1024 
GELSS(const int & m,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,float * S,const float & rcond,int * rank,std::complex<float> * WORK,const int & lwork,float * rwork,int * info) const1025   void LAPACK<int, std::complex<float> >::GELSS(const int& m, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, float* S, const float& rcond, int* rank, std::complex<float>* WORK, const int& lwork, float* rwork, int* info) const
1026   {
1027     CGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1028   }
1029 
GEQRF(const int & m,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * TAU,std::complex<float> * WORK,const int & lwork,int * info) const1030   void LAPACK<int,std::complex<float> >::GEQRF( const int& m, const int& n, std::complex<float>* A, const int& lda, std::complex<float>* TAU, std::complex<float>* WORK, const int& lwork, int* info) const
1031   {
1032     CGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1033   }
1034 
GEQR2(const int & m,const int & n,std::complex<float> A[],const int & lda,std::complex<float> TAU[],std::complex<float> WORK[],int * const info) const1035   void LAPACK<int,std::complex<float> >::GEQR2 (const int& m, const int& n, std::complex<float> A[], const int& lda, std::complex<float> TAU[], std::complex<float> WORK[], int* const info) const
1036   {
1037     CGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1038   }
1039 
UNGQR(const int & m,const int & n,const int & k,std::complex<float> * A,const int & lda,const std::complex<float> * TAU,std::complex<float> * WORK,const int & lwork,int * info) const1040   void LAPACK<int,std::complex<float> >::UNGQR(const int& m, const int& n, const int& k, std::complex<float>* A, const int& lda, const std::complex<float>* TAU, std::complex<float>* WORK, const int& lwork, int* info) const
1041   {
1042     CUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1043   }
1044 
UNMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,std::complex<float> * A,const int & lda,const std::complex<float> * TAU,std::complex<float> * C,const int & ldc,std::complex<float> * WORK,const int & lwork,int * info) const1045   void LAPACK<int,std::complex<float> >::UNMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, std::complex<float>* A, const int& lda, const std::complex<float>* TAU, std::complex<float>* C, const int& ldc, std::complex<float>* WORK, const int& lwork, int* info) const
1046   {
1047     CUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1048   }
1049 
UNM2R(const char & SIDE,const char & TRANS,const int & M,const int & N,const int & K,const std::complex<float> A[],const int & LDA,const std::complex<float> TAU[],std::complex<float> C[],const int & LDC,std::complex<float> WORK[],int * const INFO) const1050   void LAPACK<int,std::complex<float> >::UNM2R (const char& SIDE, const char& TRANS, const int& M, const int& N, const int& K, const std::complex<float> A[], const int& LDA, const std::complex<float> TAU[], std::complex<float> C[], const int& LDC, std::complex<float> WORK[], int* const INFO) const
1051   {
1052     CUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1053   }
1054 
GETRF(const int & m,const int & n,std::complex<float> * A,const int & lda,int * IPIV,int * info) const1055   void LAPACK<int,std::complex<float> >::GETRF(const int& m, const int& n, std::complex<float>* A, const int& lda, int* IPIV, int* info) const
1056   {
1057     CGETRF_F77(&m, &n, A, &lda, IPIV, info);
1058   }
1059 
GETRS(const char & TRANS,const int & n,const int & nrhs,const std::complex<float> * A,const int & lda,const int * IPIV,std::complex<float> * B,const int & ldb,int * info) const1060   void LAPACK<int,std::complex<float> >::GETRS(const char& TRANS, const int& n, const int& nrhs, const std::complex<float>* A, const int& lda, const int* IPIV, std::complex<float>* B , const int& ldb, int* info) const
1061   {
1062     CGETRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1063   }
1064 
LASCL(const char & TYPE,const int & kl,const int & ku,const float & cfrom,const float & cto,const int & m,const int & n,std::complex<float> * A,const int & lda,int * info) const1065   void LAPACK<int,std::complex<float> >::LASCL(const char& TYPE, const int& kl, const int& ku, const float& cfrom, const float& cto, const int& m, const int& n, std::complex<float>* A, const int& lda, int* info) const
1066   { CLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1067 
GEQP3(const int & m,const int & n,std::complex<float> * A,const int & lda,int * jpvt,std::complex<float> * TAU,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1068   void LAPACK<int,std::complex<float> >::GEQP3(const int& m, const int& n, std::complex<float>* A, const int& lda, int* jpvt, std::complex<float>* TAU, std::complex<float>* WORK, const int& lwork, float* RWORK, int* info ) const
1069   {
1070     CGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1071   }
1072 
1073   void LAPACK<int, std::complex<float> >::
LASWP(const int & N,std::complex<float> A[],const int & LDA,const int & K1,const int & K2,const int IPIV[],const int & INCX) const1074   LASWP (const int& N,
1075          std::complex<float> A[],
1076          const int& LDA,
1077          const int& K1,
1078          const int& K2,
1079          const int IPIV[],
1080          const int& INCX) const
1081   {
1082     CLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1083   }
1084 
GBTRF(const int & m,const int & n,const int & kl,const int & ku,std::complex<float> * A,const int & lda,int * IPIV,int * info) const1085   void LAPACK<int,std::complex<float> >::GBTRF(const int& m, const int& n, const int& kl, const int& ku, std::complex<float>* A, const int& lda, int* IPIV, int* info) const
1086   {
1087     CGBTRF_F77(&m, &kl, &ku, &n, A, &lda, IPIV, info);
1088   }
1089 
1090 
GBTRS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const std::complex<float> * A,const int & lda,const int * IPIV,std::complex<float> * B,const int & ldb,int * info) const1091   void LAPACK<int,std::complex<float> >::GBTRS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const std::complex<float>* A, const int& lda, const int* IPIV, std::complex<float>* B , const int& ldb, int* info) const
1092   {
1093     CGBTRS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1094   }
1095 
1096 
GTTRF(const int & n,std::complex<float> * dl,std::complex<float> * d,std::complex<float> * du,std::complex<float> * du2,int * IPIV,int * info) const1097   void LAPACK<int,std::complex<float> >::GTTRF(const int& n, std::complex<float>* dl, std::complex<float>* d, std::complex<float>* du, std::complex<float>* du2, int* IPIV, int* info) const
1098   {
1099     CGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1100   }
1101 
1102 
GTTRS(const char & TRANS,const int & n,const int & nrhs,const std::complex<float> * dl,const std::complex<float> * d,const std::complex<float> * du,const std::complex<float> * du2,const int * IPIV,std::complex<float> * B,const int & ldb,int * info) const1103   void LAPACK<int,std::complex<float> >::GTTRS(const char& TRANS, const int& n, const int& nrhs, const std::complex<float>* dl, const std::complex<float>* d, const std::complex<float>* du, const std::complex<float>* du2, const int* IPIV, std::complex<float>* B, const int& ldb, int* info) const
1104   {
1105     CGTTRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1106   }
1107 
1108 
GETRI(const int & n,std::complex<float> * A,const int & lda,const int * IPIV,std::complex<float> * WORK,const int & lwork,int * info) const1109   void LAPACK<int,std::complex<float> >::GETRI(const int& n, std::complex<float>* A, const int& lda, const int* IPIV, std::complex<float>* WORK, const int& lwork, int* info) const
1110   {
1111     CGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1112   }
1113 
1114 
1115   void
LATRS(const char & UPLO,const char & TRANS,const char & DIAG,const char & NORMIN,const int & N,std::complex<float> * A,const int & LDA,std::complex<float> * X,float * SCALE,float * CNORM,int * INFO) const1116   LAPACK<int, std::complex<float> >::LATRS (const char& UPLO,
1117                                             const char& TRANS,
1118                                             const char& DIAG,
1119                                             const char& NORMIN,
1120                                             const int& N,
1121                                             std::complex<float>* A,
1122                                             const int& LDA,
1123                                             std::complex<float>* X,
1124                                             float* SCALE,
1125                                             float* CNORM,
1126                                             int* INFO) const
1127   {
1128     CLATRS_F77(CHAR_MACRO(UPLO),
1129                CHAR_MACRO(TRANS),
1130                CHAR_MACRO(DIAG),
1131                CHAR_MACRO(NORMIN),
1132                &N,
1133                A,
1134                &LDA,
1135                X,
1136                SCALE,
1137                CNORM,
1138                INFO);
1139   }
1140 
1141 
GECON(const char & NORM,const int & n,const std::complex<float> * A,const int & lda,const float & anorm,float * rcond,std::complex<float> * WORK,float * RWORK,int * info) const1142   void LAPACK<int,std::complex<float> >::GECON(const char& NORM, const int& n, const std::complex<float>* A, const int& lda, const float& anorm, float* rcond, std::complex<float>* WORK, float* RWORK, int* info) const
1143   {
1144     CGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1145   }
1146 
1147 
GBCON(const char & NORM,const int & n,const int & kl,const int & ku,const std::complex<float> * A,const int & lda,int * IPIV,const float & anorm,float * rcond,std::complex<float> * WORK,float * RWORK,int * info) const1148   void LAPACK<int,std::complex<float> >::GBCON(const char& NORM, const int& n, const int& kl, const int& ku, const std::complex<float>* A, const int& lda, int* IPIV, const float& anorm, float* rcond, std::complex<float>* WORK, float* RWORK, int* info) const
1149   {
1150     CGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1151   }
1152 
1153 
LANGB(const char & NORM,const int & n,const int & kl,const int & ku,const std::complex<float> * A,const int & lda,float * WORK) const1154   float LAPACK<int,std::complex<float> >::LANGB(const char& NORM, const int& n, const int& kl, const int& ku, const std::complex<float>* A, const int& lda, float* WORK) const
1155   {
1156     return( CLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1157   }
1158 
1159 
GESV(const int & n,const int & nrhs,std::complex<float> * A,const int & lda,int * IPIV,std::complex<float> * B,const int & ldb,int * info) const1160   void LAPACK<int,std::complex<float> >::GESV(const int& n, const int& nrhs, std::complex<float>* A, const int& lda, int* IPIV, std::complex<float>* B, const int& ldb, int* info) const
1161   {
1162     CGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1163   }
1164 
1165 
GEEQU(const int & m,const int & n,const std::complex<float> * A,const int & lda,float * R,float * C,float * rowcond,float * colcond,float * amax,int * info) const1166   void LAPACK<int,std::complex<float> >::GEEQU(const int& m, const int& n, const std::complex<float>* A, const int& lda, float* R, float* C, float* rowcond, float* colcond, float* amax, int* info) const
1167   {
1168     CGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1169   }
1170 
1171 
GERFS(const char & TRANS,const int & n,const int & nrhs,const std::complex<float> * A,const int & lda,const std::complex<float> * AF,const int & ldaf,const int * IPIV,const std::complex<float> * B,const int & ldb,std::complex<float> * X,const int & ldx,float * FERR,float * BERR,std::complex<float> * WORK,float * RWORK,int * info) const1172   void LAPACK<int,std::complex<float> >::GERFS(const char& TRANS, const int& n, const int& nrhs, const std::complex<float>* A, const int& lda, const std::complex<float>* AF, const int& ldaf, const int* IPIV, const std::complex<float>* B, const int& ldb, std::complex<float>* X, const int& ldx, float* FERR, float* BERR, std::complex<float>* WORK, float* RWORK, int* info) const
1173   {
1174     CGERFS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1175   }
1176 
1177 
GBEQU(const int & m,const int & n,const int & kl,const int & ku,const std::complex<float> * A,const int & lda,float * R,float * C,float * rowcond,float * colcond,float * amax,int * info) const1178   void LAPACK<int,std::complex<float> >::GBEQU(const int& m, const int& n, const int& kl, const int& ku, const std::complex<float>* A, const int& lda, float* R, float* C, float* rowcond, float* colcond, float* amax, int* info) const
1179   {
1180     CGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1181   }
1182 
1183 
GBRFS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const std::complex<float> * A,const int & lda,const std::complex<float> * AF,const int & ldaf,const int * IPIV,const std::complex<float> * B,const int & ldb,std::complex<float> * X,const int & ldx,float * FERR,float * BERR,std::complex<float> * WORK,float * RWORK,int * info) const1184   void LAPACK<int,std::complex<float> >::GBRFS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const std::complex<float>* A, const int& lda, const std::complex<float>* AF, const int& ldaf, const int* IPIV, const std::complex<float>* B, const int& ldb, std::complex<float>* X, const int& ldx, float* FERR, float* BERR, std::complex<float>* WORK, float* RWORK, int* info) const
1185   {
1186     CGBRFS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1187   }
1188 
GESVX(const char & FACT,const char & TRANS,const int & n,const int & nrhs,std::complex<float> * A,const int & lda,std::complex<float> * AF,const int & ldaf,int * IPIV,char * EQUED,float * R,float * C,std::complex<float> * B,const int & ldb,std::complex<float> * X,const int & ldx,float * rcond,float * FERR,float * BERR,std::complex<float> * WORK,float * RWORK,int * info) const1189   void LAPACK<int,std::complex<float> >::GESVX(const char& FACT, const char& TRANS, const int& n, const int& nrhs, std::complex<float>* A, const int& lda, std::complex<float>* AF, const int& ldaf, int* IPIV, char* EQUED, float* R, float* C, std::complex<float>* B, const int& ldb, std::complex<float>* X, const int& ldx, float* rcond, float* FERR, float* BERR, std::complex<float>* WORK, float* RWORK, int* info) const
1190   {
1191     CGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1192   }
1193 
1194 
GEHRD(const int & n,const int & ilo,const int & ihi,std::complex<float> * A,const int & lda,std::complex<float> * TAU,std::complex<float> * WORK,const int & lwork,int * info) const1195   void LAPACK<int,std::complex<float> >::GEHRD(const int& n, const int& ilo, const int& ihi, std::complex<float>* A, const int& lda, std::complex<float>* TAU, std::complex<float>* WORK, const int& lwork, int* info) const
1196   {
1197     CGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1198   }
1199 
1200 
TRTRS(const char & UPLO,const char & TRANS,const char & DIAG,const int & n,const int & nrhs,const std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,int * info) const1201   void LAPACK<int,std::complex<float> >::TRTRS(const char& UPLO, const char& TRANS, const char& DIAG, const int& n, const int& nrhs, const std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, int* info) const
1202   {
1203     CTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1204   }
1205 
1206 
TRTRI(const char & UPLO,const char & DIAG,const int & n,const std::complex<float> * A,const int & lda,int * info) const1207   void LAPACK<int,std::complex<float> >::TRTRI(const char& UPLO, const char& DIAG, const int& n, const std::complex<float>* A, const int& lda, int* info) const
1208   {
1209     CTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1210   }
1211 
1212 
STEQR(const char & COMPZ,const int & n,float * D,float * E,std::complex<float> * Z,const int & ldz,float * WORK,int * info) const1213   void LAPACK<int,std::complex<float> >::STEQR(const char& COMPZ, const int& n, float* D, float* E, std::complex<float>* Z, const int& ldz, float* WORK, int* info) const
1214   {
1215     CSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1216   }
1217 
1218 
PTEQR(const char & COMPZ,const int & n,float * D,float * E,std::complex<float> * Z,const int & ldz,float * WORK,int * info) const1219   void LAPACK<int,std::complex<float> >::PTEQR(const char& COMPZ, const int& n, float* D, float* E, std::complex<float>* Z, const int& ldz, float* WORK, int* info) const
1220   {
1221     CPTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1222   }
1223 
1224 
HEEV(const char & JOBZ,const char & UPLO,const int & n,std::complex<float> * A,const int & lda,float * W,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1225   void LAPACK<int,std::complex<float> >::HEEV(const char& JOBZ, const char& UPLO, const int& n, std::complex<float> * A, const int& lda, float*  W, std::complex<float> * WORK, const int& lwork, float* RWORK, int* info) const
1226   {
1227     CHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1228   }
1229 
1230 
HEGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,float * W,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1231   void LAPACK<int,std::complex<float> >::HEGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, std::complex<float> * A, const int& lda, std::complex<float> * B, const int& ldb, float*  W, std::complex<float> * WORK, const int& lwork, float* RWORK, int* info) const
1232   {
1233     CHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1234   }
1235 
1236 
HSEQR(const char & JOB,const char & COMPZ,const int & n,const int & ilo,const int & ihi,std::complex<float> * H,const int & ldh,std::complex<float> * W,std::complex<float> * Z,const int & ldz,std::complex<float> * WORK,const int & lwork,int * info) const1237   void LAPACK<int, std::complex<float> >::HSEQR(const char& JOB, const char& COMPZ, const int& n, const int& ilo, const int& ihi, std::complex<float>* H, const int& ldh, std::complex<float>* W, std::complex<float>* Z, const int& ldz, std::complex<float>* WORK, const int& lwork, int* info) const
1238   {
1239     CHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1240   }
1241 
1242 
GEES(const char & JOBVS,const char & SORT,int (* ptr2func)(std::complex<float> *),const int & n,std::complex<float> * A,const int & lda,int * sdim,std::complex<float> * W,std::complex<float> * VS,const int & ldvs,std::complex<float> * WORK,const int & lwork,float * RWORK,int * BWORK,int * info) const1243   void LAPACK<int, std::complex<float> >::GEES(const char& JOBVS, const char& SORT, int (*ptr2func)(std::complex<float>*), const int& n, std::complex<float>* A, const int& lda, int* sdim, std::complex<float>* W, std::complex<float>* VS, const int& ldvs, std::complex<float>* WORK, const int& lwork, float* RWORK, int* BWORK, int* info) const
1244   {
1245     CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1246   }
1247 
1248 
GEES(const char & JOBVS,const int & n,std::complex<float> * A,const int & lda,int * sdim,float * WR,float * WI,std::complex<float> * VS,const int & ldvs,std::complex<float> * WORK,const int & lwork,float * RWORK,int * BWORK,int * info) const1249   void LAPACK<int, std::complex<float> >::GEES(const char& JOBVS, const int& n, std::complex<float>* A, const int& lda, int* sdim, float* WR, float* WI, std::complex<float>* VS, const int& ldvs, std::complex<float>* WORK, const int& lwork, float* RWORK, int* BWORK, int* info) const
1250   {
1251     int (*nullfptr)(std::complex<float>*) = NULL;
1252     std::vector< std::complex<float> > W(n);
1253     const char sort = 'N';
1254     CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1255     for (int i=0; i<n; i++) {
1256       WR[i] = W[i].real();
1257       WI[i] = W[i].imag();
1258     }
1259   }
1260 
1261 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * W,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1262   void LAPACK<int, std::complex<float> >::GEEV(const char& JOBVL, const char& JOBVR, const int& n, std::complex<float>* A, const int& lda, std::complex<float>* W, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, std::complex<float>* WORK, const int& lwork, float* RWORK, int* info) const
1263   {
1264     CGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1265   }
1266 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,std::complex<float> * A,const int & lda,float * WR,float * WI,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1267   void LAPACK<int, std::complex<float> >::GEEV(const char& JOBVL, const char& JOBVR, const int& n, std::complex<float>* A, const int& lda, float* WR, float* WI, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, std::complex<float>* WORK, const int& lwork, float* RWORK, int* info) const
1268   {
1269     std::vector<std::complex<float> > w (n);
1270     std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1271     GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1272     if (*info == 0) {
1273       // The eigenvalues are only valid on output if INFO is zero.
1274       // Otherwise, we shouldn't even write to WR or WI.
1275       for (int k = 0; k < n; ++k) {
1276         WR[k] = w[k].real ();
1277         WI[k] = w[k].imag ();
1278       }
1279     }
1280   }
1281 
GESVD(const char & JOBU,const char & JOBVT,const int & m,const int & n,std::complex<float> * A,const int & lda,float * S,std::complex<float> * U,const int & ldu,std::complex<float> * V,const int & ldv,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1282   void LAPACK<int, std::complex<float> >::GESVD(const char& JOBU, const char& JOBVT, const int& m, const int& n, std::complex<float> * A, const int& lda, float* S, std::complex<float> * U, const int& ldu, std::complex<float> * V, const int& ldv, std::complex<float> * WORK, const int& lwork, float* RWORK, int* info) const {
1283     CGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1284   }
1285 
1286 
GEEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * W,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,int * ilo,int * ihi,float * SCALE,float * abnrm,float * RCONDE,float * RCONDV,std::complex<float> * WORK,const int & lwork,float * RWORK,int * info) const1287   void LAPACK<int, std::complex<float> >::GEEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<float>* A, const int& lda, std::complex<float>* W, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, int* ilo, int* ihi, float* SCALE, float* abnrm, float* RCONDE, float* RCONDV, std::complex<float>* WORK, const int& lwork, float* RWORK, int* info) const
1288   {
1289     CGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, info);
1290   }
1291 
1292 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,std::complex<float> * ALPHA,std::complex<float> * BETA,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,int * ilo,int * ihi,float * lscale,float * rscale,float * abnrm,float * bbnrm,float * RCONDE,float * RCONDV,std::complex<float> * WORK,const int & lwork,float * RWORK,int * IWORK,int * BWORK,int * info) const1293   void LAPACK<int, std::complex<float> >::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, std::complex<float>* ALPHA, std::complex<float>* BETA, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, int* ilo, int* ihi, float* lscale, float* rscale, float* abnrm, float* bbnrm, float* RCONDE, float* RCONDV, std::complex<float>* WORK, const int& lwork, float* RWORK, int* IWORK, int* BWORK, int* info) const
1294   {
1295     CGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHA, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, IWORK, BWORK, info);
1296   }
1297 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<float> * A,const int & lda,std::complex<float> * B,const int & ldb,float * ALPHAR,float * ALPHAI,std::complex<float> * BETA,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,int * ilo,int * ihi,float * lscale,float * rscale,float * abnrm,float * bbnrm,float * RCONDE,float * RCONDV,std::complex<float> * WORK,const int & lwork,float * RWORK,int * IWORK,int * BWORK,int * info) const1298   void LAPACK<int, std::complex<float> >::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<float>* A, const int& lda, std::complex<float>* B, const int& ldb, float* ALPHAR, float* ALPHAI, std::complex<float>* BETA, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, int* ilo, int* ihi, float* lscale, float* rscale, float* abnrm, float* bbnrm, float* RCONDE, float* RCONDV, std::complex<float>* WORK, const int& lwork, float* RWORK, int* IWORK, int* BWORK, int* info) const
1299   {
1300     std::vector<std::complex<float> > w (n);
1301     std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1302     GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, w_rawPtr, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, RWORK, IWORK, BWORK, info);
1303     if (*info == 0) {
1304       // The eigenvalues are only valid on output if INFO is zero.
1305       // Otherwise, we shouldn't even write to WR or WI.
1306       for (int k = 0; k < n; ++k) {
1307         ALPHAR[k] = w[k].real ();
1308         ALPHAI[k] = w[k].imag ();
1309       }
1310     }
1311   }
1312 
1313 
TREVC(const char & SIDE,const char & HOWMNY,int * select,const int & n,const std::complex<float> * T,const int & ldt,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,const int & mm,int * m,std::complex<float> * WORK,float * RWORK,int * info) const1314   void LAPACK<int, std::complex<float> >::TREVC(const char& SIDE, const char& HOWMNY, int* select, const int& n, const std::complex<float>* T, const int& ldt, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, const int& mm, int* m, std::complex<float>* WORK, float* RWORK, int* info) const
1315   {
1316     CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1317   }
1318 
1319 
TREVC(const char & SIDE,const int & n,const std::complex<float> * T,const int & ldt,std::complex<float> * VL,const int & ldvl,std::complex<float> * VR,const int & ldvr,const int & mm,int * m,std::complex<float> * WORK,float * RWORK,int * info) const1320   void LAPACK<int, std::complex<float> >::TREVC(const char& SIDE, const int& n, const std::complex<float>* T, const int& ldt, std::complex<float>* VL, const int& ldvl, std::complex<float>* VR, const int& ldvr, const int& mm, int* m, std::complex<float>* WORK, float* RWORK, int* info) const
1321   {
1322     std::vector<int> select(1);
1323     const char& whch = 'A';
1324     CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1325   }
1326 
TREXC(const char & COMPQ,const int & n,std::complex<float> * T,const int & ldt,std::complex<float> * Q,const int & ldq,int * ifst,int * ilst,std::complex<float> * WORK,int * info) const1327   void LAPACK<int, std::complex<float> >::TREXC(const char& COMPQ, const int& n, std::complex<float>* T, const int& ldt, std::complex<float>* Q, const int& ldq, int* ifst, int* ilst, std::complex<float>* WORK, int* info) const
1328   {
1329     CTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, info);
1330   }
1331 
1332 
LARTG(const std::complex<float> f,const std::complex<float> g,float * c,std::complex<float> * s,std::complex<float> * r) const1333   void LAPACK<int, std::complex<float> >::LARTG( const std::complex<float> f, const std::complex<float> g, float* c, std::complex<float>* s, std::complex<float>* r ) const
1334   {
1335     CLARTG_F77(&f, &g, c, s, r);
1336   }
1337 
1338 
LARFG(const int & n,std::complex<float> * alpha,std::complex<float> * x,const int & incx,std::complex<float> * tau) const1339   void LAPACK<int, std::complex<float> >::LARFG( const int& n, std::complex<float>* alpha, std::complex<float>* x, const int& incx, std::complex<float>* tau ) const
1340   {
1341     CLARFG_F77(&n, alpha, x, &incx, tau);
1342   }
1343 
GEBAL(const char & JOBZ,const int & n,std::complex<float> * A,const int & lda,int * ilo,int * ihi,float * scale,int * info) const1344   void LAPACK<int, std::complex<float> >::GEBAL(const char& JOBZ, const int& n, std::complex<float>* A, const int& lda, int* ilo, int* ihi, float* scale, int* info) const
1345   {
1346     CGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
1347   }
1348 
1349 
GEBAK(const char & JOBZ,const char & SIDE,const int & n,const int & ilo,const int & ihi,const float * scale,const int & m,std::complex<float> * V,const int & ldv,int * info) const1350   void LAPACK<int, std::complex<float> >::GEBAK(const char& JOBZ, const char& SIDE, const int& n, const int& ilo, const int& ihi, const float* scale, const int& m, std::complex<float>* V, const int& ldv, int* info) const
1351   {
1352     CGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1353   }
1354 
1355 
1356 #ifdef HAVE_TEUCHOS_LAPACKLARND
LARND(const int & idist,int * seed) const1357   std::complex<float> LAPACK<int, std::complex<float> >::LARND( const int& idist, int* seed ) const
1358   {
1359     return(CLARND_F77(&idist, seed));
1360   }
1361 #endif
1362 
LARNV(const int & idist,int * seed,const int & n,std::complex<float> * v) const1363   void LAPACK<int, std::complex<float> >::LARNV( const int& idist, int* seed, const int& n, std::complex<float>* v ) const
1364   {
1365     CLARNV_F77(&idist, seed, &n, v);
1366   }
1367 
1368 
ILAENV(const int & ispec,const std::string & NAME,const std::string & OPTS,const int & N1,const int & N2,const int & N3,const int & N4) const1369   int LAPACK<int, std::complex<float> >::ILAENV( const int& ispec, const std::string& NAME, const std::string& OPTS, const int& N1, const int& N2, const int& N3, const int& N4 ) const
1370   {
1371     unsigned int opts_length = OPTS.length();
1372     std::string temp_NAME = "c" + NAME;
1373     unsigned int name_length = temp_NAME.length();
1374     return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1375   }
1376 
1377   // END INT, COMPLEX<FLOAT> SPECIALIZATION IMPLEMENTATION //
1378 
1379   // BEGIN INT, COMPLEX<DOUBLE> SPECIALIZATION IMPLEMENTATION //
1380 
1381 
PTTRF(const int & n,std::complex<double> * d,std::complex<double> * e,int * info) const1382   void LAPACK<int, std::complex<double> >::PTTRF(const int& n, std::complex<double>* d, std::complex<double>* e, int* info) const
1383   {
1384     ZPTTRF_F77(&n,d,e,info);
1385   }
1386 
1387 
PTTRS(const int & n,const int & nrhs,const std::complex<double> * d,const std::complex<double> * e,std::complex<double> * B,const int & ldb,int * info) const1388   void LAPACK<int, std::complex<double> >::PTTRS(const int& n, const int& nrhs, const std::complex<double>* d, const std::complex<double>* e, std::complex<double>* B, const int& ldb, int* info) const
1389   {
1390     ZPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
1391   }
1392 
1393 
POTRF(const char & UPLO,const int & n,std::complex<double> * A,const int & lda,int * info) const1394   void LAPACK<int, std::complex<double> >::POTRF(const char& UPLO, const int& n, std::complex<double>* A, const int& lda, int* info) const
1395   {
1396     ZPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1397   }
1398 
1399 
POTRS(const char & UPLO,const int & n,const int & nrhs,const std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,int * info) const1400   void LAPACK<int, std::complex<double> >::POTRS(const char& UPLO, const int& n, const int& nrhs, const std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, int* info) const
1401   {
1402     ZPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1403   }
1404 
1405 
POTRI(const char & UPLO,const int & n,std::complex<double> * A,const int & lda,int * info) const1406   void LAPACK<int, std::complex<double> >::POTRI(const char& UPLO, const int& n, std::complex<double>* A, const int& lda, int* info) const
1407   {
1408     ZPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1409   }
1410 
1411 
POCON(const char & UPLO,const int & n,const std::complex<double> * A,const int & lda,const double & anorm,double * rcond,std::complex<double> * WORK,double * RWORK,int * info) const1412   void LAPACK<int, std::complex<double> >::POCON(const char& UPLO, const int& n, const std::complex<double>* A, const int& lda, const double& anorm, double* rcond, std::complex<double>* WORK, double* RWORK, int* info) const
1413   {
1414     ZPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1415   }
1416 
1417 
POSV(const char & UPLO,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,int * info) const1418   void LAPACK<int, std::complex<double> >::POSV(const char& UPLO, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, int* info) const
1419   {
1420     ZPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1421   }
1422 
1423 
POEQU(const int & n,const std::complex<double> * A,const int & lda,double * S,double * scond,double * amax,int * info) const1424   void LAPACK<int, std::complex<double> >::POEQU(const int& n, const std::complex<double>* A, const int& lda, double* S, double* scond, double* amax, int* info) const
1425   {
1426     ZPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1427   }
1428 
1429 
PORFS(const char & UPLO,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,const std::complex<double> * AF,const int & ldaf,const std::complex<double> * B,const int & ldb,std::complex<double> * X,const int & ldx,double * FERR,double * BERR,std::complex<double> * WORK,double * RWORK,int * info) const1430   void LAPACK<int, std::complex<double> >::PORFS(const char& UPLO, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, const std::complex<double>* AF, const int& ldaf, const std::complex<double>* B, const int& ldb, std::complex<double>* X, const int& ldx, double* FERR, double* BERR, std::complex<double>* WORK, double* RWORK, int* info) const
1431   {
1432     ZPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1433   }
1434 
POSVX(const char & FACT,const char & UPLO,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,std::complex<double> * AF,const int & ldaf,char * EQUED,double * S,std::complex<double> * B,const int & ldb,std::complex<double> * X,const int & ldx,double * rcond,double * FERR,double * BERR,std::complex<double> * WORK,double * RWORK,int * info) const1435   void LAPACK<int, std::complex<double> >::POSVX(const char& FACT, const char& UPLO, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, std::complex<double>* AF, const int& ldaf, char* EQUED, double* S, std::complex<double>* B, const int& ldb, std::complex<double>* X, const int& ldx, double* rcond, double* FERR, double* BERR, std::complex<double>* WORK, double* RWORK, int* info) const
1436   {
1437     ZPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1438   }
1439 
1440 
GELS(const char & TRANS,const int & m,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,std::complex<double> * WORK,const int & lwork,int * info) const1441   void LAPACK<int,std::complex<double> >::GELS(const char& TRANS, const int& m, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, std::complex<double>* WORK, const int& lwork, int* info) const
1442   {
1443     ZGELS_F77(CHAR_MACRO(TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1444   }
1445 
1446 
GELSS(const int & m,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,double * S,const double & rcond,int * rank,std::complex<double> * WORK,const int & lwork,double * rwork,int * info) const1447   void LAPACK<int, std::complex<double> >::GELSS(const int& m, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, double* S, const double& rcond, int* rank, std::complex<double>* WORK, const int& lwork, double* rwork, int* info) const
1448   {
1449     ZGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1450   }
1451 
1452 
GEQRF(const int & m,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * TAU,std::complex<double> * WORK,const int & lwork,int * info) const1453   void LAPACK<int,std::complex<double> >::GEQRF( const int& m, const int& n, std::complex<double>* A, const int& lda, std::complex<double>* TAU, std::complex<double>* WORK, const int& lwork, int* info) const
1454   {
1455     ZGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1456   }
1457 
GEQR2(const int & m,const int & n,std::complex<double> A[],const int & lda,std::complex<double> TAU[],std::complex<double> WORK[],int * const info) const1458   void LAPACK<int,std::complex<double> >::GEQR2 (const int& m, const int& n, std::complex<double> A[], const int& lda, std::complex<double> TAU[], std::complex<double> WORK[], int* const info) const
1459   {
1460     ZGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1461   }
1462 
UNGQR(const int & m,const int & n,const int & k,std::complex<double> * A,const int & lda,const std::complex<double> * TAU,std::complex<double> * WORK,const int & lwork,int * info) const1463   void LAPACK<int,std::complex<double> >::UNGQR(const int& m, const int& n, const int& k, std::complex<double>* A, const int& lda, const std::complex<double>* TAU, std::complex<double>* WORK, const int& lwork, int* info) const
1464   {
1465     ZUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1466   }
1467 
1468 
UNMQR(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,std::complex<double> * A,const int & lda,const std::complex<double> * TAU,std::complex<double> * C,const int & ldc,std::complex<double> * WORK,const int & lwork,int * info) const1469   void LAPACK<int,std::complex<double> >::UNMQR(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, std::complex<double>* A, const int& lda, const std::complex<double>* TAU, std::complex<double>* C, const int& ldc, std::complex<double>* WORK, const int& lwork, int* info) const
1470   {
1471     ZUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1472   }
1473 
UNM2R(const char & SIDE,const char & TRANS,const int & M,const int & N,const int & K,const std::complex<double> A[],const int & LDA,const std::complex<double> TAU[],std::complex<double> C[],const int & LDC,std::complex<double> WORK[],int * const INFO) const1474   void LAPACK<int,std::complex<double> >::UNM2R (const char& SIDE, const char& TRANS, const int& M, const int& N, const int& K, const std::complex<double> A[], const int& LDA, const std::complex<double> TAU[], std::complex<double> C[], const int& LDC, std::complex<double> WORK[], int* const INFO) const
1475   {
1476     ZUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1477   }
1478 
GETRF(const int & m,const int & n,std::complex<double> * A,const int & lda,int * IPIV,int * info) const1479   void LAPACK<int,std::complex<double> >::GETRF(const int& m, const int& n, std::complex<double>* A, const int& lda, int* IPIV, int* info) const
1480   {
1481     ZGETRF_F77(&m, &n, A, &lda, IPIV, info);
1482   }
1483 
1484 
GETRS(const char & TRANS,const int & n,const int & nrhs,const std::complex<double> * A,const int & lda,const int * IPIV,std::complex<double> * B,const int & ldb,int * info) const1485   void LAPACK<int,std::complex<double> >::GETRS(const char& TRANS, const int& n, const int& nrhs, const std::complex<double>* A, const int& lda, const int* IPIV, std::complex<double>* B, const int& ldb, int* info) const
1486   {
1487     ZGETRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1488   }
1489 
1490 
LASCL(const char & TYPE,const int & kl,const int & ku,const double & cfrom,const double & cto,const int & m,const int & n,std::complex<double> * A,const int & lda,int * info) const1491   void LAPACK<int,std::complex<double> >::LASCL(const char& TYPE, const int& kl, const int& ku, const double& cfrom, const double& cto, const int& m, const int& n, std::complex<double>* A, const int& lda, int* info) const
1492   { ZLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1493 
GEQP3(const int & m,const int & n,std::complex<double> * A,const int & lda,int * jpvt,std::complex<double> * TAU,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1494   void LAPACK<int,std::complex<double> >::GEQP3(const int& m, const int& n, std::complex<double>* A, const int& lda, int* jpvt, std::complex<double>* TAU, std::complex<double>* WORK, const int& lwork, double* RWORK, int* info ) const
1495   {
1496     ZGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1497   }
1498 
1499   void LAPACK<int, std::complex<double> >::
LASWP(const int & N,std::complex<double> A[],const int & LDA,const int & K1,const int & K2,const int IPIV[],const int & INCX) const1500   LASWP (const int& N,
1501          std::complex<double> A[],
1502          const int& LDA,
1503          const int& K1,
1504          const int& K2,
1505          const int IPIV[],
1506          const int& INCX) const
1507   {
1508     ZLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1509   }
1510 
GBTRF(const int & m,const int & n,const int & kl,const int & ku,std::complex<double> * A,const int & lda,int * IPIV,int * info) const1511   void LAPACK<int,std::complex<double> >::GBTRF(const int& m, const int& n, const int& kl, const int& ku, std::complex<double>* A, const int& lda, int* IPIV, int* info) const
1512   {
1513     ZGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info);
1514   }
1515 
1516 
GBTRS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const std::complex<double> * A,const int & lda,const int * IPIV,std::complex<double> * B,const int & ldb,int * info) const1517   void LAPACK<int,std::complex<double> >::GBTRS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const std::complex<double>* A, const int& lda, const int* IPIV, std::complex<double>* B, const int& ldb, int* info) const
1518   {
1519     ZGBTRS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1520   }
1521 
1522 
GTTRF(const int & n,std::complex<double> * dl,std::complex<double> * d,std::complex<double> * du,std::complex<double> * du2,int * IPIV,int * info) const1523   void LAPACK<int,std::complex<double> >::GTTRF(const int& n, std::complex<double>* dl, std::complex<double>* d, std::complex<double>* du, std::complex<double>* du2, int* IPIV, int* info) const
1524   {
1525     ZGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1526   }
1527 
1528 
GTTRS(const char & TRANS,const int & n,const int & nrhs,const std::complex<double> * dl,const std::complex<double> * d,const std::complex<double> * du,const std::complex<double> * du2,const int * IPIV,std::complex<double> * B,const int & ldb,int * info) const1529   void LAPACK<int,std::complex<double> >::GTTRS(const char& TRANS, const int& n, const int& nrhs, const std::complex<double>* dl, const std::complex<double>* d, const std::complex<double>* du, const std::complex<double>* du2, const int* IPIV, std::complex<double>* B, const int& ldb, int* info) const
1530   {
1531     ZGTTRS_F77(CHAR_MACRO(TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1532   }
1533 
1534 
GETRI(const int & n,std::complex<double> * A,const int & lda,const int * IPIV,std::complex<double> * WORK,const int & lwork,int * info) const1535   void LAPACK<int,std::complex<double> >::GETRI(const int& n, std::complex<double>* A, const int& lda, const int* IPIV, std::complex<double>* WORK, const int& lwork, int* info) const
1536   {
1537     ZGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1538   }
1539 
1540   void
LATRS(const char & UPLO,const char & TRANS,const char & DIAG,const char & NORMIN,const int & N,std::complex<double> * A,const int & LDA,std::complex<double> * X,double * SCALE,double * CNORM,int * INFO) const1541   LAPACK<int, std::complex<double> >::LATRS (const char& UPLO,
1542                                              const char& TRANS,
1543                                              const char& DIAG,
1544                                              const char& NORMIN,
1545                                              const int& N,
1546                                              std::complex<double>* A,
1547                                              const int& LDA,
1548                                              std::complex<double>* X,
1549                                              double* SCALE,
1550                                              double* CNORM,
1551                                              int* INFO) const
1552   {
1553     ZLATRS_F77(CHAR_MACRO(UPLO),
1554                CHAR_MACRO(TRANS),
1555                CHAR_MACRO(DIAG),
1556                CHAR_MACRO(NORMIN),
1557                &N,
1558                A,
1559                &LDA,
1560                X,
1561                SCALE,
1562                CNORM,
1563                INFO);
1564   }
1565 
GECON(const char & NORM,const int & n,const std::complex<double> * A,const int & lda,const double & anorm,double * rcond,std::complex<double> * WORK,double * RWORK,int * info) const1566   void LAPACK<int,std::complex<double> >::GECON(const char& NORM, const int& n, const std::complex<double>* A, const int& lda, const double& anorm, double* rcond, std::complex<double>* WORK, double* RWORK, int* info) const
1567   {
1568     ZGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1569   }
1570 
1571 
GBCON(const char & NORM,const int & n,const int & kl,const int & ku,const std::complex<double> * A,const int & lda,int * IPIV,const double & anorm,double * rcond,std::complex<double> * WORK,double * RWORK,int * info) const1572   void LAPACK<int,std::complex<double> >::GBCON(const char& NORM, const int& n, const int& kl, const int& ku, const std::complex<double>* A, const int& lda, int* IPIV, const double& anorm, double* rcond, std::complex<double>* WORK, double* RWORK, int* info) const
1573   {
1574     ZGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1575   }
1576 
1577 
LANGB(const char & NORM,const int & n,const int & kl,const int & ku,const std::complex<double> * A,const int & lda,double * WORK) const1578   double LAPACK<int,std::complex<double> >::LANGB(const char& NORM, const int& n, const int& kl, const int& ku, const std::complex<double>* A, const int& lda, double* WORK) const
1579   {
1580     return( ZLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1581   }
1582 
1583 
GESV(const int & n,const int & nrhs,std::complex<double> * A,const int & lda,int * IPIV,std::complex<double> * B,const int & ldb,int * info) const1584   void LAPACK<int,std::complex<double> >::GESV(const int& n, const int& nrhs, std::complex<double>* A, const int& lda, int* IPIV, std::complex<double>* B, const int& ldb, int* info) const
1585   {
1586     ZGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1587   }
1588 
1589 
GEEQU(const int & m,const int & n,const std::complex<double> * A,const int & lda,double * R,double * C,double * rowcond,double * colcond,double * amax,int * info) const1590   void LAPACK<int,std::complex<double> >::GEEQU(const int& m, const int& n, const std::complex<double>* A, const int& lda, double* R, double* C, double* rowcond, double* colcond, double* amax, int* info) const
1591   {
1592     ZGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1593   }
1594 
1595 
GERFS(const char & TRANS,const int & n,const int & nrhs,const std::complex<double> * A,const int & lda,const std::complex<double> * AF,const int & ldaf,const int * IPIV,const std::complex<double> * B,const int & ldb,std::complex<double> * X,const int & ldx,double * FERR,double * BERR,std::complex<double> * WORK,double * RWORK,int * info) const1596   void LAPACK<int,std::complex<double> >::GERFS(const char& TRANS, const int& n, const int& nrhs, const std::complex<double>* A, const int& lda, const std::complex<double>* AF, const int& ldaf, const int* IPIV, const std::complex<double>* B, const int& ldb, std::complex<double>* X, const int& ldx, double* FERR, double* BERR, std::complex<double>* WORK, double* RWORK, int* info) const
1597   {
1598     ZGERFS_F77(CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1599   }
1600 
1601 
GBEQU(const int & m,const int & n,const int & kl,const int & ku,const std::complex<double> * A,const int & lda,double * R,double * C,double * rowcond,double * colcond,double * amax,int * info) const1602   void LAPACK<int,std::complex<double> >::GBEQU(const int& m, const int& n, const int& kl, const int& ku, const std::complex<double>* A, const int& lda, double* R, double* C, double* rowcond, double* colcond, double* amax, int* info) const
1603   {
1604     ZGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1605   }
1606 
1607 
GBRFS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const std::complex<double> * A,const int & lda,const std::complex<double> * AF,const int & ldaf,const int * IPIV,const std::complex<double> * B,const int & ldb,std::complex<double> * X,const int & ldx,double * FERR,double * BERR,std::complex<double> * WORK,double * RWORK,int * info) const1608   void LAPACK<int,std::complex<double> >::GBRFS(const char& TRANS, const int& n, const int& kl, const int& ku, const int& nrhs, const std::complex<double>* A, const int& lda, const std::complex<double>* AF, const int& ldaf, const int* IPIV, const std::complex<double>* B, const int& ldb, std::complex<double>* X, const int& ldx, double* FERR, double* BERR, std::complex<double>* WORK, double* RWORK, int* info) const
1609   {
1610     ZGBRFS_F77(CHAR_MACRO(TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1611   }
1612 
GESVX(const char & FACT,const char & TRANS,const int & n,const int & nrhs,std::complex<double> * A,const int & lda,std::complex<double> * AF,const int & ldaf,int * IPIV,char * EQUED,double * R,double * C,std::complex<double> * B,const int & ldb,std::complex<double> * X,const int & ldx,double * rcond,double * FERR,double * BERR,std::complex<double> * WORK,double * RWORK,int * info) const1613   void LAPACK<int,std::complex<double> >::GESVX(const char& FACT, const char& TRANS, const int& n, const int& nrhs, std::complex<double>* A, const int& lda, std::complex<double>* AF, const int& ldaf, int* IPIV, char* EQUED, double* R, double* C, std::complex<double>* B, const int& ldb, std::complex<double>* X, const int& ldx, double* rcond, double* FERR, double* BERR, std::complex<double>* WORK, double* RWORK, int* info) const
1614   {
1615     ZGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1616   }
1617 
1618 
GEHRD(const int & n,const int & ilo,const int & ihi,std::complex<double> * A,const int & lda,std::complex<double> * TAU,std::complex<double> * WORK,const int & lwork,int * info) const1619   void LAPACK<int,std::complex<double> >::GEHRD(const int& n, const int& ilo, const int& ihi, std::complex<double>* A, const int& lda, std::complex<double>* TAU, std::complex<double>* WORK, const int& lwork, int* info) const
1620   {
1621     ZGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1622   }
1623 
1624 
TRTRS(const char & UPLO,const char & TRANS,const char & DIAG,const int & n,const int & nrhs,const std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,int * info) const1625   void LAPACK<int,std::complex<double> >::TRTRS(const char& UPLO, const char& TRANS, const char& DIAG, const int& n, const int& nrhs, const std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, int* info) const
1626   {
1627     ZTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1628   }
1629 
1630 
TRTRI(const char & UPLO,const char & DIAG,const int & n,const std::complex<double> * A,const int & lda,int * info) const1631   void LAPACK<int,std::complex<double> >::TRTRI(const char& UPLO, const char& DIAG, const int& n, const std::complex<double>* A, const int& lda, int* info) const
1632   {
1633     ZTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1634   }
1635 
1636 
STEQR(const char & COMPZ,const int & n,double * D,double * E,std::complex<double> * Z,const int & ldz,double * WORK,int * info) const1637   void LAPACK<int,std::complex<double> >::STEQR(const char& COMPZ, const int& n, double* D, double* E, std::complex<double>* Z, const int& ldz, double* WORK, int* info) const
1638   {
1639     ZSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1640   }
1641 
1642 
PTEQR(const char & COMPZ,const int & n,double * D,double * E,std::complex<double> * Z,const int & ldz,double * WORK,int * info) const1643   void LAPACK<int,std::complex<double> >::PTEQR(const char& COMPZ, const int& n, double* D, double* E, std::complex<double>* Z, const int& ldz, double* WORK, int* info) const
1644   {
1645     ZPTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1646   }
1647 
1648 
HEEV(const char & JOBZ,const char & UPLO,const int & n,std::complex<double> * A,const int & lda,double * W,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1649   void LAPACK<int,std::complex<double> >::HEEV(const char& JOBZ, const char& UPLO, const int& n, std::complex<double> * A, const int& lda, double*  W, std::complex<double> * WORK, const int& lwork, double* RWORK, int* info) const
1650   {
1651     ZHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1652   }
1653 
1654 
HEGV(const int & itype,const char & JOBZ,const char & UPLO,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,double * W,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1655   void LAPACK<int,std::complex<double> >::HEGV(const int& itype, const char& JOBZ, const char& UPLO, const int& n, std::complex<double> * A, const int& lda, std::complex<double> * B, const int& ldb, double*  W, std::complex<double> * WORK, const int& lwork, double* RWORK, int* info) const
1656   {
1657     ZHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1658   }
1659 
1660 
HSEQR(const char & JOB,const char & COMPZ,const int & n,const int & ilo,const int & ihi,std::complex<double> * H,const int & ldh,std::complex<double> * W,std::complex<double> * Z,const int & ldz,std::complex<double> * WORK,const int & lwork,int * info) const1661   void LAPACK<int, std::complex<double> >::HSEQR(const char& JOB, const char& COMPZ, const int& n, const int& ilo, const int& ihi, std::complex<double>* H, const int& ldh, std::complex<double>* W, std::complex<double>* Z, const int& ldz, std::complex<double>* WORK, const int& lwork, int* info) const
1662   {
1663     ZHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1664   }
1665 
1666 
GEES(const char & JOBVS,const char & SORT,int (* ptr2func)(std::complex<double> *),const int & n,std::complex<double> * A,const int & lda,int * sdim,std::complex<double> * W,std::complex<double> * VS,const int & ldvs,std::complex<double> * WORK,const int & lwork,double * RWORK,int * BWORK,int * info) const1667   void LAPACK<int, std::complex<double> >::GEES(const char& JOBVS, const char& SORT, int (*ptr2func)(std::complex<double>*), const int& n, std::complex<double>* A, const int& lda, int* sdim, std::complex<double>* W, std::complex<double>* VS, const int& ldvs, std::complex<double>* WORK, const int& lwork, double* RWORK, int* BWORK, int* info) const
1668   {
1669     ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1670   }
1671 
1672 
GEES(const char & JOBVS,const int & n,std::complex<double> * A,const int & lda,int * sdim,double * WR,double * WI,std::complex<double> * VS,const int & ldvs,std::complex<double> * WORK,const int & lwork,double * RWORK,int * BWORK,int * info) const1673   void LAPACK<int, std::complex<double> >::GEES(const char& JOBVS, const int& n, std::complex<double>* A, const int& lda, int* sdim, double* WR, double* WI, std::complex<double>* VS, const int& ldvs, std::complex<double>* WORK, const int& lwork, double* RWORK, int* BWORK, int* info) const
1674   {
1675     int (*nullfptr)(std::complex<double>*) = NULL;
1676     std::vector< std::complex<double> > W(n);
1677     const char sort = 'N';
1678     ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1679     for (int i=0; i<n; i++) {
1680       WR[i] = W[i].real();
1681       WI[i] = W[i].imag();
1682     }
1683   }
1684 
1685 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * W,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1686   void LAPACK<int, std::complex<double> >::GEEV(const char& JOBVL, const char& JOBVR, const int& n, std::complex<double>* A, const int& lda, std::complex<double>* W, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, std::complex<double>* WORK, const int& lwork, double* RWORK, int* info) const
1687   {
1688     ZGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1689   }
1690 
1691 
GEEV(const char & JOBVL,const char & JOBVR,const int & n,std::complex<double> * A,const int & lda,double * WR,double * WI,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1692   void LAPACK<int, std::complex<double> >::GEEV(const char& JOBVL, const char& JOBVR, const int& n, std::complex<double>* A, const int& lda, double* WR, double* WI, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, std::complex<double>* WORK, const int& lwork, double* RWORK, int* info) const
1693   {
1694     std::vector<std::complex<double> > w (n);
1695     std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1696     GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1697     if (*info == 0) {
1698       // The eigenvalues are only valid on output if INFO is zero.
1699       // Otherwise, we shouldn't even write to WR or WI.
1700       for (int k = 0; k < n; ++k) {
1701         WR[k] = w[k].real ();
1702         WI[k] = w[k].imag ();
1703       }
1704     }
1705   }
1706 
1707 
GESVD(const char & JOBU,const char & JOBVT,const int & m,const int & n,std::complex<double> * A,const int & lda,double * S,std::complex<double> * U,const int & ldu,std::complex<double> * V,const int & ldv,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1708   void LAPACK<int, std::complex<double> >::GESVD(const char& JOBU, const char& JOBVT, const int& m, const int& n, std::complex<double> * A, const int& lda, double* S, std::complex<double> * U, const int& ldu, std::complex<double> * V, const int& ldv, std::complex<double> * WORK, const int& lwork, double* RWORK, int* info) const {
1709     ZGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1710   }
1711 
GEEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * W,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,int * ilo,int * ihi,double * SCALE,double * abnrm,double * RCONDE,double * RCONDV,std::complex<double> * WORK,const int & lwork,double * RWORK,int * info) const1712   void LAPACK<int, std::complex<double> >::GEEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<double>* A, const int& lda, std::complex<double>* W, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, int* ilo, int* ihi, double* SCALE, double* abnrm, double* RCONDE, double* RCONDV, std::complex<double>* WORK, const int& lwork, double* RWORK, int* info) const
1713   {
1714     ZGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, info);
1715   }
1716 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,std::complex<double> * ALPHA,std::complex<double> * BETA,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,int * ilo,int * ihi,double * lscale,double * rscale,double * abnrm,double * bbnrm,double * RCONDE,double * RCONDV,std::complex<double> * WORK,const int & lwork,double * RWORK,int * IWORK,int * BWORK,int * info) const1717   void LAPACK<int, std::complex<double> >::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, std::complex<double>* ALPHA, std::complex<double>* BETA, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, int* ilo, int* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm, double* RCONDE, double* RCONDV, std::complex<double>* WORK, const int& lwork, double* RWORK, int* IWORK, int* BWORK, int* info) const
1718   {
1719     ZGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHA, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, IWORK, BWORK, info);
1720   }
1721 
GGEVX(const char & BALANC,const char & JOBVL,const char & JOBVR,const char & SENSE,const int & n,std::complex<double> * A,const int & lda,std::complex<double> * B,const int & ldb,double * ALPHAR,double * ALPHAI,std::complex<double> * BETA,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,int * ilo,int * ihi,double * lscale,double * rscale,double * abnrm,double * bbnrm,double * RCONDE,double * RCONDV,std::complex<double> * WORK,const int & lwork,double * RWORK,int * IWORK,int * BWORK,int * info) const1722   void LAPACK<int, std::complex<double> >::GGEVX(const char& BALANC, const char& JOBVL, const char& JOBVR, const char& SENSE, const int& n, std::complex<double>* A, const int& lda, std::complex<double>* B, const int& ldb, double* ALPHAR, double* ALPHAI, std::complex<double>* BETA, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, int* ilo, int* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm, double* RCONDE, double* RCONDV, std::complex<double>* WORK, const int& lwork, double* RWORK, int* IWORK, int* BWORK, int* info) const
1723   {
1724     std::vector<std::complex<double> > w (n);
1725     std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1726     GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, w_rawPtr, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, RWORK, IWORK, BWORK, info);
1727     if (*info == 0) {
1728       // The eigenvalues are only valid on output if INFO is zero.
1729       // Otherwise, we shouldn't even write to WR or WI.
1730       for (int k = 0; k < n; ++k) {
1731         ALPHAR[k] = w[k].real ();
1732         ALPHAI[k] = w[k].imag ();
1733       }
1734     }
1735   }
1736 
TREVC(const char & SIDE,const char & HOWMNY,int * select,const int & n,const std::complex<double> * T,const int & ldt,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,const int & mm,int * m,std::complex<double> * WORK,double * RWORK,int * info) const1737   void LAPACK<int, std::complex<double> >::TREVC(const char& SIDE, const char& HOWMNY, int* select, const int& n, const std::complex<double>* T, const int& ldt, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, const int& mm, int* m, std::complex<double>* WORK, double* RWORK, int* info) const
1738   {
1739     ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1740   }
1741 
1742 
TREVC(const char & SIDE,const int & n,const std::complex<double> * T,const int & ldt,std::complex<double> * VL,const int & ldvl,std::complex<double> * VR,const int & ldvr,const int & mm,int * m,std::complex<double> * WORK,double * RWORK,int * info) const1743   void LAPACK<int, std::complex<double> >::TREVC(const char& SIDE, const int& n, const std::complex<double>* T, const int& ldt, std::complex<double>* VL, const int& ldvl, std::complex<double>* VR, const int& ldvr, const int& mm, int* m, std::complex<double>* WORK, double* RWORK, int* info) const
1744   {
1745     std::vector<int> select(1);
1746     const char& whch = 'A';
1747     ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1748   }
1749 
TREXC(const char & COMPQ,const int & n,std::complex<double> * T,const int & ldt,std::complex<double> * Q,const int & ldq,int * ifst,int * ilst,std::complex<double> * WORK,int * info) const1750   void LAPACK<int, std::complex<double> >::TREXC(const char& COMPQ, const int& n, std::complex<double>* T, const int& ldt, std::complex<double>* Q, const int& ldq, int* ifst, int* ilst, std::complex<double>* WORK, int* info) const
1751   {
1752     ZTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, info);
1753   }
1754 
LARTG(const std::complex<double> f,const std::complex<double> g,double * c,std::complex<double> * s,std::complex<double> * r) const1755   void LAPACK<int, std::complex<double> >::LARTG( const std::complex<double> f, const std::complex<double> g, double* c, std::complex<double>* s, std::complex<double>* r ) const
1756   {
1757     ZLARTG_F77(&f, &g, c, s, r);
1758   }
1759 
1760 
LARFG(const int & n,std::complex<double> * alpha,std::complex<double> * x,const int & incx,std::complex<double> * tau) const1761   void LAPACK<int, std::complex<double> >::LARFG( const int& n, std::complex<double>* alpha, std::complex<double>* x, const int& incx, std::complex<double>* tau ) const
1762   {
1763     ZLARFG_F77(&n, alpha, x, &incx, tau);
1764   }
1765 
GEBAL(const char & JOBZ,const int & n,std::complex<double> * A,const int & lda,int * ilo,int * ihi,double * scale,int * info) const1766   void LAPACK<int, std::complex<double> >::GEBAL(const char& JOBZ, const int& n, std::complex<double>* A, const int& lda, int* ilo, int* ihi, double* scale, int* info) const
1767   {
1768     ZGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
1769   }
1770 
1771 
GEBAK(const char & JOBZ,const char & SIDE,const int & n,const int & ilo,const int & ihi,const double * scale,const int & m,std::complex<double> * V,const int & ldv,int * info) const1772   void LAPACK<int, std::complex<double> >::GEBAK(const char& JOBZ, const char& SIDE, const int& n, const int& ilo, const int& ihi, const double* scale, const int& m, std::complex<double>* V, const int& ldv, int* info) const
1773   {
1774     ZGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1775   }
1776 
1777 
1778 #ifdef HAVE_TEUCHOS_LAPACKLARND
LARND(const int & idist,int * seed) const1779   std::complex<double> LAPACK<int, std::complex<double> >::LARND( const int& idist, int* seed ) const
1780   {
1781     return(ZLARND_F77(&idist, seed));
1782   }
1783 #endif
1784 
LARNV(const int & idist,int * seed,const int & n,std::complex<double> * v) const1785   void LAPACK<int, std::complex<double> >::LARNV( const int& idist, int* seed, const int& n, std::complex<double>* v ) const
1786   {
1787     ZLARNV_F77(&idist, seed, &n, v);
1788   }
1789 
1790 
ILAENV(const int & ispec,const std::string & NAME,const std::string & OPTS,const int & N1,const int & N2,const int & N3,const int & N4) const1791   int LAPACK<int, std::complex<double> >::ILAENV( const int& ispec, const std::string& NAME, const std::string& OPTS, const int& N1, const int& N2, const int& N3, const int& N4 ) const
1792   {
1793     unsigned int opts_length = OPTS.length();
1794     std::string temp_NAME = "z" + NAME;
1795     unsigned int name_length = temp_NAME.length();
1796     return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1797   }
1798 
1799   // END INT, COMPLEX<DOUBLE> SPECIALIZATION IMPLEMENTATION //
1800 
1801 #endif // HAVE_TEUCHOS_COMPLEX
1802 
1803 
1804 #ifdef HAVE_TEUCHOSCORE_QUADMATH
1805 
1806   // BEGIN int, __float128 SPECIALIZATION IMPLEMENTATION //
1807 
1808   void LAPACK<int, __float128>::
GEQRF(const int & m,const int & n,__float128 * A,const int & lda,__float128 * TAU,__float128 * WORK,const int & lwork,int * info) const1809   GEQRF(const int& m, const int& n, __float128* A, const int& lda, __float128* TAU, __float128* WORK, const int& lwork, int* info) const
1810   {
1811     Teuchos::Details::Lapack128 lapack;
1812     lapack.GEQRF (m, n, A, lda, TAU, WORK, lwork, info);
1813   }
1814 
1815   void LAPACK<int, __float128>::
GEQR2(const int & m,const int & n,__float128 A[],const int & lda,__float128 TAU[],__float128 WORK[],int * const info) const1816   GEQR2(const int& m, const int& n, __float128 A[], const int& lda, __float128 TAU[], __float128 WORK[], int* const info) const
1817   {
1818     Teuchos::Details::Lapack128 lapack;
1819     lapack.GEQR2 (m, n, A, lda, TAU, WORK, info);
1820   }
1821 
1822   void LAPACK<int, __float128>::
GETRF(const int & m,const int & n,__float128 * A,const int & lda,int * IPIV,int * info) const1823   GETRF(const int& m, const int& n, __float128* A, const int& lda, int* IPIV, int* info) const
1824   {
1825     Teuchos::Details::Lapack128 lapack;
1826     lapack.GETRF (m, n, A, lda, IPIV, info);
1827   }
1828 
1829   void LAPACK<int, __float128>::
GETRS(const char & TRANS,const int & n,const int & nrhs,const __float128 * A,const int & lda,const int * IPIV,__float128 * B,const int & ldb,int * info) const1830   GETRS(const char& TRANS, const int& n, const int& nrhs, const __float128* A, const int& lda, const int* IPIV, __float128* B, const int& ldb, int* info) const
1831   {
1832     Teuchos::Details::Lapack128 lapack;
1833     lapack.GETRS (TRANS, n, nrhs, A, lda, IPIV, B, ldb, info);
1834   }
1835 
1836   void LAPACK<int, __float128>::
GETRI(const int & n,__float128 * A,const int & lda,const int * IPIV,__float128 * WORK,const int & lwork,int * info) const1837   GETRI (const int& n, __float128* A, const int& lda, const int* IPIV, __float128* WORK, const int& lwork, int* info) const
1838   {
1839     Teuchos::Details::Lapack128 lapack;
1840     lapack.GETRI (n, A, lda, const_cast<int*> (IPIV), WORK, lwork, info);
1841   }
1842 
1843   void LAPACK<int, __float128>::
LASWP(const int & N,__float128 A[],const int & LDA,const int & K1,const int & K2,const int IPIV[],const int & INCX) const1844   LASWP (const int& N, __float128 A[], const int& LDA, const int& K1, const int& K2, const int IPIV[], const int& INCX) const
1845   {
1846     Teuchos::Details::Lapack128 lapack;
1847     lapack.LASWP (N, A, LDA, K1, K2, IPIV, INCX);
1848   }
1849 
1850   void LAPACK<int, __float128>::
ORM2R(const char & SIDE,const char & TRANS,const int & m,const int & n,const int & k,const __float128 A[],const int & lda,const __float128 TAU[],__float128 C[],const int & ldc,__float128 WORK[],int * const info) const1851   ORM2R(const char& SIDE, const char& TRANS, const int& m, const int& n, const int& k, const __float128 A[], const int& lda, const __float128 TAU[], __float128 C[], const int& ldc, __float128 WORK[], int* const info) const
1852   {
1853     Teuchos::Details::Lapack128 lapack;
1854     lapack.ORM2R (SIDE, TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, info);
1855   }
1856 
1857   void LAPACK<int, __float128>::
ORGQR(const int & m,const int & n,const int & k,__float128 * A,const int & lda,const __float128 * TAU,__float128 * WORK,const int & lwork,int * info) const1858   ORGQR(const int& m, const int& n, const int& k, __float128* A, const int& lda, const __float128* TAU, __float128* WORK, const int& lwork, int* info) const
1859   {
1860     Teuchos::Details::Lapack128 lapack;
1861     lapack.ORGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1862   }
1863 
1864   void LAPACK<int, __float128>::
UNGQR(const int & m,const int & n,const int & k,__float128 * A,const int & lda,const __float128 * TAU,__float128 * WORK,const int & lwork,int * info) const1865   UNGQR(const int& m, const int& n, const int& k, __float128* A, const int& lda, const __float128* TAU, __float128* WORK, const int& lwork, int* info) const
1866   {
1867     Teuchos::Details::Lapack128 lapack;
1868     lapack.UNGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1869   }
1870 
1871   void LAPACK<int, __float128>::
LARFG(const int & n,__float128 * alpha,__float128 * x,const int & incx,__float128 * tau) const1872   LARFG( const int& n, __float128* alpha, __float128* x, const int& incx, __float128* tau ) const
1873   {
1874     Teuchos::Details::Lapack128 lapack;
1875     lapack.LARFG (n, alpha, x, incx, tau);
1876   }
1877 
1878   __float128 LAPACK<int, __float128>::
LAPY2(const __float128 x,const __float128 y) const1879   LAPY2 (const __float128 x, const __float128 y) const
1880   {
1881     Teuchos::Details::Lapack128 lapack;
1882     return lapack.LAPY2 (x, y);
1883   }
1884 
1885   void LAPACK<int, __float128>::
GBTRF(const int & m,const int & n,const int & kl,const int & ku,__float128 * A,const int & lda,int * IPIV,int * info) const1886   GBTRF (const int& m, const int& n, const int& kl, const int& ku,
1887          __float128* A, const int& lda, int* IPIV, int* info) const
1888   {
1889     Teuchos::Details::Lapack128 lapack;
1890     return lapack.GBTRF (m, n, kl, ku, A, lda, IPIV, info);
1891   }
1892 
1893   void LAPACK<int, __float128>::
GBTRS(const char & TRANS,const int & n,const int & kl,const int & ku,const int & nrhs,const __float128 * A,const int & lda,const int * IPIV,__float128 * B,const int & ldb,int * info) const1894   GBTRS (const char& TRANS, const int& n, const int& kl, const int& ku,
1895          const int& nrhs, const __float128* A, const int& lda, const int* IPIV,
1896          __float128* B, const int& ldb, int* info) const
1897   {
1898     Teuchos::Details::Lapack128 lapack;
1899     return lapack.GBTRS (TRANS, n, kl, ku, nrhs, A, lda, IPIV, B, ldb, info);
1900   }
1901 
1902   void LAPACK<int, __float128>::
LASCL(const char & TYPE,const int & kl,const int & ku,const __float128 cfrom,const __float128 cto,const int & m,const int & n,__float128 * A,const int & lda,int * info) const1903   LASCL (const char& TYPE, const int& kl, const int& ku, const __float128 cfrom,
1904          const __float128 cto, const int& m, const int& n, __float128* A,
1905          const int& lda, int* info) const
1906   {
1907     Teuchos::Details::Lapack128 lapack;
1908     return lapack.LASCL (TYPE, kl, ku, cfrom, cto, m, n, A, lda, info);
1909   }
1910 
1911   // END int, __float128 SPECIALIZATION IMPLEMENTATION //
1912 
1913 #endif // HAVE_TEUCHOSCORE_QUADMATH
1914 
1915 } // namespace Teuchos
1916