Mercurial > octave
changeset 24231:6bd7d2eb6434
Display the right number/order of Ritz estimates in eigs when OPTS.disp = 2.
* eigs-base.cc: Display the right number/order of Ritz estimates in eigs when OPTS.disp = 2.
author | Marco Caliari <marco.caliari@univr.it> |
---|---|
date | Thu, 06 Apr 2017 13:30:47 +0200 |
parents | 0350da83c049 |
children | e0bcd17ac070 |
files | liboctave/numeric/eigs-base.cc |
diffstat | 1 files changed, 102 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/numeric/eigs-base.cc Mon Apr 03 11:17:07 2017 +0200 +++ b/liboctave/numeric/eigs-base.cc Thu Apr 06 13:30:47 2017 +0200 @@ -780,8 +780,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -1030,7 +1039,6 @@ k, tol, presid, p, v, n, iparam, ipntr, workd, workl, lwork, tmp_info F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); - info = tmp_info; if (f77_exception_encountered) @@ -1044,8 +1052,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -1320,8 +1337,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -1601,8 +1627,18 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + os << " " << workl[iptr(5)+k] << "\n"; + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k - 1; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -1902,8 +1938,18 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + os << " " << workl[iptr(5)+k] << "\n"; + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k - 1; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -2220,8 +2266,18 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + os << " " << workl[iptr(5)+k] << "\n"; + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k - 1; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -2536,8 +2592,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -2808,8 +2873,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its @@ -3099,8 +3173,17 @@ os << "Iteration " << iter - 1 << ": a few Ritz values of the " << p << "-by-" << p << " matrix\n"; - for (int i = 0 ; i < k; i++) - os << " " << workl[iptr(5)+i-1] << "\n"; + if (ido == 99) // convergence + { + for (F77_INT i = 0; i < k; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } + else + { + // the wanted Ritz estimates are at the end + for (F77_INT i = p - k; i < p; i++) + os << " " << workl[iptr(5)+i-1] << "\n"; + } } // This is a kludge, as ARPACK doesn't give its