# HG changeset patch # User Jaroslav Hajek # Date 1278677579 -7200 # Node ID add87b12e63c636cf3486eca67066a78e4988396 # Parent 6035bf68a7556f97e969182b8b4099f301cd58e8 implement proper CGELSD/ZGELSD RWORK size formulas, as found in lapack SVN diff --git a/liboctave/CMatrix.cc b/liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -2646,10 +2646,9 @@ if (nlvl < 0) nlvl = 0; - nlvl += 1; // FIXME: workaround for bug in LAPACK 3.1.1 - octave_idx_type lrwork = minmn*(10 + 2*smlsiz + 8*nlvl) - + 3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1); + + 3*smlsiz*nrhs + std::max ((smlsiz+1)*(smlsiz+1), + n*(1+nrhs) + 2*nrhs); if (lrwork < 1) lrwork = 1; Array rwork (lrwork, 1); diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,10 @@ +2010-07-09 Jaroslav Hajek + + * CMatrix.cc (ComplexMatrix::lssolve (const ComplexMatrix&)): + Undo 10708:2786b7ae3f80, implement proper correction. + * fCMatrix.cc (FloatComplexMatrix::lssolve (const FloatComplexMatrix&)): + Ditto. + 2010-06-28 Jaroslav Hajek * dim-vector.h (dim_vector::scalar_1x1): New method. diff --git a/liboctave/fCMatrix.cc b/liboctave/fCMatrix.cc --- a/liboctave/fCMatrix.cc +++ b/liboctave/fCMatrix.cc @@ -2639,10 +2639,9 @@ if (nlvl < 0) nlvl = 0; - nlvl += 1; // FIXME: workaround for bug in LAPACK 3.1.1 - octave_idx_type lrwork = minmn*(10 + 2*smlsiz + 8*nlvl) - + 3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1); + + 3*smlsiz*nrhs + std::max ((smlsiz+1)*(smlsiz+1), + n*(1+nrhs) + 2*nrhs); if (lrwork < 1) lrwork = 1; Array rwork (lrwork, 1);