lapack.h

Go to the documentation of this file.
00001 /*
00002  * 
00003  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
00004  *
00005  * Distributed under the Boost Software License, Version 1.0.
00006  * (See accompanying file LICENSE_1_0.txt or copy at
00007  * http://www.boost.org/LICENSE_1_0.txt)
00008  *
00009  * KF acknowledges the support of the Faculty of Civil Engineering, 
00010  * University of Zagreb, Croatia.
00011  *
00012  */
00013 
00014 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_LAPACK_H
00015 #define BOOST_NUMERIC_BINDINGS_LAPACK_LAPACK_H
00016 
00017 #include <boost/numeric/bindings/traits/type.h>
00018 #include <boost/numeric/bindings/lapack/lapack_names.h>
00019 
00020 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
00021 #  define BOOST_NUMERIC_BINDINGS_FORTRAN
00022 #endif 
00023 
00024 extern "C" {
00025 
00026   /********************************************************************/
00027   /*                        linear systems                            */
00028   /********************************************************************/
00029 
00030   /* general */
00031 
00032   void LAPACK_SGESV (int const* n, int const* nrhs, 
00033                      float* a, int const* lda, int* ipiv, 
00034                      float* b, int const* ldb, int* info);
00035   void LAPACK_DGESV (int const* n, int const* nrhs, 
00036                      double* a, int const* lda, int* ipiv, 
00037                      double* b, int const* ldb, int* info);
00038   void LAPACK_CGESV (int const* n, int const* nrhs,
00039                      fcomplex_t* a, int const* lda, int* ipiv, 
00040                      fcomplex_t* b, int const* ldb, int* info);
00041   void LAPACK_ZGESV (int const* n, int const* nrhs,
00042                      dcomplex_t* a, int const* lda, int* ipiv, 
00043                      dcomplex_t* b, int const* ldb, int* info);
00044 
00045   void LAPACK_SGETRF (int const* n, int const* nrhs, 
00046                       float* a, int const* lda, int* ipiv, int* info);
00047   void LAPACK_DGETRF (int const* n, int const* nrhs, 
00048                       double* a, int const* lda, int* ipiv, int* info);
00049   void LAPACK_CGETRF (int const* n, int const* nrhs,
00050                       fcomplex_t* a, int const* lda,
00051                       int* ipiv, int* info);
00052   void LAPACK_ZGETRF (int const* n, int const* nrhs,
00053                       dcomplex_t* a, int const* lda,
00054                       int* ipiv, int* info);
00055 
00056   void LAPACK_SGETRS (char const* trans, int const* n, int const* nrhs, 
00057                       float const* a, int const* lda, int const* ipiv, 
00058                       float* b, int const* ldb, int* info);
00059   void LAPACK_DGETRS (char const* trans, int const* n, int const* nrhs, 
00060                       double const* a, int const* lda, int const* ipiv, 
00061                       double* b, int const* ldb, int* info);
00062   void LAPACK_CGETRS (char const* trans, int const* n, int const* nrhs,
00063                       fcomplex_t const* a, int const* lda, int const* ipiv, 
00064                       fcomplex_t* b, int const* ldb, int* info);
00065   void LAPACK_ZGETRS (char const* trans, int const* n, int const* nrhs,
00066                       dcomplex_t const* a, int const* lda, int const* ipiv, 
00067                       dcomplex_t* b, int const* ldb, int* info);
00068 
00069 
00070   /* symmetric/Hermitian positive definite */
00071 
00072   void LAPACK_SPOSV (char const* uplo, int const* n, int const* nrhs, 
00073                      float* a, int const* lda, 
00074                      float* b, int const* ldb, int* info);
00075   void LAPACK_DPOSV (char const* uplo, int const* n, int const* nrhs, 
00076                      double* a, int const* lda, 
00077                      double* b, int const* ldb, int* info);
00078   void LAPACK_CPOSV (char const* uplo, int const* n, int const* nrhs,
00079                      fcomplex_t* a, int const* lda,
00080                      fcomplex_t* b, int const* ldb, int* info);
00081   void LAPACK_ZPOSV (char const* uplo, int const* n, int const* nrhs,
00082                      dcomplex_t* a, int const* lda,
00083                      dcomplex_t* b, int const* ldb, int* info);
00084 
00085   void LAPACK_SPOTRF (char const* uplo, int const* n, 
00086                       float* a, int const* lda, int* info);
00087   void LAPACK_DPOTRF (char const* uplo, int const* n, 
00088                       double* a, int const* lda, int* info);
00089   void LAPACK_CPOTRF (char const* uplo, int const* n, 
00090                       fcomplex_t* a, int const* lda, int* info);
00091   void LAPACK_ZPOTRF (char const* uplo, int const* n, 
00092                       dcomplex_t* a, int const* lda, int* info);
00093 
00094   void LAPACK_SPOTRS (char const* uplo, int const* n, int const* nrhs, 
00095                       float const* a, int const* lda, 
00096                       float* b, int const* ldb, int* info);
00097   void LAPACK_DPOTRS (char const* uplo, int const* n, int const* nrhs, 
00098                       double const* a, int const* lda, 
00099                       double* b, int const* ldb, int* info);
00100   void LAPACK_CPOTRS (char const* uplo, int const* n, int const* nrhs,
00101                       fcomplex_t const* a, int const* lda,
00102                       fcomplex_t* b, int const* ldb, int* info);
00103   void LAPACK_ZPOTRS (char const* uplo, int const* n, int const* nrhs,
00104                       dcomplex_t const* a, int const* lda,
00105                       dcomplex_t* b, int const* ldb, int* info);
00106 
00107 
00108   /* symmetric/Hermitian positive definite in packed storage */
00109 
00110   void LAPACK_SPPSV (char const* uplo, int const* n, int const* nrhs, 
00111                      float* ap, float* b, int const* ldb, int* info);
00112   void LAPACK_DPPSV (char const* uplo, int const* n, int const* nrhs, 
00113                      double* ap, double* b, int const* ldb, int* info);
00114   void LAPACK_CPPSV (char const* uplo, int const* n, int const* nrhs,
00115                      fcomplex_t* ap, fcomplex_t* b, int const* ldb, int* info);
00116   void LAPACK_ZPPSV (char const* uplo, int const* n, int const* nrhs,
00117                      dcomplex_t* ap, dcomplex_t* b, int const* ldb, int* info);
00118 
00119   void LAPACK_SPPTRF (char const* uplo, int const* n, float* ap, int* info);
00120   void LAPACK_DPPTRF (char const* uplo, int const* n, double* ap, int* info);
00121   void LAPACK_CPPTRF (char const* uplo, int const* n, 
00122                       fcomplex_t* ap, int* info);
00123   void LAPACK_ZPPTRF (char const* uplo, int const* n, 
00124                       dcomplex_t* ap, int* info);
00125 
00126   void LAPACK_SPPTRS (char const* uplo, int const* n, int const* nrhs, 
00127                       float const* ap, float* b, int const* ldb, int* info);
00128   void LAPACK_DPPTRS (char const* uplo, int const* n, int const* nrhs, 
00129                       double const* ap, double* b, int const* ldb, int* info);
00130   void LAPACK_CPPTRS (char const* uplo, int const* n, int const* nrhs,
00131                       fcomplex_t const* ap, 
00132                       fcomplex_t* b, int const* ldb, int* info);
00133   void LAPACK_ZPPTRS (char const* uplo, int const* n, int const* nrhs,
00134                       dcomplex_t const* ap, 
00135                       dcomplex_t* b, int const* ldb, int* info);
00136 
00137   void LAPACK_SPPTRI (char const* uplo, int const* n, float* ap, int* info);
00138   void LAPACK_DPPTRI (char const* uplo, int const* n, double* ap, int* info);
00139   void LAPACK_CPPTRI (char const* uplo, int const* n, 
00140                       fcomplex_t* ap, int* info);
00141   void LAPACK_ZPPTRI (char const* uplo, int const* n, 
00142                       dcomplex_t* ap, int* info);
00143 
00144 
00145   /* symmetric/Hermitian indefinite and complex symmetric */
00146 
00147   void LAPACK_SSYSV (char const* uplo, int const* n, int const* nrhs, 
00148                      float* a, int const* lda, int* ipiv, 
00149                      float* b, int const* ldb, 
00150                      float* w, int const* lw, int* info);
00151   void LAPACK_DSYSV (char const* uplo, int const* n, int const* nrhs, 
00152                      double* a, int const* lda, int* ipiv, 
00153                      double* b, int const* ldb, 
00154                      double* w, int const* lw, int* info);
00155   void LAPACK_CSYSV (char const* uplo, int const* n, int const* nrhs,
00156                      fcomplex_t* a, int const* lda, int* ipiv, 
00157                      fcomplex_t* b, int const* ldb, 
00158                      fcomplex_t* w, int const* lw, int* info);
00159   void LAPACK_ZSYSV (char const* uplo, int const* n, int const* nrhs,
00160                      dcomplex_t* a, int const* lda, int* ipiv, 
00161                      dcomplex_t* b, int const* ldb, 
00162                      dcomplex_t* w, int const* lw, int* info);
00163 
00164   void LAPACK_CHESV (char const* uplo, int const* n, int const* nrhs,
00165                      fcomplex_t* a, int const* lda, int* ipiv, 
00166                      fcomplex_t* b, int const* ldb, 
00167                      fcomplex_t* w, int const* lw, int* info);
00168   void LAPACK_ZHESV (char const* uplo, int const* n, int const* nrhs,
00169                      dcomplex_t* a, int const* lda, int* ipiv, 
00170                      dcomplex_t* b, int const* ldb, 
00171                      dcomplex_t* w, int const* lw, int* info);
00172 
00173   void LAPACK_SSYTRF (char const* uplo, int const* n, 
00174                       float* a, int const* lda, int* ipiv, 
00175                       float* w, int const* lw, int* info);
00176   void LAPACK_DSYTRF (char const* uplo, int const* n, 
00177                       double* a, int const* lda, int* ipiv, 
00178                       double* w, int const* lw, int* info);
00179   void LAPACK_CSYTRF (char const* uplo, int const* n, 
00180                       fcomplex_t* a, int const* lda, int* ipiv, 
00181                       fcomplex_t* w, int const* lw, int* info);
00182   void LAPACK_ZSYTRF (char const* uplo, int const* n, 
00183                       dcomplex_t* a, int const* lda, int* ipiv, 
00184                       dcomplex_t* w, int const* lw, int* info);
00185 
00186   void LAPACK_CHETRF (char const* uplo, int const* n, 
00187                       fcomplex_t* a, int const* lda, int* ipiv, 
00188                       fcomplex_t* w, int const* lw, int* info);
00189   void LAPACK_ZHETRF (char const* uplo, int const* n, 
00190                       dcomplex_t* a, int const* lda, int* ipiv, 
00191                       dcomplex_t* w, int const* lw, int* info);
00192 
00193   void LAPACK_SSYTRS (char const* uplo, int const* n, int const* nrhs, 
00194                       float const* a, int const* lda, int const* ipiv, 
00195                       float* b, int const* ldb, int* info);
00196   void LAPACK_DSYTRS (char const* uplo, int const* n, int const* nrhs, 
00197                       double const* a, int const* lda, int const* ipiv, 
00198                       double* b, int const* ldb, int* info);
00199   void LAPACK_CSYTRS (char const* uplo, int const* n, int const* nrhs,
00200                       fcomplex_t const* a, int const* lda, int const* ipiv, 
00201                       fcomplex_t* b, int const* ldb, int* info);
00202   void LAPACK_ZSYTRS (char const* uplo, int const* n, int const* nrhs,
00203                       dcomplex_t const* a, int const* lda, int const* ipiv, 
00204                       dcomplex_t* b, int const* ldb, int* info);
00205 
00206   void LAPACK_CHETRS (char const* uplo, int const* n, int const* nrhs,
00207                       fcomplex_t const* a, int const* lda, int const* ipiv, 
00208                       fcomplex_t* b, int const* ldb, int* info);
00209   void LAPACK_ZHETRS (char const* uplo, int const* n, int const* nrhs,
00210                       dcomplex_t const* a, int const* lda, int const* ipiv, 
00211                       dcomplex_t* b, int const* ldb, int* info);
00212 
00213 
00214   /* symmetric/Hermitian indefinite and complex symmetric in packed storage */
00215 
00216   void LAPACK_SSPSV (char const* uplo, int const* n, int const* nrhs, 
00217                      float* ap, int* ipiv, 
00218                      float* b, int const* ldb, int* info);
00219   void LAPACK_DSPSV (char const* uplo, int const* n, int const* nrhs, 
00220                      double* ap, int* ipiv, 
00221                      double* b, int const* ldb, int* info);
00222   void LAPACK_CSPSV (char const* uplo, int const* n, int const* nrhs,
00223                      fcomplex_t* ap, int* ipiv, 
00224                      fcomplex_t* b, int const* ldb, int* info);
00225   void LAPACK_ZSPSV (char const* uplo, int const* n, int const* nrhs,
00226                      dcomplex_t* ap, int* ipiv, 
00227                      dcomplex_t* b, int const* ldb, int* info);
00228 
00229   void LAPACK_CHPSV (char const* uplo, int const* n, int const* nrhs,
00230                      fcomplex_t* ap, int* ipiv, 
00231                      fcomplex_t* b, int const* ldb, int* info);
00232   void LAPACK_ZHPSV (char const* uplo, int const* n, int const* nrhs,
00233                      dcomplex_t* ap, int* ipiv, 
00234                      dcomplex_t* b, int const* ldb, int* info);
00235 
00236   void LAPACK_SSPTRF (char const* uplo, int const* n, 
00237                       float* ap, int* ipiv, int* info);
00238   void LAPACK_DSPTRF (char const* uplo, int const* n, 
00239                       double* ap, int* ipiv, int* info);
00240   void LAPACK_CSPTRF (char const* uplo, int const* n, 
00241                       fcomplex_t* ap, int* ipiv, int* info);
00242   void LAPACK_ZSPTRF (char const* uplo, int const* n, 
00243                       dcomplex_t* ap, int* ipiv, int* info);
00244 
00245   void LAPACK_CHPTRF (char const* uplo, int const* n, 
00246                       fcomplex_t* ap, int* ipiv, int* info);
00247   void LAPACK_ZHPTRF (char const* uplo, int const* n, 
00248                       dcomplex_t* ap, int* ipiv, int* info);
00249 
00250   void LAPACK_SSPTRS (char const* uplo, int const* n, int const* nrhs, 
00251                       float const* ap, int const* ipiv, 
00252                       float* b, int const* ldb, int* info);
00253   void LAPACK_DSPTRS (char const* uplo, int const* n, int const* nrhs, 
00254                       double const* ap, int const* ipiv, 
00255                       double* b, int const* ldb, int* info);
00256   void LAPACK_CSPTRS (char const* uplo, int const* n, int const* nrhs,
00257                       fcomplex_t const* ap, int const* ipiv, 
00258                       fcomplex_t* b, int const* ldb, int* info);
00259   void LAPACK_ZSPTRS (char const* uplo, int const* n, int const* nrhs,
00260                       dcomplex_t const* ap, int const* ipiv, 
00261                       dcomplex_t* b, int const* ldb, int* info);
00262 
00263   void LAPACK_CHPTRS (char const* uplo, int const* n, int const* nrhs,
00264                       fcomplex_t const* ap, int const* ipiv, 
00265                       fcomplex_t* b, int const* ldb, int* info);
00266   void LAPACK_ZHPTRS (char const* uplo, int const* n, int const* nrhs,
00267                       dcomplex_t const* ap, int const* ipiv, 
00268                       dcomplex_t* b, int const* ldb, int* info);
00269 
00270 
00271   /**********************************************************************/
00272   /*                         eigenproblems                              */
00273   /**********************************************************************/
00274 
00275   void LAPACK_SGEES (const char* jobvs, const char* sort, logical_t* select, const int* n,
00276                      float* a, const int * lda, const int* sdim, float* wr, float* wi,
00277                      float* vs, const int * ldvs, float* work, const int * lwork,
00278                      bool* bwork, int* info);
00279 
00280   void LAPACK_DGEES (const char* jobvs, const char* sort, logical_t* select, const int* n,
00281                      double* a, const int * lda, const int* sdim, double* wr, double* wi,
00282                      double* vs, const int * ldvs, double* work, const int * lwork,
00283                      bool* bwork, int* info);
00284 
00285   void LAPACK_CGEES( const char* jobvs, const char* sort, logical_t* select, const int *n,
00286                      fcomplex_t* a, const int * lda, int * sdim, fcomplex_t* w, fcomplex_t* vs,
00287                      const int * ldvs, fcomplex_t* work, const int * lwork, float* rwork,
00288                      bool* bwork, int* info );
00289 
00290   void LAPACK_ZGEES( const char* jobvs, const char* sort, const logical_t* select, const int *n,
00291                      dcomplex_t* a, const int * lda, int * sdim, dcomplex_t* w, dcomplex_t* vs,
00292                      const int * ldvs, dcomplex_t* work, const int * lwork, double* rwork,
00293                      bool* bwork, int* info );
00294 
00295 
00296   void LAPACK_SGEEV( const char* jobvl, const char* jobvr, const int* n, float* a,
00297                     const int* lda, float* wr, float* wi, float* vl, const int* ldvl,
00298                     float* vr, const int* ldvr, float* work, const int* lwork, int* info );
00299 
00300   void LAPACK_DGEEV( const char* jobvl, const char* jobvr, const int* n, double* a,
00301                     const int* lda, double* wr, double* wi, double* vl, const int* ldvl,
00302                     double* vr, const int* ldvr, double* work, const int* lwork, int* info );
00303 
00304   void LAPACK_CGEEV( const char* jobvl, const char* jobvr, const int* n, fcomplex_t* a,
00305                     const int* lda, fcomplex_t* w, fcomplex_t* vl, const int* ldvl,
00306                     fcomplex_t* vr, const int* ldvr, fcomplex_t* work, const int* lwork,
00307                     float* rwork, int* info );
00308 
00309   void LAPACK_ZGEEV( const char* jobvl, const char* jobvr, const int* n, dcomplex_t* a,
00310                     const int* lda, dcomplex_t* w, dcomplex_t* vl, const int* ldvl,
00311                     dcomplex_t* vr, const int* ldvr, dcomplex_t* work, const int* lwork,
00312                     double* rwork, int* info );
00313 
00314 
00315   void LAPACK_SSYEV( const char* jobz, const char* uplo, const int *n,
00316                      float* a, const int * lda, float* w,
00317                      float* work, const int * lwork, int* info );
00318 
00319   void LAPACK_DSYEV( const char* jobz, const char* uplo, const int *n,
00320                      double* a, const int * lda, double* w,
00321                      double* work, const int * lwork, int* info );
00322 
00323   void LAPACK_CHEEV( const char* jobz, const char* uplo, const int *n,
00324                      fcomplex_t* a, const int * lda, float* w,
00325                      fcomplex_t* work, const int * lwork, float* rwork,
00326                      int* info );
00327 
00328   void LAPACK_ZHEEV( const char* jobz, const char* uplo, const int *n,
00329                      dcomplex_t* a, const int * lda, double* w,
00330                      dcomplex_t* work, const int * lwork, double* rwork,
00331                      int* info );
00332 
00333   
00334   void LAPACK_SSYEVD( const char* jobz, const char* uplo, const int* n,
00335                       float* a, const int* lda, float* w,
00336                       float* work, const int* lwork,
00337                       int* iwork, const int* liwork, int* info);
00338 
00339   void LAPACK_DSYEVD( const char* jobz, const char* uplo, const int* n,
00340                       double* a, const int* lda, double* w,
00341                       double* work, const int* lwork,
00342                       int* iwork, const int* liwork, int* info);
00343 
00344   void LAPACK_CHEEVD( const char* jobz, const char* uplo, const int* n,
00345                       fcomplex_t* a, const int* lda, float* w,
00346                       fcomplex_t* work, const int* lwork, float* rwork, const int* lrwork,
00347                       int* iwork, const int* liwork, int* info);
00348 
00349   void LAPACK_ZHEEVD( const char* jobz, const char* uplo, const int* n,
00350                       dcomplex_t* a, const int* lda, double* w,
00351                       dcomplex_t* work, const int* lwork, double* rwork, const int* lrwork,
00352                       int* iwork, const int* liwork, int* info);
00353 
00354 
00355   void LAPACK_SSYEVX( const char* jobz, const char* range, const char* uplo, const int* n,
00356                       float* a, const int* lda, const float* vl, const float* vu, const int* il, const int* iu,
00357                       const float* abstol, int* m, float* w, float* z, const int* ldz,
00358                       float* work, const int* lwork,
00359                       int* iwork, int* ifail, int* info);
00360 
00361   void LAPACK_DSYEVX( const char* jobz, const char* range, const char* uplo, const int* n,
00362                       double* a, const int* lda, const double* vl, const double* vu, const int* il, const int* iu,
00363                       const double* abstol, int* m, double* w, double* z, const int* ldz,
00364                       double* work, const int* lwork,
00365                       int* iwork, int* ifail, int* info);
00366 
00367   void LAPACK_CHEEVX( const char* jobz, const char* range, const char* uplo, const int* n,
00368                       fcomplex_t* a, const int* lda, const float* vl, const float* vu, const int* il, const int* iu,
00369                       const float* abstol, int* m, float* w, fcomplex_t* z, const int* ldz,
00370                       fcomplex_t* work, const int* lwork, float* rwork,
00371                       int* iwork, int* ifail, int* info);
00372 
00373   void LAPACK_ZHEEVX( const char* jobz, const char* range, const char* uplo, const int* n,
00374                       dcomplex_t* a, const int* lda, const double* vl, const double* vu, const int* il, const int* iu,
00375                       const double* abstol, int* m, double* w, dcomplex_t* z, const int* ldz,
00376                       dcomplex_t* work, const int* lwork, double* rwork,
00377                       int* iwork, int* ifail, int* info);
00378 
00379 
00380   void LAPACK_CTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
00381                      fcomplex_t* t, const int * ldt, fcomplex_t* vl, const int* ldvl,
00382                      fcomplex_t* vr, const int * ldvr, const int * nm, int* m, fcomplex_t* work,
00383                      float* rwork, int* info );
00384 
00385   void LAPACK_ZTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
00386                      dcomplex_t* t, const int * ldt, dcomplex_t* vl, const int* ldvl,
00387                      dcomplex_t* vr, const int * ldvr, const int * nm, int* m, dcomplex_t* work,
00388                      double* rwork, int* info );
00389 
00390   void LAPACK_STREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
00391                      float* t, const int * ldt, float* vl, const int* ldvl,
00392                      float* vr, const int * ldvr, const int * nm, int* m, float* work,
00393                      int* info );
00394 
00395   void LAPACK_DTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
00396                      double* t, const int * ldt, double* vl, const int* ldvl,
00397                      double* vr, const int * ldvr, const int * nm, int* m, double* work,
00398                      int* info );
00399 
00400 
00401   void LAPACK_STREXC( const char* compq, const int *n,
00402                      float* t, const int * ldt, float* q, const int* ldq,
00403                      int* ifst, const int * ilst, float* work, int* info );
00404 
00405   void LAPACK_DTREXC( const char* compq, const int *n,
00406                      double* t, const int * ldt, double* q, const int* ldq,
00407                      int* ifst, const int * ilst, double* work, int* info );
00408 
00409   void LAPACK_CTREXC( const char* compq, const int *n,
00410                      fcomplex_t* t, const int * ldt, fcomplex_t* q, const int* ldq,
00411                      int* ifst, const int * ilst, int* info );
00412 
00413   void LAPACK_ZTREXC( const char* compq, const int *n,
00414                      dcomplex_t* t, const int * ldt, dcomplex_t* q, const int* ldq,
00415                      int* ifst, const int * ilst, int* info );
00416 
00417   /* Hessenberg matrices */
00418 
00419   void LAPACK_SHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, float* H, 
00420                       const int* LDH, float* WR, float* WI, float* Z, int const* LDZ,
00421                       float* WORK, const int* LWORK, int* INFO ) ;
00422 
00423   void LAPACK_CHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, fcomplex_t* H, 
00424                       const int* LDH, fcomplex_t* W, fcomplex_t* Z, int const* LDZ,
00425                       fcomplex_t* WORK, const int* LWORK, int* INFO ) ;
00426 
00427   void LAPACK_DHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, double* H, 
00428                       const int* LDH, double* WR, double* WI, double* Z, int const* LDZ,
00429                       double* WORK, const int* LWORK, int* INFO ) ;
00430 
00431   void LAPACK_ZHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, dcomplex_t* H, 
00432                       const int* LDH, dcomplex_t* W, dcomplex_t* Z, int const* LDZ,
00433                       dcomplex_t* WORK, const int* LWORK, int* INFO ) ;
00434 
00435   /* Hermitian tridiagonal matrices */
00436   
00437   void LAPACK_SSTEQR( char const* compz, int const* n, float* d, float* E, float* z, int const* ldz, float* work, int* info ) ;
00438   void LAPACK_DSTEQR( char const* compz, int const* n, double* d, double* E, double* z, int const* ldz, double* work, int* info ) ;
00439 
00440   /* Hermitian banded matrices */
00441   
00442   void LAPACK_SSBEV( char const* jobz, char const* uplo, int const* n,
00443                      int const* kd, float* ab, int const* ldab, float* w,
00444                      float* z, int const* ldz, float* work, int* info );
00445 
00446   void LAPACK_DSBEV( char const* jobz, char const* uplo, int const* n,
00447                      int const* kd, double* ab, int const* ldab, double* w,
00448                      double* z, int const* ldz, double* work, int* info );
00449 
00450   void LAPACK_CHBEV( char const* jobz, char const* uplo, int const* n,
00451                      int const* kd, fcomplex_t* ab, int const* ldab, float* w,
00452                      fcomplex_t* z, int const* ldz, fcomplex_t* work,
00453                      float* rwork, int* info );
00454 
00455   void LAPACK_ZHBEV( char const* jobz, char const* uplo, int const* n,
00456                      int const* kd, dcomplex_t* ab, int const* ldab, double* w,
00457                      dcomplex_t* z, int const* ldz, dcomplex_t* work,
00458                      double* rwork, int* info );
00459 
00460 
00461   void LAPACK_SSBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
00462                       int const* kd, float* ab, int const* ldab, float* q, int const* ldq,
00463                       const float* vl, const float* vu, const int* il, const int* iu,
00464                       const float* abstol, int* m,
00465                       float* w, float* z, int const* ldz, float* work,
00466                       int* iwork, int* ifail, int* info );
00467 
00468   void LAPACK_DSBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
00469                       int const* kd, double* ab, int const* ldab, double* q, int const* ldq,
00470                       const double* vl, const double* vu, const int* il, const int* iu,
00471                       const double* abstol, int* m,
00472                       double* w, double* z, int const* ldz, double* work,
00473                       int* iwork, int* ifail, int* info );
00474 
00475   void LAPACK_CHBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
00476                       int const* kd, fcomplex_t* ab, int const* ldab, fcomplex_t* q, int const* ldq,
00477                       const float* vl, const float* vu, const int* il, const int* iu,
00478                       const float* abstol, int* m,
00479                       float* w, fcomplex_t* z, int const* ldz, fcomplex_t* work, float* rwork,
00480                       int* iwork, int* ifail, int* info );
00481 
00482   void LAPACK_ZHBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
00483                       int const* kd, dcomplex_t* ab, int const* ldab, dcomplex_t* q, int const* ldq,
00484                       const double* vl, const double* vu, const int* il, const int* iu,
00485                       const double* abstol, int* m,
00486                       double* w, dcomplex_t* z, int const* ldz, dcomplex_t* work, double* rwork,
00487                       int* iwork, int* ifail, int* info );
00488 
00489 
00490   /*********************************************************************/
00491   /*       Auxiliary routines for eigenvalue problems                  */
00492   /*********************************************************************/
00493 
00494   void LAPACK_SSYTRD( char const* uplo, int const* n, float* a, int const* lda, float* d,
00495                       float* e, float* tau, float* work, int const* lwork, int* INFO ) ;
00496 
00497   void LAPACK_DSYTRD( char const* uplo, int const* n, double* a, int const* lda, double* d,
00498                       double* e, double* tau, double* work, int const* lwork, int* INFO ) ;
00499 
00500   /*********************************************************************/
00501   /*                             SVD                                   */
00502   /*********************************************************************/
00503 
00504   void LAPACK_SGESVD (char const* jobu, char const* jobvt, 
00505                       int const* m, int const* n, float* a, int const* lda, 
00506                       float* s, float* u, int const* ldu, 
00507                       float* vt, int const* ldvt,
00508                       float* work, int const* lwork, int* info); 
00509   void LAPACK_DGESVD (char const* jobu, char const* jobvt, 
00510                       int const* m, int const* n, double* a, int const* lda, 
00511                       double* s, double* u, int const* ldu, 
00512                       double* vt, int const* ldvt,
00513                       double* work, int const* lwork, int* info); 
00514   void LAPACK_CGESVD (char const* jobu, char const* jobvt, 
00515                       int const* m, int const* n, 
00516                       fcomplex_t* a, int const* lda, 
00517                       float* s, fcomplex_t* u, int const* ldu, 
00518                       fcomplex_t* vt, int const* ldvt,
00519                       fcomplex_t* work, int const* lwork, 
00520                       float* rwork, int* info); 
00521   void LAPACK_ZGESVD (char const* jobu, char const* jobvt, 
00522                       int const* m, int const* n, 
00523                       dcomplex_t* a, int const* lda, 
00524                       double* s, dcomplex_t* u, int const* ldu, 
00525                       dcomplex_t* vt, int const* ldvt,
00526                       dcomplex_t* work, int const* lwork, 
00527                       double* rwork, int* info); 
00528 
00529   void LAPACK_SGESDD (char const* jobz, int const* m, int const* n, 
00530                       float* a, int const* lda, 
00531                       float* s, float* u, int const* ldu, 
00532                       float* vt, int const* ldvt,
00533                       float* work, int const* lwork, int* iwork, int* info); 
00534   void LAPACK_DGESDD (char const* jobz, int const* m, int const* n, 
00535                       double* a, int const* lda, 
00536                       double* s, double* u, int const* ldu, 
00537                       double* vt, int const* ldvt,
00538                       double* work, int const* lwork, int* iwork, int* info); 
00539   void LAPACK_CGESDD (char const* jobz, int const* m, int const* n, 
00540                       fcomplex_t* a, int const* lda, 
00541                       float* s, fcomplex_t* u, int const* ldu, 
00542                       fcomplex_t* vt, int const* ldvt,
00543                       fcomplex_t* work, int const* lwork, 
00544                       float* rwork, int* iwork, int* info); 
00545   void LAPACK_ZGESDD (char const* jobz, int const* m, int const* n, 
00546                       dcomplex_t* a, int const* lda, 
00547                       double* s, dcomplex_t* u, int const* ldu, 
00548                       dcomplex_t* vt, int const* ldvt,
00549                       dcomplex_t* work, int const* lwork, 
00550                       double* rwork, int* iwork, int* info); 
00551 
00552 
00553   /*********************************************************************/
00554   /*                    QR factorization                               */
00555   /*********************************************************************/
00556 
00557   void LAPACK_SGEQRF( const int* m, const int* n, float* a, const int* lda,
00558                       float* tau, float* work, const int* lwork, int* info );
00559   void LAPACK_DGEQRF( const int* m, const int* n, double* a, const int* lda,
00560                       double* tau, double* work, const int* lwork, int* info );
00561   void LAPACK_CGEQRF( const int* m, const int* n, fcomplex_t* a, const int* lda,
00562                       fcomplex_t* tau, fcomplex_t* work, const int* lwork, int* info );
00563   void LAPACK_ZGEQRF( const int* m, const int* n, dcomplex_t* a, const int* lda,
00564                       dcomplex_t* tau, dcomplex_t* work, const int* lwork, int* info );
00565 
00566 
00567 
00568   void LAPACK_SORMQR( const char* side, const char* trans, const int* m,
00569                       const int* n, const int* k, const float* a,
00570                       const int* lda, const float* tau,
00571                       float* c, const int* ldc, float* work,
00572                       const int* lwork, int* info );
00573   void LAPACK_DORMQR( const char* side, const char* trans, const int* m,
00574                       const int* n, const int* k, const double* a,
00575                       const int* lda, const double* tau,
00576                       double* c, const int* ldc, double* work,
00577                       const int* lwork, int* info );
00578   void LAPACK_CUNMQR( const char* side, const char* trans, const int* m,
00579                       const int* n, const int* k, const fcomplex_t* a,
00580                       const int* lda, const fcomplex_t* tau,
00581                       fcomplex_t* c, const int* ldc, fcomplex_t* work,
00582                       const int* lwork, int* info );
00583   void LAPACK_ZUNMQR( const char* side, const char* trans, const int* m,
00584                       const int* n, const int* k, const dcomplex_t* a,
00585                       const int* lda, const dcomplex_t* tau,
00586                       dcomplex_t* c, const int* ldc, dcomplex_t* work,
00587                       const int* lwork, int* info );
00588 
00589   void LAPACK_SORGQR( const int* m, const int* n, const int* k,
00590                       float* a, const int* lda, float* tau,
00591                       float* work, const int* lwork, const int* info);
00592   void LAPACK_DORGQR( const int* m, const int* n, const int* k,
00593                       double* a, const int* lda, double* tau,
00594                       double* work, const int* lwork, const int* info);
00595   void LAPACK_CUNGQR( const int* m, const int* n, const int* k,
00596                       fcomplex_t* a, const int* lda, fcomplex_t* tau,
00597                       fcomplex_t* work, const int* lwork, const int* info);
00598   void LAPACK_ZUNGQR( const int* m, const int* n, const int* k,
00599                       dcomplex_t* a, const int* lda, dcomplex_t* tau,
00600                       dcomplex_t* work, const int* lwork, const int* info);
00601 
00602 
00603 
00604   /********************************************************************/
00605   /*                          auxiliary                               */
00606   /********************************************************************/
00607 
00608   int LAPACK_ILAENV (int const* ispec, const char* name, const char* opt,
00609                      int const* n1, int const* n2, int const* n3, 
00610                      int const* n4, int, int); 
00611 
00612 }
00613 
00614 #endif 

Generated on Wed Nov 23 19:00:20 2011 for FreeCAD by  doxygen 1.6.1