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