328
328
min_lwork = MINWRK
329
329
max_lwork = MAXWRK
332
subroutine heev(min_lwork,max_lwork,prefix,n,lower)
334
integer min_lwork,max_lwork,n,lower
336
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&lower)
337
cf2py callprotoargument int*,int*,char*,int*,int*
338
cf2py intent(out,out=minwrk) :: min_lwork
339
cf2py intent(out,out=maxwrk) :: max_lwork
340
cf2py integer optional,intent(in) :: lower = 0
341
cf2py intent(in) :: prefix
342
cf2py intent(in) :: n
354
NB = ILAENV( 1, prefix // 'HETRD', UPLO, N, -1, -1, -1 )
356
min_lwork = MAX(1,2*N-1)
357
max_lwork = MAX( 1, ( NB+1 )*N )
361
subroutine syev(min_lwork,max_lwork,prefix,n,lower)
363
integer min_lwork,max_lwork,n,lower
365
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&lower)
366
cf2py callprotoargument int*,int*,char*,int*,int*
367
cf2py intent(out,out=minwrk) :: min_lwork
368
cf2py intent(out,out=maxwrk) :: max_lwork
369
cf2py integer optional,intent(in) :: lower = 0
370
cf2py intent(in) :: prefix
371
cf2py intent(in) :: n
383
NB = ILAENV( 1, prefix // 'SYTRD', UPLO, N, -1, -1, -1 )
385
min_lwork = MAX(1,3*N-1)
386
max_lwork = MAX( 1, ( NB+2 )*N )
390
subroutine gees(min_lwork,max_lwork,prefix,n,compute_v)
392
integer min_lwork,max_lwork,n,compute_v
395
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&compute_v)
396
cf2py callprotoargument int*,int*,char*,int*,int*
397
cf2py intent(out,out=minwrk) :: min_lwork
398
cf2py intent(out,out=maxwrk) :: max_lwork
399
cf2py integer optional,intent(in) :: compute_v = 1
400
cf2py intent(in) :: prefix
401
cf2py intent(in) :: n
403
INTEGER HSWORK, MAXWRK, MINWRK, MAXB, K
408
MAXWRK = N + N*ILAENV( 1, prefix // 'GEHRD', ' ', N, 1, N, 0 )
409
MINWRK = MAX( 1, 2*N )
410
IF( compute_v.eq.0 ) THEN
411
MAXB = MAX( ILAENV( 8, prefix // 'HSEQR',
412
$ 'SN', N, 1, N, -1 ), 2 )
413
K = MIN( MAXB, N, MAX( 2, ILAENV( 4, prefix // 'HSEQR',
414
$ 'SN', N, 1, N, -1 ) ) )
415
HSWORK = MAX( K*( K+2 ), 2*N )
416
MAXWRK = MAX( MAXWRK, HSWORK, 1 )
418
MAXWRK = MAX( MAXWRK, N+( N-1 )*
419
$ ILAENV( 1, prefix // 'UNGHR', ' ', N, 1, N, -1 ) )
420
MAXB = MAX( ILAENV( 8, prefix // 'HSEQR',
421
$ 'EN', N, 1, N, -1 ), 2 )
422
K = MIN( MAXB, N, MAX( 2, ILAENV( 4, prefix // 'HSEQR',
423
$ 'EN', N, 1, N, -1 ) ) )
424
HSWORK = MAX( K*( K+2 ), 2*N )
425
MAXWRK = MAX( MAXWRK, HSWORK, 1 )
433
subroutine geqrf(min_lwork,max_lwork,prefix,m,n)
435
integer min_lwork,max_lwork,m,n
438
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&m,&n)
439
cf2py callprotoargument int*,int*,char*,int*,int*
440
cf2py intent(out,out=minwrk) :: min_lwork
441
cf2py intent(out,out=maxwrk) :: max_lwork
442
cf2py intent(in) :: prefix
443
cf2py intent(in) :: m,n
450
NB = ILAENV( 1, prefix // 'GEQRF', ' ', M, N, -1, -1 )
453
max_lwork = MAX(1,N*NB)
456
subroutine gqr(min_lwork,max_lwork,prefix,m,n)
458
integer min_lwork,max_lwork,m,n
461
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&m,&n)
462
cf2py callprotoargument int*,int*,char*,int*,int*
463
cf2py intent(out,out=minwrk) :: min_lwork
464
cf2py intent(out,out=maxwrk) :: max_lwork
465
cf2py intent(in) :: prefix
466
cf2py intent(in) :: m,n
473
if ((prefix.eq.'d').or.(prefix.eq.'s')
474
$ .or.(prefix.eq.'D').or.(prefix.eq.'S')) then
475
NB = ILAENV( 1, prefix // 'ORGQR', ' ', M, N, -1, -1 )
477
NB = ILAENV( 1, prefix // 'UNGQR', ' ', M, N, -1, -1 )
480
max_lwork = MAX(1,N*NB)