PageRenderTime 58ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/Core/Lapack.cpp

https://github.com/leppert/fire
C++ | 171 lines | 130 code | 40 blank | 1 comment | 0 complexity | 08dd335457cd4e187e0800366298489f MD5 | raw file
  1. #include "Lapack.hh"
  2. #define F77NAME(x) x##_
  3. // Type dependend Lapack definitions:
  4. namespace Lapack{
  5. extern "C" {
  6. void F77NAME(dgelsd)(long* m, long* n, long* nrhs, double* a, long* lda, double* b, long* ldb,
  7. double* s, double* rcond, long* rank, double* work, long* lwork, long* iwork,
  8. long* info);
  9. void F77NAME(dggevx)(char* balanc, char* jobvl, char* jobvr, char* sense,
  10. long* n, double* a, long* lda, double* b, long* ldb,
  11. double* alphar, double* alphai, double* beta, double* vl, long* ldvl, double* vr, long* ldvr,
  12. long* ilo, long* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm,
  13. double* rconde, double* rcondv, double* work, long* lwork, long* iwork, bool* bwork, long* info);
  14. void F77NAME(sggev)(char *jobvl,char *jobvr,int *n,double *a,int *lda,double *b, int *ld,
  15. double *alphar,double *alphai,double *beta,double *vl,
  16. int *ldvl,double *vr,int *ldvr,double *work,int *lwork,
  17. int *info) ;
  18. void F77NAME(dggev)(char *jobvl,char *jobvr,int *n,double *a,int *lda,double *b, int *ld,
  19. double *alphar,double *alphai,double *beta,double *vl,
  20. int *ldvl,double *vr,int *ldvr,double *work,int *lwork,
  21. int *info) ;
  22. void F77NAME(dsygvd)(long* itype, char* jobz, char* uplo, long* n, double* a, long* lda, double* b, long* ldb,
  23. double* w, double* work, long* lwork, long* iwork, long* liwork, long* info);
  24. void F77NAME(dgels)(char* trans, long* m, long* n, long* nrhs, double* A, long* lda,
  25. double* B, long* ldb, double* work, long* lwork, long* info);
  26. void F77NAME(sgels)(char* trans, long* m, long* n, long* nrhs, float* A, long* lda,
  27. float* B, long* ldb, float* work, long* lwork, long* info);
  28. void F77NAME(dgelss)(long* m, long* n, long* nrhs, double* A, long* lda, double* B, long* ldb,
  29. double* s, double* rcond, long* rank, double* work, long* lwork, long* info);
  30. void F77NAME(sgelss)(long* m, long* n, long* nrhs, float* A, long* lda, float* B, long* ldb,
  31. float* s, float* rcond, long* rank, float* work, long* lwork, long* info);
  32. void F77NAME(dgebrd)(long* m, long *n, double* a, long* lda, double* d, double* e,
  33. double* tauq,double* taup, double* work, long* lwork,long* info);
  34. void F77NAME(dbdsdc) (char* uplo, char* compq, long* n, double* d, double* e, double* u,
  35. long* ldu, double* vt, long* ldvt, double* q, long* iq, double* work,
  36. long* iwork, long* info );
  37. void F77NAME(dgesdd) (char* jobz, long* m, long* n, double* a, long* lda, double* s,
  38. double* u, long *ldu, double* vt, long* ldvt, double* work,
  39. long* lwork, long* iwork, long* info );
  40. }
  41. void dgelsd(long* m, long* n, long* nrhs, double* a, long* lda, double* b, long* ldb,
  42. double* s, double* rcond, long* rank, double* work, long* lwork, long* iwork, long* info){
  43. #ifdef HAVE_LAPACK
  44. F77NAME(dgelsd)( m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work,lwork, iwork, info);
  45. #endif
  46. }
  47. void dggevx(char* balanc, char* jobvl, char* jobvr, char* sense,
  48. long* n, double* a, long* lda, double* b, long* ldb,
  49. double* alphar, double* alphai, double* beta, double* vl, long* ldvl, double* vr, long* ldvr,
  50. long* ilo, long* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm,
  51. double* rconde, double* rcondv, double* work, long* lwork, long* iwork, bool* bwork, long* info)
  52. {
  53. #ifdef HAVE_LAPACK
  54. F77NAME(dggevx)(balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,
  55. alphar, alphai, beta, vl, ldvl, vr, ldvr,
  56. ilo, ihi, lscale, rscale, abnrm, bbnrm,
  57. rconde, rcondv, work, lwork, iwork, bwork, info);
  58. #endif
  59. }
  60. void sggev(char *jobvl,char *jobvr,int *n,double *a,int *lda,double *b, int *ld,
  61. double *alphar,double *alphai,double *beta,double *vl,
  62. int *ldvl,double *vr,int *ldvr,double *work,int *lwork,
  63. int *info) {
  64. #ifdef HAVE_LAPACK
  65. F77NAME(sggev)(jobvl,jobvr,n,a,lda,b,ld,alphar,alphai,beta,vl,ldvl,vr,ldvr,work,lwork,info);
  66. #endif
  67. }
  68. void dggev(char *jobvl,char *jobvr,int *n,double *a,int *lda,double *b, int *ld,
  69. double *alphar,double *alphai,double *beta,double *vl,
  70. int *ldvl,double *vr,int *ldvr,double *work,int *lwork,
  71. int *info) {
  72. #ifdef HAVE_LAPACK
  73. F77NAME(dggev)(jobvl,jobvr,n,a,lda,b,ld,alphar,alphai,beta,vl,ldvl,vr,ldvr,work,lwork,info);
  74. #endif
  75. }
  76. void dsygvd(long* itype, char* jobz, char* uplo, long* n, double* a, long* lda, double* b, long* ldb,
  77. double* w, double* work, long* lwork, long* iwork, long* liwork, long* info)
  78. {
  79. #ifdef HAVE_LAPACK
  80. F77NAME(dsygvd)(itype, jobz, uplo, n, a, lda, b, ldb,
  81. w, work, lwork, iwork, liwork, info);
  82. #endif
  83. }
  84. void gels(char* trans, long* m, long* n, long* nrhs, double* A, long* lda,
  85. double* B, long* ldb, double* work, long* lwork, long* info)
  86. {
  87. #ifdef HAVE_LAPACK
  88. F77NAME(dgels)(trans, m, n, nrhs, A, lda, B, ldb, work, lwork, info);
  89. #endif
  90. }
  91. void gels(char* trans, long* m, long* n, long* nrhs, float* A, long* lda,
  92. float* B, long* ldb, float* work, long* lwork, long* info)
  93. {
  94. #ifdef HAVE_LAPACK
  95. F77NAME(sgels)(trans, m, n, nrhs, A, lda, B, ldb, work, lwork, info);
  96. #endif
  97. }
  98. void gelss(long* m, long* n, long* nrhs, double* A, long* lda, double* B, long* ldb,
  99. double* s, double* rcond, long* rank, double* work, long* lwork, long* info)
  100. {
  101. #ifdef HAVE_LAPACK
  102. F77NAME(dgelss)(m, n, nrhs, A, lda, B, ldb, s, rcond, rank, work, lwork, info);
  103. #endif
  104. }
  105. void gelss(long* m, long* n, long* nrhs, float* A, long* lda, float* B, long* ldb,
  106. float* s, float* rcond, long* rank, float* work, long* lwork, long* info)
  107. {
  108. #ifdef HAVE_LAPACK
  109. F77NAME(sgelss)(m, n, nrhs, A, lda, B, ldb, s, rcond, rank, work, lwork, info);
  110. #endif
  111. }
  112. void dgebrd(long* m, long *n, double* a, long* lda, double* d, double* e, double* tauq,
  113. double* taup, double* work, long* lwork,long* info){
  114. #ifdef HAVE_LAPACK
  115. F77NAME(dgebrd)( m, n, a, lda, d, e, tauq, taup, work, lwork, info);
  116. #endif
  117. }
  118. void dbdsdc ( char* uplo, char* compq, long* n, double* d, double* e, double* u, long* ldu,
  119. double* vt, long* ldvt, double* q, long* iq, double* work, long* iwork, long* info ){
  120. #ifdef HAVE_LAPACK
  121. F77NAME(dbdsdc) (uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork, info );
  122. #endif
  123. }
  124. void dgesdd( char* jobz, long* m, long* n, double* a, long* lda, double* s, double* u,
  125. long *ldu, double* vt, long* ldvt, double* work, long* lwork, long* iwork,
  126. long* info ){
  127. #ifdef HAVE_LAPACK
  128. F77NAME(dgesdd)(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork, info );
  129. #endif
  130. }
  131. } //namespace