You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arpack/197.patch

60 lines
2.4 KiB

From 3e760c23e7adfab54a44032f43d61cf52916fa2f Mon Sep 17 00:00:00 2001
From: Franck HOUSSEN <fghoussen@users.noreply.github.com>
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");
}