Skip to content

Commit 53361bf

Browse files
authored
Merge pull request #736 from dbielich/master
Adding Dynamic Mode Decomposition (DMD) into LAPACK
2 parents cea4a63 + 561e5bd commit 53361bf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+12847
-29
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ CBLAS/examples/cblas_ex2
2525
# LAPACK testing
2626
TESTING/LIN/xlintst*
2727
TESTING/EIG/xeigtst*
28+
TESTING/EIG/xdmd*
2829
TESTING/*.out
2930
TESTING/*.txt
3031
!TESTING/CMakeLists.txt

LAPACKE/include/lapack.h

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3319,6 +3319,138 @@ void LAPACK_zgesdd_base(
33193319
#define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__)
33203320
#endif
33213321

3322+
#define LAPACK_cgedmd LAPACK_GLOBAL(cgedmd,CGEDMD)
3323+
void LAPACK_cgedmd(
3324+
char const* jobs, char const* jobz, char const* jobf,
3325+
lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n,
3326+
lapack_complex_float* x, lapack_int const* ldx,
3327+
lapack_complex_float* y, lapack_int const* ldy, lapack_int const* k,
3328+
lapack_complex_float* reig, lapack_complex_float* imeig,
3329+
lapack_complex_float* z, lapack_int const* ldz, lapack_complex_float* res,
3330+
lapack_complex_float* b, lapack_int const* ldb,
3331+
lapack_complex_float* w, lapack_int const* ldw,
3332+
lapack_complex_float* s, lapack_int const* lds,
3333+
lapack_complex_float* work, lapack_int const* lwork,
3334+
lapack_int* iwork, lapack_int const* liwork,
3335+
lapack_int* info );
3336+
3337+
#define LAPACK_dgedmd LAPACK_GLOBAL(dgedmd,DGEDMD)
3338+
void LAPACK_dgedmd(
3339+
char const* jobs, char const* jobz, char const* jobf,
3340+
lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n,
3341+
double* x, lapack_int const* ldx,
3342+
double* y, lapack_int const* ldy, lapack_int const* k,
3343+
double* reig, double* imeig,
3344+
double* z, lapack_int const* ldz, double* res,
3345+
double* b, lapack_int const* ldb,
3346+
double* w, lapack_int const* ldw,
3347+
double* s, lapack_int const* lds,
3348+
double* work, lapack_int const* lwork,
3349+
lapack_int* iwork, lapack_int const* liwork,
3350+
lapack_int* info );
3351+
3352+
#define LAPACK_sgedmd LAPACK_GLOBAL(sgedmd,SGEDMD)
3353+
void LAPACK_sgedmd(
3354+
char const* jobs, char const* jobz, char const* jobf,
3355+
lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n,
3356+
float* x, lapack_int const* ldx,
3357+
float* y, lapack_int const* ldy, lapack_int const* k,
3358+
float* reig, float* imeig,
3359+
float* z, lapack_int const* ldz, float* res,
3360+
float* b, lapack_int const* ldb,
3361+
float* w, lapack_int const* ldw,
3362+
float* s, lapack_int const* lds,
3363+
float* work, lapack_int const* lwork,
3364+
lapack_int* iwork, lapack_int const* liwork,
3365+
lapack_int* info );
3366+
3367+
#define LAPACK_zgedmd LAPACK_GLOBAL(zgedmd,ZGEDMD)
3368+
void LAPACK_zgedmd(
3369+
char const* jobs, char const* jobz, char const* jobf,
3370+
lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n,
3371+
lapack_complex_double* x, lapack_int const* ldx,
3372+
lapack_complex_double* y, lapack_int const* ldy, lapack_int const* k,
3373+
lapack_complex_double* reig, lapack_complex_double* imeig,
3374+
lapack_complex_double* z, lapack_int const* ldz, lapack_complex_double* res,
3375+
lapack_complex_double* b, lapack_int const* ldb,
3376+
lapack_complex_double* w, lapack_int const* ldw,
3377+
lapack_complex_double* s, lapack_int const* lds,
3378+
lapack_complex_double* work, lapack_int const* lwork,
3379+
lapack_int* iwork, lapack_int const* liwork,
3380+
lapack_int* info );
3381+
3382+
#define LAPACK_cgedmdq LAPACK_GLOBAL(cgedmdq,CGEDMDQ)
3383+
void LAPACK_cgedmdq(
3384+
char const* jobs, char const* jobz, char const* jobr, char const* jobq,
3385+
char const* jobt, char const* jobf, lapack_int const* whtsvd,
3386+
lapack_int const* m, lapack_int const* n,
3387+
lapack_complex_float* f, lapack_int const* ldf,
3388+
lapack_complex_float* x, lapack_int const* ldx,
3389+
lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk,
3390+
float const* tol, lapack_int const* k,
3391+
lapack_complex_float* reig, lapack_complex_float* imeig,
3392+
lapack_complex_float* z, lapack_int const* ldz, lapack_complex_float* res,
3393+
lapack_complex_float* b, lapack_int const* ldb,
3394+
lapack_complex_float* v, lapack_int const* ldv,
3395+
lapack_complex_float* s, lapack_int const* lds,
3396+
lapack_complex_float* work, lapack_int const* lwork,
3397+
lapack_int* iwork, lapack_int const* liwork,
3398+
lapack_int* info );
3399+
3400+
#define LAPACK_dgedmdq LAPACK_GLOBAL(dgedmdq,DGEDMDQ)
3401+
void LAPACK_dgedmdq(
3402+
char const* jobs, char const* jobz, char const* jobr, char const* jobq,
3403+
char const* jobt, char const* jobf, lapack_int const* whtsvd,
3404+
lapack_int const* m, lapack_int const* n,
3405+
double* f, lapack_int const* ldf,
3406+
double* x, lapack_int const* ldx,
3407+
double* y, lapack_int const* ldy, lapack_int const* nrnk,
3408+
double const* tol, lapack_int const* k,
3409+
double* reig, double* imeig,
3410+
double* z, lapack_int const* ldz, double* res,
3411+
double* b, lapack_int const* ldb,
3412+
double* v, lapack_int const* ldv,
3413+
double* s, lapack_int const* lds,
3414+
double* work, lapack_int const* lwork,
3415+
lapack_int* iwork, lapack_int const* liwork,
3416+
lapack_int* info );
3417+
3418+
#define LAPACK_sgedmdq LAPACK_GLOBAL(sgedmdq,SGEDMDQ)
3419+
void LAPACK_sgedmdq(
3420+
char const* jobs, char const* jobz, char const* jobr, char const* jobq,
3421+
char const* jobt, char const* jobf, lapack_int const* whtsvd,
3422+
lapack_int const* m, lapack_int const* n,
3423+
float* f, lapack_int const* ldf,
3424+
float* x, lapack_int const* ldx,
3425+
float* y, lapack_int const* ldy, lapack_int const* nrnk,
3426+
float const* tol, lapack_int const* k,
3427+
float* reig, float* imeig,
3428+
float* z, lapack_int const* ldz, float* res,
3429+
float* b, lapack_int const* ldb,
3430+
float* v, lapack_int const* ldv,
3431+
float* s, lapack_int const* lds,
3432+
float* work, lapack_int const* lwork,
3433+
lapack_int* iwork, lapack_int const* liwork,
3434+
lapack_int* info );
3435+
3436+
#define LAPACK_zgedmdq LAPACK_GLOBAL(zgedmdq,ZGEDMDQ)
3437+
void LAPACK_zgedmdq(
3438+
char const* jobs, char const* jobz, char const* jobr, char const* jobq,
3439+
char const* jobt, char const* jobf, lapack_int const* whtsvd,
3440+
lapack_int const* m, lapack_int const* n,
3441+
lapack_complex_double* f, lapack_int const* ldf,
3442+
lapack_complex_double* x, lapack_int const* ldx,
3443+
lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk,
3444+
double const* tol, lapack_int const* k,
3445+
lapack_complex_double* reig, lapack_complex_double* imeig,
3446+
lapack_complex_double* z, lapack_int const* ldz, lapack_complex_double* res,
3447+
lapack_complex_double* b, lapack_int const* ldb,
3448+
lapack_complex_double* v, lapack_int const* ldv,
3449+
lapack_complex_double* s, lapack_int const* lds,
3450+
lapack_complex_double* work, lapack_int const* lwork,
3451+
lapack_int* iwork, lapack_int const* liwork,
3452+
lapack_int* info );
3453+
33223454
#define LAPACK_cgesv LAPACK_GLOBAL(cgesv,CGESV)
33233455
void LAPACK_cgesv(
33243456
lapack_int const* n, lapack_int const* nrhs,

LAPACKE/include/lapacke.h

Lines changed: 122 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ lapack_int LAPACKE_zgesvdq( int matrix_layout, char joba, char jobp, char jobr,
956956
lapack_int lda, double* s, lapack_complex_double* u,
957957
lapack_int ldu, lapack_complex_double* v,
958958
lapack_int ldv, lapack_int* numrank );
959-
959+
960960
lapack_int LAPACKE_sgesvj( int matrix_layout, char joba, char jobu, char jobv,
961961
lapack_int m, lapack_int n, float* a, lapack_int lda,
962962
float* sva, lapack_int mv, float* v, lapack_int ldv,
@@ -5712,6 +5712,120 @@ lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m,
57125712
lapack_complex_double* work, lapack_int lwork,
57135713
double* rwork, lapack_int* iwork );
57145714

5715+
lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz,
5716+
char jobf, lapack_int whtsvd, lapack_int m,
5717+
lapack_int n, float* x, lapack_int ldx,
5718+
float* y, lapack_int ldy, lapack_int k,
5719+
float* reig, float* imeig, float* z,
5720+
lapack_int ldz, float* res, float* b,
5721+
lapack_int ldb, float* w, lapack_int ldw,
5722+
float* s, lapack_int lds, float* work,
5723+
lapack_int lwork, lapack_int* iwork,
5724+
lapack_int liwork );
5725+
5726+
lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz,
5727+
char jobf, lapack_int whtsvd, lapack_int m,
5728+
lapack_int n, double* x, lapack_int ldx,
5729+
double* y, lapack_int ldy, lapack_int k,
5730+
double* reig, double* imeig, double* z,
5731+
lapack_int ldz, double* res, double* b,
5732+
lapack_int ldb, double* w, lapack_int ldw,
5733+
double* s, lapack_int lds, double* work,
5734+
lapack_int lwork, lapack_int* iwork,
5735+
lapack_int liwork );
5736+
5737+
lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz,
5738+
char jobf, lapack_int whtsvd, lapack_int m,
5739+
lapack_int n, lapack_complex_float* x,
5740+
lapack_int ldx, lapack_complex_float* y,
5741+
lapack_int ldy, lapack_int k,
5742+
lapack_complex_float* reig,
5743+
lapack_complex_float* imeig,
5744+
lapack_complex_float* z, lapack_int ldz,
5745+
lapack_complex_float* res,
5746+
lapack_complex_float* b, lapack_int ldb,
5747+
lapack_complex_float* w, lapack_int ldw,
5748+
lapack_complex_float* s, lapack_int lds,
5749+
lapack_complex_float* work, lapack_int lwork,
5750+
lapack_int* iwork, lapack_int liwork );
5751+
5752+
lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz,
5753+
char jobf, lapack_int whtsvd, lapack_int m,
5754+
lapack_int n, lapack_complex_double* x,
5755+
lapack_int ldx, lapack_complex_double* y,
5756+
lapack_int ldy, lapack_int k,
5757+
lapack_complex_double* reig,
5758+
lapack_complex_double* imeig,
5759+
lapack_complex_double* z, lapack_int ldz,
5760+
lapack_complex_double* res,
5761+
lapack_complex_double* b, lapack_int ldb,
5762+
lapack_complex_double* w, lapack_int ldw,
5763+
lapack_complex_double* s, lapack_int lds,
5764+
lapack_complex_double* work, lapack_int lwork,
5765+
lapack_int* iwork, lapack_int liwork );
5766+
5767+
lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz,
5768+
char jobr, char jobq, char jobt, char jobf,
5769+
lapack_int whtsvd, lapack_int m, lapack_int n,
5770+
float* f, lapack_int ldf, float* x,
5771+
lapack_int ldx, float* y, lapack_int ldy,
5772+
lapack_int nrnk, float tol, lapack_int k,
5773+
float* reig, float* imeig, float* z,
5774+
lapack_int ldz, float* res, float* b,
5775+
lapack_int ldb, float* v, lapack_int ldv,
5776+
float* s, lapack_int lds, float* work,
5777+
lapack_int lwork, lapack_int* iwork,
5778+
lapack_int liwork );
5779+
5780+
lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz,
5781+
char jobr, char jobq, char jobt, char jobf,
5782+
lapack_int whtsvd, lapack_int m, lapack_int n,
5783+
double* f, lapack_int ldf, double* x,
5784+
lapack_int ldx, double* y, lapack_int ldy,
5785+
lapack_int nrnk, double tol, lapack_int k,
5786+
double* reig, double* imeig, double* z,
5787+
lapack_int ldz, double* res, double* b,
5788+
lapack_int ldb, double* v, lapack_int ldv,
5789+
double* s, lapack_int lds, double* work,
5790+
lapack_int lwork, lapack_int* iwork,
5791+
lapack_int liwork );
5792+
5793+
lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz,
5794+
char jobr, char jobq, char jobt, char jobf,
5795+
lapack_int whtsvd, lapack_int m, lapack_int n,
5796+
lapack_complex_float* f, lapack_int ldf,
5797+
lapack_complex_float* x, lapack_int ldx,
5798+
lapack_complex_float* y, lapack_int ldy,
5799+
lapack_int nrnk, float tol, lapack_int k,
5800+
lapack_complex_float* reig,
5801+
lapack_complex_float* imeig,
5802+
lapack_complex_float* z, lapack_int ldz,
5803+
lapack_complex_float* res,
5804+
lapack_complex_float* b, lapack_int ldb,
5805+
lapack_complex_float* v, lapack_int ldv,
5806+
lapack_complex_float* s, lapack_int lds,
5807+
lapack_complex_float* work, lapack_int lwork,
5808+
lapack_int* iwork,
5809+
lapack_int liwork );
5810+
5811+
lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz,
5812+
char jobr, char jobq, char jobt, char jobf,
5813+
lapack_int whtsvd, lapack_int m, lapack_int n,
5814+
lapack_complex_double* f, lapack_int ldf,
5815+
lapack_complex_double* x, lapack_int ldx,
5816+
lapack_complex_double* y, lapack_int ldy,
5817+
lapack_int nrnk, double tol, lapack_int k,
5818+
lapack_complex_double* reig,
5819+
lapack_complex_double* imeig,
5820+
lapack_complex_double* z, lapack_int ldz,
5821+
lapack_complex_double* res,
5822+
lapack_complex_double* b, lapack_int ldb,
5823+
lapack_complex_double* v, lapack_int ldv,
5824+
lapack_complex_double* s, lapack_int lds,
5825+
lapack_complex_double* work, lapack_int lwork,
5826+
lapack_int* iwork,
5827+
lapack_int liwork );
5828+
57155829
lapack_int LAPACKE_sgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs,
57165830
float* a, lapack_int lda, lapack_int* ipiv,
57175831
float* b, lapack_int ldb );
@@ -5833,7 +5947,7 @@ lapack_int LAPACKE_zgesvdq_work( int matrix_layout, char joba, char jobp,
58335947
lapack_int* iwork, lapack_int liwork,
58345948
lapack_complex_double* cwork, lapack_int lcwork,
58355949
double* rwork, lapack_int lrwork);
5836-
5950+
58375951
lapack_int LAPACKE_sgesvj_work( int matrix_layout, char joba, char jobu,
58385952
char jobv, lapack_int m, lapack_int n, float* a,
58395953
lapack_int lda, float* sva, lapack_int mv,
@@ -12550,7 +12664,7 @@ lapack_int LAPACKE_zhegv_2stage_work( int matrix_layout, lapack_int itype, char
1255012664
//LAPACK 3.8.0
1255112665
lapack_int LAPACKE_ssysv_aa_2stage( int matrix_layout, char uplo, lapack_int n,
1255212666
lapack_int nrhs, float* a, lapack_int lda,
12553-
float* tb, lapack_int ltb, lapack_int* ipiv,
12667+
float* tb, lapack_int ltb, lapack_int* ipiv,
1255412668
lapack_int* ipiv2, float* b, lapack_int ldb );
1255512669
lapack_int LAPACKE_ssysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n,
1255612670
lapack_int nrhs, float* a, lapack_int lda,
@@ -12560,7 +12674,7 @@ lapack_int LAPACKE_ssysv_aa_2stage_work( int matrix_layout, char uplo, lapack_in
1256012674
lapack_int LAPACKE_dsysv_aa_2stage( int matrix_layout, char uplo, lapack_int n,
1256112675
lapack_int nrhs, double* a, lapack_int lda,
1256212676
double* tb, lapack_int ltb,
12563-
lapack_int* ipiv, lapack_int* ipiv2,
12677+
lapack_int* ipiv, lapack_int* ipiv2,
1256412678
double* b, lapack_int ldb );
1256512679
lapack_int LAPACKE_dsysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n,
1256612680
lapack_int nrhs, double* a, lapack_int lda,
@@ -12612,10 +12726,10 @@ lapack_int LAPACKE_zhesv_aa_2stage_work( int matrix_layout, char uplo, lapack_in
1261212726
lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2,
1261312727
lapack_complex_double* b, lapack_int ldb,
1261412728
lapack_complex_double* work, lapack_int lwork );
12615-
12729+
1261612730
lapack_int LAPACKE_ssytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n,
1261712731
float* a, lapack_int lda,
12618-
float* tb, lapack_int ltb, lapack_int* ipiv,
12732+
float* tb, lapack_int ltb, lapack_int* ipiv,
1261912733
lapack_int* ipiv2 );
1262012734
lapack_int LAPACKE_ssytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n,
1262112735
float* a, lapack_int lda,
@@ -12671,7 +12785,7 @@ lapack_int LAPACKE_zhetrf_aa_2stage_work( int matrix_layout, char uplo, lapack_i
1267112785

1267212786
lapack_int LAPACKE_ssytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n,
1267312787
lapack_int nrhs, float* a, lapack_int lda,
12674-
float* tb, lapack_int ltb, lapack_int* ipiv,
12788+
float* tb, lapack_int ltb, lapack_int* ipiv,
1267512789
lapack_int* ipiv2, float* b, lapack_int ldb );
1267612790
lapack_int LAPACKE_ssytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n,
1267712791
lapack_int nrhs, float* a, lapack_int lda,
@@ -12680,7 +12794,7 @@ lapack_int LAPACKE_ssytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_i
1268012794
lapack_int LAPACKE_dsytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n,
1268112795
lapack_int nrhs, double* a, lapack_int lda,
1268212796
double* tb, lapack_int ltb,
12683-
lapack_int* ipiv, lapack_int* ipiv2,
12797+
lapack_int* ipiv, lapack_int* ipiv2,
1268412798
double* b, lapack_int ldb );
1268512799
lapack_int LAPACKE_dsytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n,
1268612800
lapack_int nrhs, double* a, lapack_int lda,
@@ -12727,7 +12841,6 @@ lapack_int LAPACKE_zhetrs_aa_2stage_work( int matrix_layout, char uplo, lapack_i
1272712841
lapack_int lda, lapack_complex_double* tb,
1272812842
lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2,
1272912843
lapack_complex_double* b, lapack_int ldb );
12730-
1273112844
//LAPACK 3.10.0
1273212845
lapack_int LAPACKE_sorhr_col( int matrix_layout, lapack_int m, lapack_int n,
1273312846
lapack_int nb, float* a,

0 commit comments

Comments
 (0)