Skip to content

Commit 9487046

Browse files
authored
Merge pull request #4094 from martin-frbg/lapack736
Add Dynamic Mode Decomposition (Reference-LAPACK PR 736)
2 parents 994d283 + 42fd3f4 commit 9487046

40 files changed

+21709
-22
lines changed

azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
mkdir build
116116
cd build
117117
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
118-
cmake -G "Ninja" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_TESTING=OFF -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
118+
cmake -G "Ninja" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER="flang -I C:\Miniconda\Library\include\flang" -DBUILD_TESTING=OFF -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
119119
cmake --build . --config Release
120120
ctest
121121

cmake/lapack.cmake

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ set(SLASRC
124124
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f
125125
sgesvdq.f slaorhr_col_getrfnp.f
126126
slaorhr_col_getrfnp2.f sorgtsqr.f sorgtsqr_row.f sorhr_col.f
127-
slatrs3.f strsyl3.f sgelst.f)
127+
slatrs3.f strsyl3.f sgelst.f sgedmd.f90 sgedmdq.f90)
128128

129129
set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f
130130
sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f
@@ -223,7 +223,7 @@ set(CLASRC
223223
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f
224224
cgesvdq.f claunhr_col_getrfnp.f claunhr_col_getrfnp2.f
225225
cungtsqr.f cungtsqr_row.f cunhr_col.f
226-
clatrs3.f ctrsyl3.f cgelst.f)
226+
clatrs3.f ctrsyl3.f cgelst.f cgedmd.f90 cgedmdq.f90)
227227

228228
set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
229229
cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f
@@ -316,7 +316,7 @@ set(DLASRC
316316
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f
317317
dcombssq.f dgesvdq.f dlaorhr_col_getrfnp.f
318318
dlaorhr_col_getrfnp2.f dorgtsqr.f dorgtsqr_row.f dorhr_col.f
319-
dlatrs3.f dtrsyl3.f dgelst.f)
319+
dlatrs3.f dtrsyl3.f dgelst.f dgedmd.f90 dgedmdq.f90)
320320

321321
set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f
322322
dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f
@@ -419,7 +419,7 @@ set(ZLASRC
419419
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f
420420
zgesvdq.f zlaunhr_col_getrfnp.f zlaunhr_col_getrfnp2.f
421421
zungtsqr.f zungtsqr_row.f zunhr_col.f
422-
zlatrs3.f ztrsyl3.f zgelst.f)
422+
zlatrs3.f ztrsyl3.f zgelst.f zgedmd.f90 zgedmdq.f90)
423423

424424
set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f
425425
zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f
@@ -624,7 +624,7 @@ set(SLASRC
624624
ssbev_2stage.c ssbevx_2stage.c ssbevd_2stage.c ssygv_2stage.c
625625
sgesvdq.c slaorhr_col_getrfnp.c
626626
slaorhr_col_getrfnp2.c sorgtsqr.c sorgtsqr_row.c sorhr_col.c
627-
slatrs3.c strsyl3.c sgelst.c)
627+
slatrs3.c strsyl3.c sgelst.c sgedmd.c sgedmdq.c)
628628

629629
set(SXLASRC sgesvxx.c sgerfsx.c sla_gerfsx_extended.c sla_geamv.c
630630
sla_gercond.c sla_gerpvgrw.c ssysvxx.c ssyrfsx.c
@@ -722,7 +722,7 @@ set(CLASRC
722722
chbev_2stage.c chbevx_2stage.c chbevd_2stage.c chegv_2stage.c
723723
cgesvdq.c claunhr_col_getrfnp.c claunhr_col_getrfnp2.c
724724
cungtsqr.c cungtsqr_row.c cunhr_col.c
725-
clatrs3.c ctrsyl3.c cgelst.c)
725+
clatrs3.c ctrsyl3.c cgelst.c cgedmd.c cgedmdq.c)
726726

727727
set(CXLASRC cgesvxx.c cgerfsx.c cla_gerfsx_extended.c cla_geamv.c
728728
cla_gercond_c.c cla_gercond_x.c cla_gerpvgrw.c
@@ -814,7 +814,7 @@ set(DLASRC
814814
dsbev_2stage.c dsbevx_2stage.c dsbevd_2stage.c dsygv_2stage.c
815815
dcombssq.c dgesvdq.c dlaorhr_col_getrfnp.c
816816
dlaorhr_col_getrfnp2.c dorgtsqr.c dorgtsqr_row.c dorhr_col.c
817-
dlatrs3.c dtrsyl3.c dgelst.c)
817+
dlatrs3.c dtrsyl3.c dgelst.c dgedmd.c dgedmdq.c)
818818

819819
set(DXLASRC dgesvxx.c dgerfsx.c dla_gerfsx_extended.c dla_geamv.c
820820
dla_gercond.c dla_gerpvgrw.c dsysvxx.c dsyrfsx.c
@@ -915,7 +915,8 @@ set(ZLASRC
915915
zheevd_2stage.c zheev_2stage.c zheevx_2stage.c zheevr_2stage.c
916916
zhbev_2stage.c zhbevx_2stage.c zhbevd_2stage.c zhegv_2stage.c
917917
zgesvdq.c zlaunhr_col_getrfnp.c zlaunhr_col_getrfnp2.c
918-
zungtsqr.c zungtsqr_row.c zunhr_col.c zlatrs3.c ztrsyl3.c zgelst.c)
918+
zungtsqr.c zungtsqr_row.c zunhr_col.c zlatrs3.c ztrsyl3.c zgelst.c
919+
zgedmd.c zgedmdq.c)
919920

