11 #include "common_magma.h"
13 #define Z(ix, iy) (z + (ix) + ldz * (iy))
15 #define lapackf77_dlanst FORTRAN_NAME( dlanst, DLANST )
153 char range_[2] = {range, 0};
165 double eps, orgnrm, p, tiny;
172 lquery = lwork == -1 || liwork == -1;
176 if (! (alleig || valeig || indeig)) {
180 }
else if (ldz <
max(1,n)) {
184 if (n > 0 && vu <= vl) {
188 if (il < 1 || il >
max(1,n)) {
190 }
else if (iu <
min(n,il) || iu > n) {
204 lwmin = 1 + 4*n + n*n;
211 if (lwork < lwmin && ! lquery) {
213 }
else if (liwork < liwmin && ! lquery) {
238 char char_I[]= {
'I', 0};
241 char char_F[]= {
'F', 0};
245 char char_M[]= {
'M', 0};
267 for(end = start+1; end < n; ++end){
283 char char_G[] = {
'G', 0};
285 lapackf77_dlascl(char_G, &izero, &izero, &orgnrm, &d_one, &m, &ione, &d[start], &m, info);
287 lapackf77_dlascl(char_G, &izero, &izero, &orgnrm, &d_one, &mm, &ione, &e[start], &mm, info);
289 magma_dlaex0( m, &d[start], &e[start],
Z(start, start), ldz, work, iwork, dwork,
'A', vl, vu, il, iu, info);
296 lapackf77_dlascl(char_G, &izero, &izero, &d_one, &orgnrm, &m, &ione, &d[start], &m, info);
300 char char_I[]= {
'I', 0};
301 lapackf77_dsteqr( char_I, &m, &d[start], &e[start],
Z(start, start), &ldz, work, info);
303 *info = (start+1) *(n+1) + end;
318 for (i = 1; i < n; ++i){
321 for (j = i; j < n; ++j){
338 char char_G[] = {
'G', 0};
339 lapackf77_dlascl(char_G, &izero, &izero, &orgnrm, &d_one, &n, &ione, d, &n, info);
341 lapackf77_dlascl(char_G, &izero, &izero, &orgnrm, &d_one, &nm, &ione, e, &nm, info);
343 magma_dlaex0( n, d, e, z, ldz, work, iwork, dwork, range, vl, vu, il, iu, info);
350 lapackf77_dlascl(char_G, &izero, &izero, &d_one, &orgnrm, &n, &ione, d, &n, info);