Index: CMatrix.cc =================================================================== RCS file: /cvs/octave/liboctave/CMatrix.cc,v retrieving revision 1.133 diff -u -r1.133 CMatrix.cc --- CMatrix.cc 26 Sep 2007 19:56:54 -0000 1.133 +++ CMatrix.cc 28 Sep 2007 10:01:28 -0000 @@ -2627,9 +2627,6 @@ ComplexMatrix m = *this; - if (numel () == 1) - return ComplexMatrix (1, 1, exp (m(0))); - octave_idx_type nc = columns (); // Preconditioning step 1: trace normalization to reduce dynamic @@ -2644,7 +2641,11 @@ trshift /= nc; if (trshift.real () < 0.0) - trshift = trshift.imag (); + { + trshift = trshift.imag (); + if (trshift.real () > 709.0) + trshift = 709.0; + } for (octave_idx_type i = 0; i < nc; i++) m.elem (i, i) -= trshift; @@ -2729,8 +2730,13 @@ int minus_one_j = -1; for (octave_idx_type j = 7; j >= 0; j--) { - npp = m * npp + m * padec[j]; - dpp = m * dpp + m * (minus_one_j * padec[j]); + for (octave_idx_type i = 0; i < nc; i++) + { + npp.elem (i, i) += padec[j]; + dpp.elem (i, i) += minus_one_j * pade0c[j]; + } + npp = m * npp; + dpp = m * dpp; minus_one_j *= -1; }