/basiclinalg/LapackInterface.hpp

https://github.com/NGSolve/ngsolve · C++ Header · 63 lines · 34 code · 18 blank · 11 comment · 0 complexity · e44d827014e5c6ce5b7a518cdca6df09 MD5 · raw file

  1. notwendig ?
  2. // old style interface
  3. #ifndef LAEVINTERFACE_HH
  4. #define LAEVINTERFACE_HH
  5. #include "arch.hpp"
  6. #ifdef OWN_LAPACK
  7. extern "C"
  8. {
  9. // ********************* Eigen Solve Routines ***************************
  10. // Solve generalized double eigenvalue problem (QZ)
  11. void dggev_(char *jobvl,char *jobvr,int *N,double *A,int *lda,double *B,
  12. int *ldb,double *alphaR,double *alphaI,double* beta,
  13. double* vl, int *ldvl,double *vr,int *ldvr,
  14. double *work, int *lwork,int *info);
  15. // Solve complex generalized eigenvalue problem (QZ)
  16. void zggev_(char *jobvl,char* jobvr,int* N,complex<double>* A, int* lda,complex<double>* B, int* ldb, complex<double>* alpha, complex<double>* beta, complex<double>* vl, int* ldvl, complex<double>* vr, int* ldvr, complex<double>* work, int* lwork, double* rwork, int* info);
  17. // Expert routine for solving generalized eigenvalue problem (QZ)
  18. // zggevx
  19. // dggevx
  20. //Solve double standard symmetric eigenvlaue problem
  21. void dsyev_(char *jobz, char *uplo, int* n , double *A , int* lda, double* w,
  22. double* work, int* lwork, int* info);
  23. //Balancing and permuting matrix pencil routines
  24. void dggbal_(char *job, int* n, double* A, int* lda, double* B, int* ldb,
  25. int* ilo, int* ihi, double* lscale, double* rscale,
  26. double* work, int* info);
  27. void dggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale,
  28. double* rscale, int* m, double* v, int* ldv, int* info);
  29. void zggbal_(char *job, int* n, std::complex<double> *A, int* lda,
  30. std::complex<double> *B, int* ldb, int* ilo, int* ihi,
  31. double* lscale, double* rscale, double* work, int* info);
  32. void zggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale,
  33. double* rscale, int* m, std::complex<double> *v, int* ldv,
  34. int* info);
  35. void dsygv_(int* itype, char *jobzm, char* uplo , int* n1, double* A , int * n, double* B, int *nb, double * lami, double * work, int * lwork, int * info);
  36. void zhegv_(int* itype, char *jobzm, char* uplo , int* n1, std::complex<double>* A , int * n, std::complex<double>* B, int *nb, double * lami, std::complex<double> * work, int * lwork,double * rwork, int * info);
  37. // void zsygv_(int* itype, char *jobzm, char* uplo , int* n1, std::complex<double>* A , int * n, std::complex<double>* B, int *nb, std::complex<double> * lami, std::complex<double> * work, int * lwork, int * info);
  38. // General Linear Complex System Solver
  39. void zgesv_(int * n, int * nrhs, std::complex<double> * A, int * lda, int * ipiv, std::complex<double> * B, int * ldb, int * info );
  40. void dgesv_(int * n, int * nrhs, double * A, int * lda, int * ipiv, double * B, int * ldb, int * info );
  41. void zggevx_(char * balance, char * jobvl, char * jobvr, char * sense, int * n, complex<double> * at, int * n2, complex<double> * bt, int * n3, complex<double> * alpha, complex<double> * beta, complex<double> * vl, int * nvl, complex<double> * vr, int * nvr,
  42. int * ilo, int * ihi, double * lscale, double * rscale, double * abnrm, double * bbnrm, double * rconde, double * rcondv, complex<double> * work , int * lwork, double * rwork, int* iwork, bool * bwork, int * info);
  43. }
  44. #endif
  45. #endif