From 3e760c23e7adfab54a44032f43d61cf52916fa2f Mon Sep 17 00:00:00 2001 From: Franck HOUSSEN Date: Thu, 7 Feb 2019 11:31:02 +0100 Subject: [PATCH] [BUG FIX] arpack may succeed to compute more EV than expected. --- PARPACK/TESTS/MPI/icb_parpack_cpp.cpp | 6 ++++-- TESTS/icb_arpack_cpp.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/PARPACK/TESTS/MPI/icb_parpack_cpp.cpp b/PARPACK/TESTS/MPI/icb_parpack_cpp.cpp index 46bf434..a2cd9c3 100644 --- a/PARPACK/TESTS/MPI/icb_parpack_cpp.cpp +++ b/PARPACK/TESTS/MPI/icb_parpack_cpp.cpp @@ -75,7 +75,8 @@ void real_symmetric_runner() { &(workd[ipntr[1] - 1])); } // check number of ev found by arpack. - if (iparam[4] != nev || info != 0) { + if (iparam[4] < nev /*arpack may succeed to compute more EV than expected*/ || info != 0) { + std::cout << "ERROR: iparam[4] " << iparam[4] << ", nev " << nev << ", info " << info << std::endl; throw std::domain_error("Error inside ARPACK routines"); } @@ -153,7 +154,8 @@ void complex_symmetric_runner() { } // check number of ev found by arpack - if (iparam[4] != nev || info != 0) { + if (iparam[4] < nev /*arpack may succeed to compute more EV than expected*/ || info != 0) { + std::cout << "ERROR: iparam[4] " << iparam[4] << ", nev " << nev << ", info " << info << std::endl; throw std::domain_error("Error inside ARPACK routines"); } diff --git a/TESTS/icb_arpack_cpp.cpp b/TESTS/icb_arpack_cpp.cpp index 7363334..18f7e2d 100644 --- a/TESTS/icb_arpack_cpp.cpp +++ b/TESTS/icb_arpack_cpp.cpp @@ -73,7 +73,8 @@ void real_symmetric_runner() { } // check number of ev found by arpack. - if (iparam[4] != nev || info != 0) { + if (iparam[4] < nev /*arpack may succeed to compute more EV than expected*/ || info != 0) { + std::cout << "ERROR: iparam[4] " << iparam[4] << ", nev " << nev << ", info " << info << std::endl; throw std::domain_error("Error inside ARPACK routines"); } @@ -151,7 +152,8 @@ void complex_symmetric_runner() { } // check number of ev found by arpack. - if (iparam[4] != nev || info != 0) { + if (iparam[4] < nev /*arpack may succeed to compute more EV than expected*/ || info != 0) { + std::cout << "ERROR: iparam[4] " << iparam[4] << ", nev " << nev << ", info " << info << std::endl; throw std::domain_error("Error inside ARPACK routines"); }