--- liboctave/CMatrix.orig 2007-09-24 14:20:52.000000000 +0200 +++ liboctave/CMatrix.cc 2007-09-24 14:28:49.000000000 +0200 @@ -2622,9 +2622,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 @@ -2639,7 +2636,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; @@ -2724,8 +2725,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; }