This material is based upon work supported by the National Science Foundation and the Department of Energy.
LAPACK is a software package provided by Univ. of Tennessee, Univ. of California, Berkeley, Univ. of Colorado Denver and NAG Ltd..
The following notes are also at http://netlib.org/lapack/lapack-3.12.0.html
Dynamic Mode Decomposition (DMD)
xGEDMD computes the Dynamic Mode Decomposition (DMD) for a pair of data snapshot matrices. For the input matrices X and Y such that Y = A*X with an unaccessible matrix A, xGEDMD computes a certain number of Ritz pairs of A using the standard Rayleigh-Ritz extraction from a subspace of range(X) that is determined using the leading left singular vectors of X. Optionally, xGEDMD returns the residuals of the computed Ritz pairs, the information needed for a refinement of the Ritz vectors, or the eigenvectors of the Exact DMD.
xGEDMDQ does the same as xGEDMD but uses a QR factorization based compression of the data.
- See: Z. Drmac: A LAPACK implementation of the Dynamic Mode Decomposition I. Technical report. AIMDyn Inc. and LAPACK Working Note 298.
- Developed and coded by Zlatko Drmac, Faculty of Science, University of Zagreb. In cooperation with AIMdyn Inc., Santa Barbara, CA. And supported by (1) DARPA SBIR project "Koopman Operator-Based Forecasting for Nonstationary Processes from Near-Term, Limited Observational Data", Contract No: W31P4Q-21-C-0007; (2) DARPA PAI project "Physics-Informed Machine Learning Methodologies", Contract No: HR0011-18-9-0033; (3) DARPA MoDyL project "A Data-Driven, Operator-Theoretic Framework for Space-Time Analysis of Process Dynamics", Contract No: HR0011-16-C-0116. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the DARPA SBIR Program Office. Distribution Statement A: Approved for Public Release, Distribution Unlimited. Cleared by DARPA on September 29, 2022
- Adding Dynamic Mode Decomposition (DMD) into LAPACK by @dbielich in #736
- Update C prototypes and LAPACKE interfaces for ?GEDMD/?GEDMDQ by @martin-frbg in #880
- Update of the documentation to the pull request "Truncated QR with Pivoting #891" by @scr2016 in #941
- make the DMD comments in the header Doxygen compliant by @langou in #936
Truncated QR with Column Pivoting
The routine computes a truncated (rank K) or full rank Householder QR factorization with column pivoting of a real M-by-N matrix A using Level 3 BLAS.
The truncation criteria (i.e. when to stop the factorization) can be any of the following: (1) The input parameter KMAX, the maximum number of columns KMAX to factorize; (2) The input parameter ABSTOL, the absolute tolerance for the maximum column 2-norm of the residual matrix R22(K); (3) The input parameter RELTOL, the tolerance for the maximum column 2-norm matrix of the residual matrix R22(K) divided by the maximum column 2-norm of the original matrix A, which is equal to abs(R(1,1)). The algorithm stops when any of these conditions is first satisfied, otherwise the whole matrix A is factorized.
Reciprocal Scaling of complex vectors
[C/Z]RSCL multiplies an n-element complex vector x by the complex scalar 1/a. This is done without overflow or underflow as long as the final result x/a does not overflow or underflow.
- See: "An algorithm for scaling vectors by the reciprocal of a complex number", Weslley da Silva Pereira, arXiv:2311.05736
- Adds CRSCL by @weslleyspereira in #839
Improvements in the 64-bit API
- Fix CBLAS tests with 64-bit indexing by @svillemot in #767
- Add Index-64 API as extended API with _64 suffix for CBLAS by @mkrainiuk in #846
- Revert "Add Index-64 API as extended API with _64 suffix for CBLAS" by @langou in #856
- Add Index-64 API as extended API with _64 suffix for CBLAS by @mkrainiuk in #857
- Create DOCS/CBLAS.md by @mkrainiuk in #853
- Reduce number of macros in fortran compilation line for BLAS _64 API by @mkrainiuk in #861
Bug fixes and other changes
- Windows build fix by @ACSimon33 in #760
- Added option to enable flat namespace on macOS by @ACSimon33 in #762
- Fix bug in new test case for LAPACK 3.11 SLATRS3 by @dklyuchinskiy in #755
- Check for NaNs in *GECON by @weslleyspereira in #765
- Fixed bug in array bounds in complex syl01 test by @dklyuchinskiy in #758
- Fix uninitialized M when quick return in DLARRD and SLARRD by @akobotov in #769
- In LAPACKE tgsen, allocate iwork when ijob = 0. Fixes #772. by @mgates3 in #773
- Fix SLATRS3 and CLATRS3 tests by @bartoldeman in #764
- Fix uninitialized out variables in LARR functions by @echeresh in #775
- Warnings supression in some LAPACKE functions by @jgpallero in #780
- Revert "Warnings supression in some LAPACKE functions" by @langou in #781
- Warnings supression and deletion of unnecessary check in some LAPACKE xLARFB functions by @jgpallero in #782
- remove redundant space from xerbla call sbgv/hbgv by @dklyuchinskiy in #792
- don't subtract N_DEFLATED from istop twice by @thijssteel in #794
- fix rfp test for DIAG = U by @dklyuchinskiy in #796
- fix bug in complex precision tests (c|z)het21 by @EduardFedorenkov in #798
- CMake: Disable TEST_FORTRAN_COMPILER by @jschueller in #761
- Fix typos in documentation by @angsch in #750
- Add minimum permissions to workflows by @gabibguti in #804
- Add numerical tests for trevc3 by @angsch in #682
- Remove legacy function LABAD by @angsch in #805
- Refactor xGEBAL by @eprovst in #808
- Fix typos and errors in comments by @jip in #809
- cmake: allow setting a prefix for the library names by @joseeroman in #810
- Fix typos in comments by @jip in #811
- fix #813 by @langou in #814
- Replace the (partially defined) constant index variable INDIBL in ?SBGVX and related by @martin-frbg in #807
- CTGEVC, ZTGEVC: fix typo in description of VR argument by @svillemot in #812
- Add Security Policy by @gabibguti in #819
- typos by @musvaage in #820
- extend tests for error exit sysv sytd2 gehd2 by @dklyuchinskiy in #795
- CMake: avoid "make" in blas++ & lapack++ by @nim65s in #821
- appveyor: output test failures by @nim65s in #822
- Reference actions by commit SHA by @gabibguti in #829
- LAPACKE interfaces for [cz]unhr_col and [sd]orhr_col by @sknepper in #827
- fix segfault problem when executing LAPACKE_*geqrt on row major #766 by @sbite0138 in #768
- Adds comment related to zero-sized matrix B in GELSY by @weslleyspereira in #833
- update brief descriptions of function purpose, Closes #230 by @weslleyspereira in #831
- Fix scaling in (S/D)TGSNA, fix #103, thanks to @elivanova by @weslleyspereira in #830
- Exits xLARUV when N < 1 by @weslleyspereira in #837
- Create GitHub action to test CMake build system on Windows by @weslleyspereira in #524
- Fix bug in lapacke_[s,d]geesx by @weslleyspereira in #836
- Removes unused SMIN from bdsqr by @weslleyspereira in #832
- Use a better (more informative) message when we say the compiler intr⦠by @weslleyspereira in #845
- Improve variants of Cholesky and QR by @angsch in #847
- fixes #848 by @jaganmn in #849
- Attempt to fix Appveyor on Windows by @angsch in #854
- fix dlasd0 / slasd0 documentation issue by @mtowara in #855
- Remove legacy warning for non IEEE 754 compliant machines by @angsch in #852
- Add verbose build to CI by @mkrainiuk in #858
- [cz]hetrd_hb2st.F, [sd]sytrd_sb2st.F OpenMP fixes by @chrwarm in #860
- new doxygen group structure by @mgates3 in #802
- Correct the order of returned eigenvalue and eigenvectors for 2x2 matrices with IL=IU in C/D/S/Z/STEMR by @aravindh-krishnamoorthy in #867
- fix nrhs=0 case in ?gelss by @eaberendeev in #876
- Fix computation of uplo in LAPACKE_xlarfb by @vladimir-ch in #878
- Fix workspace query corner cases by @angsch in #883
- Fix actual arguments in some procedure calls by @mjacobse in #885
- Improve Cholesky variants by @angsch in #889
- Removes usage of Experimental (interactive) mode in ctest by @weslleyspereira in #892
- Updates the documentation of xGEMV and xGBMV related to when M=0 and N=0 by @weslleyspereira in #843
- Add Scorecard by @gabibguti in #895
- Remove auxiliary GEQRS, GELQS by @angsch in #900
- CMake config for IntelLLVM (ifx) and NVIDIA HPC SDK (nvfortran) by @ACSimon33 in #898
- Fix build for CMake >= 3.27 by @scivision in #910
- allow absolute GNU install dirs by @chayleaf in #893
- dtgex2: add 2 to iwork length to prevent OOB interaction in Dtgsy2 by @soypat in #907
- Adds OpenSSF Scorecard badge by @weslleyspereira in #896
- Fix issue #908 related to accumulation in xLASSQ by @weslleyspereira in #909
- Apply ROUNDUP_LWORK function in lapack by @kleineLi in #904
- Compilation of LAPACKE possibly independent from Fortran by @weslleyspereira in #834
- Always use C as linker language for CBLAS by @weslleyspereira in #920
- Uses Valgrind for ExperimentalMemCheck in ctest by @weslleyspereira in #844
- Adding in quotes in cmake for Intel ifx and linux build by @colleeneb in #922
- Fix complex BDSQR maxit by @pleshkovvli in #927
- xORBDB6/xUNBDB6: fix a constant by @christoph-conrads in #928
- fix #931 by @langou in #933
- Appveyor CI: Expressly request flang 11.0.1 from conda by @martin-frbg in #929
- Make vector orthogonalization more reliable by @christoph-conrads in #930
- GECON returns 1 if RCOND is NaN by @weslleyspereira in #926
- Add Anderson's tests of NRM2 by @angsch in #925
- Fixed Fortran preprocessor flag for NAG Fortran compiler by @ACSimon33 in #939
- Fixed
void main()
for AppleClang by @ACSimon33 in #940 - LAPACK 3.12.0 release by @julielangou in #944
New Contributors
- @dklyuchinskiy made their first contribution in #755
- @akobotov made their first contribution in #769
- @bartoldeman made their first contribution in #764
- @jgpallero made their first contribution in #780
- @EduardFedorenkov made their first contribution in #798
- @gabibguti made their first contribution in #804
- @eprovst made their first contribution in #808
- @joseeroman made their first contribution in #810
- @musvaage made their first contribution in #820
- @nim65s made their first contribution in #821
- @sknepper made their first contribution in #827
- @sbite0138 made their first contribution in #768
- @dbielich made their first contribution in #736
- @jaganmn made their first contribution in #849
- @mkrainiuk made their first contribution in #846
- @chrwarm made their first contribution in #860
- @aravindh-krishnamoorthy made their first contribution in #867
- @eaberendeev made their first contribution in #876
- @chayleaf made their first contribution in #893
- @soypat made their first contribution in #907
- @kleineLi made their first contribution in #904
- @colleeneb made their first contribution in #922
- @pleshkovvli made their first contribution in #927
Full Changelog: v3.11.0...v3.12.0
Thanks to all our contributors!
Thanks to the Mathworks team: Penny Anderson, Mary Ann Freeman, Bobby Cheng, Pat Quillen, Christine Tobler, Heiko Weichelt.
Thanks to the AIMdyn Inc. team: Igor Mezic and Maria Fonoberova.
The LAPACK team