# HG changeset patch # User Marco Caliari # Date 1491478247 -7200 # Node ID 6bd7d2eb6434696752ef1b303f3496482a8cf2e9 # Parent 0350da83c04915075c533d8af8bdc9b606eb3a8d 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. diff -r 0350da83c049 -r 6bd7d2eb6434 liboctave/numeric/eigs-base.cc --- 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