From 702001ea84cc8411d29b54b1d198df522ccc6adc Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:05:38 +0200 Subject: [PATCH 1/8] ignore gmp compiled files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 082779b..25a02da 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .syncthing* *~ external/*boost_* +external/gmp/* coverage.* coverage_html testresults.xml From 41e3672fdf886bae7c94aa648905f41f0f565b55 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:16:30 +0200 Subject: [PATCH 2/8] typo --- src/sgem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sgem.cpp b/src/sgem.cpp index e749e3f..c6be631 100644 --- a/src/sgem.cpp +++ b/src/sgem.cpp @@ -6831,7 +6831,7 @@ bool SparseGmpEigenMatrix::identicalValues(const SparseGmpEigenMatrix& b) const { if (isComplex) { // Just for security, we double check that b is indeed also complex... - if (~b.isComplex) + if (!b.isComplex) return false; for (IndexType k = 0; k < matrixR.outerSize(); ++k) { From 066516b366f3bc901cb93ed56bac2c8ad503a6dc Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:17:01 +0200 Subject: [PATCH 3/8] Updating compile instructions to gmp and mpfr repositories --- docs/docs/compilationInstructions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/compilationInstructions.md b/docs/docs/compilationInstructions.md index b0ccd33..55d5343 100644 --- a/docs/docs/compilationInstructions.md +++ b/docs/docs/compilationInstructions.md @@ -59,6 +59,7 @@ The following was only tested on Matlab. - ``./configure --disable-shared --enable-static CFLAGS=-fPIC --with-pic --prefix=`pwd`/../staticLibraries`` - `make && make check && make install` 9. From within msys, go into the external/mpfr folder and run the following commands: + - ``./autogen.sh`` - ``./configure --disable-shared --enable-static CFLAGS=-fPIC --with-pic --prefix=`pwd`/../staticLibraries --with-gmp=`pwd`/../staticLibraries`` - `make && make check && make install` 10. Install the *TDM64-GCC* compiler from [http://tdm-gcc.tdragon.net/download](http://tdm-gcc.tdragon.net/download), making sure you include the component `Components/gcc/openmp` in the TDM-GCC Setup. Configure it for Matlab by typing `setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')` and `mex -setup cpp` in Matlab (see [**here**](https://fr.mathworks.com/help/matlab/matlab_external/compiling-c-mex-files-with-mingw.html) for more details). From 8e10b7d2115ce35575c4605cf30ed83873bb4985 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:46:10 +0200 Subject: [PATCH 4/8] Updatin MOcov and MOxUnit to latest versions --- external/MOcov | 2 +- external/MOxUnit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/MOcov b/external/MOcov index 902d5f6..e53c3a0 160000 --- a/external/MOcov +++ b/external/MOcov @@ -1 +1 @@ -Subproject commit 902d5f635f9ec9f54be9305a38dc449b17376d05 +Subproject commit e53c3a0207dfadf97aeabf8041adb8803d9d20e1 diff --git a/external/MOxUnit b/external/MOxUnit index 8438d5d..ca7825f 160000 --- a/external/MOxUnit +++ b/external/MOxUnit @@ -1 +1 @@ -Subproject commit 8438d5d6e55cb500f9f76ba95c5b8bbd07c20e06 +Subproject commit ca7825fd984500f4e541b56015fc6073ecdb4e2d From 5017a94e42b6ff486b618fd92d4984dc7f73be16 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:55:02 +0200 Subject: [PATCH 5/8] don't ask for more eigenvalues than available --- tests/gem/eigs_test.m | 14 +++++++------- tests/gem/svds_test.m | 8 ++++---- tests/sgem/eigs_test.m | 8 ++++---- tests/sgem/svds_test.m | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/gem/eigs_test.m b/tests/gem/eigs_test.m index d1b5dd0..55d60a9 100644 --- a/tests/gem/eigs_test.m +++ b/tests/gem/eigs_test.m @@ -16,10 +16,10 @@ validateDoubleConsistency(@(x) sort(abs(eigs(x))), x, 1e-9, 1); validateDoubleConsistency(@(x) abs(eigs(x, [], 1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)))), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'lm')), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'sm')), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(1,size(x,1)), 2)), x, 1e-9); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]))), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'lm')), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'sm')), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([1, size(x)]), 2)), x, 1e-9); % For coverage monitoring purpose (this is tested by matlab) eigs(x{1}, [], 15, 'sm'); @@ -37,13 +37,13 @@ validateDoubleConsistency(@(x) sort(abs(eigs(x))), x, 1e-9, 1); validateDoubleConsistency(@(x) abs(eigs(x, [], 1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)))), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'lm')), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]))), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'lm')), x, 1e-9, 1); % % Currently there is a but in spectra which doesn't allow us to test for smallest eigenvalues... % for i = 1:length(x) % if rank(x{i}) == size(x{i},1) -% validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'sm')), x(i), 1e-9); +% validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'sm')), x(i), 1e-9); % end % end % validateDoubleConsistency(@(x) abs(eigs(x, [], min(1,size(x,1)), 1)), x, 1e-9); diff --git a/tests/gem/svds_test.m b/tests/gem/svds_test.m index 9b1ffe9..c79e1b4 100644 --- a/tests/gem/svds_test.m +++ b/tests/gem/svds_test.m @@ -16,7 +16,7 @@ validateDoubleConsistency(@(x) svds(x), x, 1e-9, 1); validateDoubleConsistency(@(x) svds(x, gem(1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) svds(x, min(2,size(x,1))), x, 1e-9, 1); + validateDoubleConsistency(@(x) svds(x, min([2, size(x)])), x, 1e-9, 1); % Octave has its own option naming convention assert( sum(abs(svds(x{1}, 2, 'largest') - svds(double(x{1}), 2, 'L'))) < 1e-9); @@ -39,13 +39,13 @@ validateDoubleConsistency(@(x) svds(x), x, 1e-9, 1); validateDoubleConsistency(@(x) svds(x, gem(1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) svds(x, min(2,size(x,1))), x, 1e-9, 1); - validateDoubleConsistency(@(x) svds(x, min(2,size(x,1)), 'largest'), x, 1e-9, 1); + validateDoubleConsistency(@(x) svds(x, min([2, size(x)])), x, 1e-9, 1); + validateDoubleConsistency(@(x) svds(x, min([2, size(x)]), 'largest'), x, 1e-9, 1); % % Currently there is a bug in spectra which doesn't allow us to test for smallest eigenvalues... % for i = 1:length(x) % if rank(x{i}) == size(x{i},1) -% validateDoubleConsistency(@(x) svds(x, min(2,size(x,1)), 'smallest'), x(i), 1e-9); +% validateDoubleConsistency(@(x) svds(x, min([2, size(x)]), 'smallest'), x(i), 1e-9); % end % end diff --git a/tests/sgem/eigs_test.m b/tests/sgem/eigs_test.m index 624e1b4..076cb8b 100644 --- a/tests/sgem/eigs_test.m +++ b/tests/sgem/eigs_test.m @@ -16,10 +16,10 @@ validateDoubleConsistency(@(x) sort(abs(eigs(x))), x, 1e-9, 1); validateDoubleConsistency(@(x) abs(eigs(x, [], 1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)))), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'lm')), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(2,size(x,1)), 'sm')), x, 1e-9, 1); - validateDoubleConsistency(@(x) abs(eigs(x, [], min(1,size(x,1)), 2)), x, 1e-9); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]))), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'lm')), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([2, size(x)]), 'sm')), x, 1e-9, 1); + validateDoubleConsistency(@(x) abs(eigs(x, [], min([1, size(x)]), 2)), x, 1e-9); % For coverage monitoring purpose (this is tested by matlab) eigs(x{1}, [], 14); diff --git a/tests/sgem/svds_test.m b/tests/sgem/svds_test.m index a5d3c5c..4ac8dd1 100644 --- a/tests/sgem/svds_test.m +++ b/tests/sgem/svds_test.m @@ -16,7 +16,7 @@ validateDoubleConsistency(@(x) svds(x), x, 1e-9, 1); validateDoubleConsistency(@(x) svds(x, gem(1)), x, 1e-9, 1); - validateDoubleConsistency(@(x) svds(x, min(2,size(x,1))), x, 1e-9, 1); + validateDoubleConsistency(@(x) svds(x, min([2, size(x)])), x, 1e-9, 1); % Octave has its own option naming convention assert( sum(abs(svds(x{1}, 2, 'largest') - svds(double(x{1}), 2, 'L'))) < 1e-9); From ced4f762c1d933a02468e1345f47c2925a0c1c52 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 12:57:18 +0200 Subject: [PATCH 6/8] submodule spectra update --- external/spectra | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/spectra b/external/spectra index 7f6e7a2..8c7242e 160000 --- a/external/spectra +++ b/external/spectra @@ -1 +1 @@ -Subproject commit 7f6e7a2783f3e41c47cdaf291d0b118abfbfa430 +Subproject commit 8c7242e08f0fb7f6a0022cfe232e3dc5b5bd4eb4 From 178ab9edb26e2b8594815f303db1cfdcf50bc27f Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 30 May 2023 13:21:24 +0200 Subject: [PATCH 7/8] Spectra migration WIP --- src/gem.cpp | 48 ++++++++++++++++++++++++------------------------ src/sgem.cpp | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/gem.cpp b/src/gem.cpp index 271908e..0ab8186 100644 --- a/src/gem.cpp +++ b/src/gem.cpp @@ -4271,16 +4271,16 @@ GmpEigenMatrix GmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEigenMatri switch (type) { case 1: { // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseSymMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::SymEigsSolver< Spectra::DenseSymMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4300,16 +4300,16 @@ GmpEigenMatrix GmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEigenMatri Spectra::DenseSymShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseSymShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::SymEigsShiftSolver< Spectra::DenseSymShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4384,16 +4384,16 @@ GmpEigenMatrix GmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEigenMatri Spectra::DenseGenMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseGenMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::GenEigsSolver< Spectra::DenseGenMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4419,16 +4419,16 @@ GmpEigenMatrix GmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEigenMatri mpreal sigmaI(0); if (sigma.isComplex) sigmaI = sigma.matrixI(0,0); - Spectra::GenEigsComplexShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseGenComplexShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0), sigmaI); + Spectra::GenEigsComplexShiftSolver< Spectra::DenseGenComplexShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0), sigmaI); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4497,16 +4497,16 @@ GmpEigenMatrix& GmpEigenMatrix::eigs_new(const long int& nbEigenvalues, GmpEigen switch (type) { case 1: { // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseSymMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::SymEigsSolver< Spectra::DenseSymMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4526,16 +4526,16 @@ GmpEigenMatrix& GmpEigenMatrix::eigs_new(const long int& nbEigenvalues, GmpEigen Spectra::DenseSymShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseSymShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::SymEigsShiftSolver< Spectra::DenseSymShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4610,16 +4610,16 @@ GmpEigenMatrix& GmpEigenMatrix::eigs_new(const long int& nbEigenvalues, GmpEigen Spectra::DenseGenMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseGenMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::GenEigsSolver< Spectra::DenseGenMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -4645,16 +4645,16 @@ GmpEigenMatrix& GmpEigenMatrix::eigs_new(const long int& nbEigenvalues, GmpEigen mpreal sigmaI(0); if (sigma.isComplex) sigmaI = sigma.matrixI(0,0); - Spectra::GenEigsComplexShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::DenseGenComplexShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0), sigmaI); + Spectra::GenEigsComplexShiftSolver< Spectra::DenseGenComplexShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0), sigmaI); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results diff --git a/src/sgem.cpp b/src/sgem.cpp index c6be631..023cf1b 100644 --- a/src/sgem.cpp +++ b/src/sgem.cpp @@ -5168,16 +5168,16 @@ GmpEigenMatrix SparseGmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEige Spectra::SparseSymMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseSymMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::SymEigsSolver< Spectra::SparseSymMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5197,16 +5197,16 @@ GmpEigenMatrix SparseGmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEige Spectra::SparseSymShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseSymShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::SymEigsShiftSolver< Spectra::SparseSymShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5281,16 +5281,16 @@ GmpEigenMatrix SparseGmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEige Spectra::SparseGenMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseGenMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::GenEigsSolver< Spectra::SparseGenMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5313,16 +5313,16 @@ GmpEigenMatrix SparseGmpEigenMatrix::eigs(const long int& nbEigenvalues, GmpEige Spectra::SparseGenRealShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsRealShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseGenRealShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::GenEigsRealShiftSolver< Spectra::SparseGenRealShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5390,16 +5390,16 @@ GmpEigenMatrix& SparseGmpEigenMatrix::eigs_new(const long int& nbEigenvalues, Gm Spectra::SparseSymMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseSymMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::SymEigsSolver< Spectra::SparseSymMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5419,16 +5419,16 @@ GmpEigenMatrix& SparseGmpEigenMatrix::eigs_new(const long int& nbEigenvalues, Gm Spectra::SparseSymShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::SymEigsShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseSymShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::SymEigsShiftSolver< Spectra::SparseSymShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5503,16 +5503,16 @@ GmpEigenMatrix& SparseGmpEigenMatrix::eigs_new(const long int& nbEigenvalues, Gm Spectra::SparseGenMatProd op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseGenMatProd > eigs(&op, nbEigenvalues, ncv); + Spectra::GenEigsSolver< Spectra::SparseGenMatProd > eigs(op, nbEigenvalues, ncv); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::LARGEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::LargestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results @@ -5535,16 +5535,16 @@ GmpEigenMatrix& SparseGmpEigenMatrix::eigs_new(const long int& nbEigenvalues, Gm Spectra::SparseGenRealShiftSolve op(matrixR); // Construct eigen solver object, requesting desired eigenvalues - Spectra::GenEigsRealShiftSolver< mpreal, Spectra::LARGEST_MAGN, Spectra::SparseGenRealShiftSolve > eigs(&op, nbEigenvalues, ncv, sigma.matrixR(0,0)); + Spectra::GenEigsRealShiftSolver< Spectra::SparseGenRealShiftSolve > eigs(op, nbEigenvalues, ncv, sigma.matrixR(0,0)); // Initialize and compute eigs.init(); int maxIter(1000); mpreal tolerance(pow(10,-mpfr::bits2digits(mpfr::mpreal::get_default_prec()))); - int nconv = eigs.compute(maxIter, tolerance, Spectra::SMALLEST_MAGN); + int nconv = eigs.compute(Spectra::SortRule::LargestMagn, maxIter, tolerance, Spectra::SortRule::SmallestMagn); // Check for error - if(eigs.info() != Spectra::SUCCESSFUL) + if(eigs.info() != Spectra::CompInfo::Successful) mexErrMsgTxt("Eigenvalue decomposition failed."); // Retrieve results From 50bb7b04dbd046c80bba8e3be3d9e58236b37756 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Bancal Date: Tue, 15 Aug 2023 11:44:46 +0200 Subject: [PATCH 8/8] submodule spectra updated --- external/spectra | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/spectra b/external/spectra index 8c7242e..3af5641 160000 --- a/external/spectra +++ b/external/spectra @@ -1 +1 @@ -Subproject commit 8c7242e08f0fb7f6a0022cfe232e3dc5b5bd4eb4 +Subproject commit 3af56416547197e28e5a9049fd3a56d8bd49fb5d