Contents


NAME

     ilaenv - The name of the calling subroutine, in either upper
     case or lower case.

SYNOPSIS

     INTEGER FUNCTION ILAENV(ISPEC, NAME, OPTS, N1, N2, N3, N4)

     CHARACTER * 6 NAME CHARACTER * 4 OPTS
     INTEGER ISPEC, N1, N2, N3, N4

     INTEGER*8 FUNCTION ILAENV_64(ISPEC, NAME, OPTS, N1, N2, N3, N4)

     CHARACTER * 6 NAME CHARACTER * 4 OPTS
     INTEGER*8 ISPEC, N1, N2, N3, N4

  F95 INTERFACE
     INTEGER FUNCTION ILAENV(ISPEC, NAME, OPTS, N1, N2, N3, N4)

     CHARACTER(LEN=6) :: NAME CHARACTER(LEN=4) :: OPTS
     INTEGER :: ISPEC, N1, N2, N3, N4

     INTEGER(8) FUNCTION ILAENV_64(ISPEC, NAME, OPTS, N1, N2, N3, N4)

     CHARACTER(LEN=6) :: NAME CHARACTER(LEN=4) :: OPTS
     INTEGER(8) :: ISPEC, N1, N2, N3, N4

  C INTERFACE
     #include <sunperf.h>

     int ilaenv(int ispec, char *name, char *opts,  int  n1,  int
               n2, int n3, int n4);

     long ilaenv_64(long ispec, char *name, char *opts, long  n1,
               long n2, long n3, long n4);

PURPOSE

     ilaenv  is  called  from  the  LAPACK  routines  to   choose
     problem-dependent parameters for the local environment.  See
     ISPEC for a description of the parameters.

     This version provides a set of parameters which should  give
     good,  but not optimal, performance on many of the currently
     available computers.  Users are encouraged  to  modify  this
     subroutine to set the tuning parameters for their particular
     machine using the option and problem size information in the
     arguments.
     This routine will not function correctly if it is  converted
     to  all  lower  case.   Converting  it  to all upper case is
     allowed.

ARGUMENTS

     ISPEC (input)
               Specifies the parameter  to  be  returned  as  the
               value  of  ILAENV.  = 1: the optimal blocksize; if
               this value is 1, an unblocked algorithm will  give
               the best performance.  = 2: the minimum block size
               for which the block routine should be used; if the
               usable  block  size  is  less  than this value, an
               unblocked routine should be used.  = 3: the cross-
               over  point  (in  a block routine, for N less than
               this value, an unblocked routine should be used) =
               4:  the number of shifts, used in the nonsymmetric
               eigenvalue routines = 5: the minimum column dimen-
               sion  for  blocking to be used; rectangular blocks
               must have dimension at least k by m,  where  k  is
               given  by  ILAENV(2,...) and m by ILAENV(5,...)  =
               6: the crossover point for the SVD (when  reducing
               an   m   by   n  matrix  to  bidiagonal  form,  if
               max(m,n)/min(m,n) exceeds this value, a QR factor-
               ization  is  used  first to reduce the matrix to a
               triangular form.)  = 7: the number of processors
               = 8: the crossover point for the multishift QR and
               QZ  methods  for nonsymmetric eigenvalue problems.
               = 9: maximum size of the subproblems at the bottom
               of  the computation tree in the divide-and-conquer
               algorithm (used by xGELSD and  xGESDD)  =10:  ieee
               NaN arithmetic can be trusted not to trap
               =11: infinity arithmetic can  be  trusted  not  to
               trap

     NAME (input)
               The name of  the  calling  subroutine,  in  either
               upper case or lower case.

     OPTS (input)
               The character options to the subroutine NAME, con-
               catenated  into  a  single  character string.  For
               example, UPLO = 'U', TRANS = 'T', and DIAG  =  'N'
               for  a  triangular  routine  would be specified as
               OPTS = 'UTN'.

     N1 (input)
                INTEGER

     N2 (input)
                INTEGER
     N3 (input)
                INTEGER

     N4 (input)
                INTEGER
               N1, N2, N3, N4 are problem dimensions for the sub-
               routine NAME; these may not all be required.
               >= 0: the value  of  the  parameter  specified  by
               ISPEC
               < 0:  if ILAENV = -k, the  k-th  argument  had  an
               illegal value.
               < 0:  if ILAENV = -k, the  k-th  argument  had  an
               illegal value.

FURTHER DETAILS

     The following conventions have been used when calling ILAENV
     from the LAPACK routines:
     1)  OPTS is a concatenation of all of the character  options
     to
         subroutine NAME, in the same order that they  appear  in
     the
         argument list for NAME, even if they  are  not  used  in
     determining
         the value of the parameter specified by ISPEC.
     2)  The problem dimensions N1, N2, N3, N4 are  specified  in
     the order
         that they appear in the argument list for NAME.   N1  is
     used
         first, N2 second, and so on, and unused  problem  dimen-
     sions are
         passed a value of -1.
     3)  The parameter value returned by ILAENV  is  checked  for
     validity in
         the calling subroutine.  For example, ILAENV is used  to
     retrieve
         the optimal blocksize for STRTRI as follows:

         NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
         IF( NB.LE.1 ) NB = MAX( 1, N )