920921
set(ZXLASRC zgesvxx.c zgerfsx.c zla_gerfsx_extended.c zla_geamv.c
921922
zla_gercond_c.c zla_gercond_x.c zla_gerpvgrw.c zsysvxx.c zsyrfsx.c

cmake/lapacke.cmake

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ set(CSRC
9090
lapacke_cgerqf_work.c
9191
lapacke_cgesdd.c
9292
lapacke_cgesdd_work.c
93+
lapacke_cgedmd.c
94+
lapacke_cgedmd_work.c
95+
lapacke_cgedmdq.c
96+
lapacke_cgedmdq_work.c
9397
lapacke_cgesv.c
9498
lapacke_cgesv_work.c
9599
lapacke_cgesvd.c
@@ -713,6 +717,10 @@ set(DSRC
713717
lapacke_dgerqf_work.c
714718
lapacke_dgesdd.c
715719
lapacke_dgesdd_work.c
720+
lapacke_dgedmd.c
721+
lapacke_dgedmd_work.c
722+
lapacke_dgedmdq.c
723+
lapacke_dgedmdq_work.c
716724
lapacke_dgesv.c
717725
lapacke_dgesv_work.c
718726
lapacke_dgesvd.c
@@ -1291,6 +1299,10 @@ set(SSRC
12911299
lapacke_sgerqf_work.c
12921300
lapacke_sgesdd.c
12931301
lapacke_sgesdd_work.c
1302+
lapacke_sgedmd.c
1303+
lapacke_sgedmd_work.c
1304+
lapacke_sgedmdq.c
1305+
lapacke_sgedmdq_work.c
12941306
lapacke_sgesv.c
12951307
lapacke_sgesv_work.c
12961308
lapacke_sgesvd.c
@@ -1863,6 +1875,10 @@ set(ZSRC
18631875
lapacke_zgerqf_work.c
18641876
lapacke_zgesdd.c
18651877
lapacke_zgesdd_work.c
1878+
lapacke_zgedmd.c
1879+
lapacke_zgedmd_work.c
1880+
lapacke_zgedmdq.c
1881+
lapacke_zgedmdq_work.c
18661882
lapacke_zgesv.c
18671883
lapacke_zgesv_work.c
18681884
lapacke_zgesvd.c

exports/gensymbol

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,23 @@ lapackobjs2z="$lapackobjs2z
844844
zungtsqr_row
845845
"
846846

847+
#functions added for lapack-3.11
848+
lapackobjs2c="$lapackobjs2c
849+
cgedmd
850+
cgedmdq
851+
"
852+
lapackobjs2d="$lapackobjs2d
853+
dgedmd
854+
dgedmdq
855+
"
856+
lapackobjs2s="$lapackobjs2s
857+
sgedmd
858+
sgedmdq
859+
"
860+
lapackobjs2z="$lapackobjs2z
861+
zgedmd
862+
zgedmdq
863+
"
847864
lapack_extendedprecision_objs="
848865
zposvxx clagge clatms chesvxx cposvxx cgesvxx ssyrfssx csyrfsx
849866
dlagsy dsysvxx sporfsx slatms zlatms zherfsx csysvxx
@@ -1013,6 +1030,10 @@ lapackeobjsc="
10131030
LAPACKE_cgebrd_work
10141031
LAPACKE_cgecon
10151032
LAPACKE_cgecon_work
1033+
LAPACKE_cgedmd
1034+
LAPACKE_cgedmd_work
1035+
LAPACKE_cgedmdq
1036+
LAPACKE_cgedmdq_work
10161037
LAPACKE_cgeequ
10171038
LAPACKE_cgeequ_work
10181039
LAPACKE_cgeequb
@@ -1672,6 +1693,10 @@ lapackeobjsd="
16721693
LAPACKE_dgebrd_work
16731694
LAPACKE_dgecon
16741695
LAPACKE_dgecon_work
1696+
LAPACKE_dgedmd
1697+
LAPACKE_dgedmd_work
1698+
LAPACKE_dgedmdq
1699+
LAPACKE_dgedmdq_work
16751700
LAPACKE_dgeequ
16761701
LAPACKE_dgeequ_work
16771702
LAPACKE_dgeequb
@@ -2285,6 +2310,10 @@ lapackeobjss="
22852310
LAPACKE_sgebrd_work
22862311
LAPACKE_sgecon
22872312
LAPACKE_sgecon_work
2313+
LAPACKE_sgedmd
2314+
LAPACKE_sgedmd_work
2315+
LAPACKE_sgedmdq
2316+
LAPACKE_sgedmdq_work
22882317
LAPACKE_sgeequ
22892318
LAPACKE_sgeequ_work
22902319
LAPACKE_sgeequb
@@ -2894,6 +2923,10 @@ lapackeobjsz="
28942923
LAPACKE_zgebrd_work
28952924
LAPACKE_zgecon
28962925
LAPACKE_zgecon_work
2926+
LAPACKE_zgedmd
2927+
LAPACKE_zgedmd_work
2928+
LAPACKE_zgedmdq
2929+
LAPACKE_zgedmdq_work
28972930
LAPACKE_zgeequ
28982931
LAPACKE_zgeequ_work
28992932
LAPACKE_zgeequb

lapack-netlib/LAPACKE/include/lapack.h

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3323,6 +3323,138 @@ void LAPACK_zgesdd_base(
33233323
#define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__)
33243324
#endif
33253325

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

0 commit comments

Comments
 (0)