Mercurial > hg > octave-nkf
comparison liboctave/CMatrix.cc @ 10779:add87b12e63c
implement proper CGELSD/ZGELSD RWORK size formulas, as found in lapack SVN
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 09 Jul 2010 14:12:59 +0200 |
parents | 9d95d8ab7c3a |
children | 8c858a1a2079 |
comparison
equal
deleted
inserted
replaced
10778:6035bf68a755 | 10779:add87b12e63c |
---|---|
2644 #endif | 2644 #endif |
2645 octave_idx_type nlvl = static_cast<octave_idx_type> (tmp) + 1; | 2645 octave_idx_type nlvl = static_cast<octave_idx_type> (tmp) + 1; |
2646 if (nlvl < 0) | 2646 if (nlvl < 0) |
2647 nlvl = 0; | 2647 nlvl = 0; |
2648 | 2648 |
2649 nlvl += 1; // FIXME: workaround for bug in LAPACK 3.1.1 | |
2650 | |
2651 octave_idx_type lrwork = minmn*(10 + 2*smlsiz + 8*nlvl) | 2649 octave_idx_type lrwork = minmn*(10 + 2*smlsiz + 8*nlvl) |
2652 + 3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1); | 2650 + 3*smlsiz*nrhs + std::max ((smlsiz+1)*(smlsiz+1), |
2651 n*(1+nrhs) + 2*nrhs); | |
2653 if (lrwork < 1) | 2652 if (lrwork < 1) |
2654 lrwork = 1; | 2653 lrwork = 1; |
2655 Array<double> rwork (lrwork, 1); | 2654 Array<double> rwork (lrwork, 1); |
2656 double *prwork = rwork.fortran_vec (); | 2655 double *prwork = rwork.fortran_vec (); |
2657 | 2656 |