ilaenv(3)
π« ilaenv(3) β Library Functions Manual π«
okay bestie, so this is ilaenv, a library function from the LAPACK manual and honestly? she's the vibe curator of the whole operation π β she picks the tuning parameters that make LAPACK routines go brrr on your machine.
β¨ NAME β¨
ilaenv β ilaenv: tuning parameters π
πΈ SYNOPSIS πΈ
Functions
integer function ilaenv (ispec, name, opts, n1, n2, n3, n4)β ILAENV π₯
π¦ Detailed Description π
Function Documentation
integer function ilaenv (integer ispec, character*( * ) name, character*( * ) opts, integer n1, integer n2, integer n3, integer n4)
ILAENV β¨
π«Ά 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.
!>
!> ILAENV returns an INTEGER
!> if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC
!> if ILAENV < 0: if ILAENV = -k, the k-th argument had an illegal value.
!>
!> 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.
!>
ngl, the lowercase thing is serious β lowkey a glow-up in all caps is allowed, but lowercase is a no π.
π Parameters π
ISPEC
!> ISPEC is INTEGER
!> 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 crossover 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 (DEPRECATED)
!> = 5: the minimum column dimension 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 factorization is used first to reduce
!> the matrix to a triangular form.)
!> = 7: the number of processors
!> = 8: the crossover point for the multishift QR method
!> for nonsymmetric eigenvalue problems (DEPRECATED)
!> = 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 infinity and NaN arithmetic can be trusted not to trap
!> =11: infinity arithmetic can be trusted not to trap
!> 12 <= ISPEC <= 17:
!> xHSEQR or related subroutines,
!> see IPARMQ for detailed explanation
!>
so ISPEC is literally the "which parameter do you want" selector, and like β options 4 and 8 are flagged DEPRECATED, so clock that π°οΈ (respectfully, they're giving retired icon).
NAME
!> NAME is CHARACTER*(*)
!> The name of the calling subroutine, in either upper case or
!> lower case.
!>
it's just the name of whoever's calling, upper or lower case both eat π
OPTS
!> OPTS is CHARACTER*(*)
!> The character options to the subroutine NAME, concatenated
!> into a single character string. For example, UPLO = 'U',
!> TRANS = 'T', and DIAG = 'N' for a triangular routine would
!> be specified as OPTS = 'UTN'.
!>
all the character options get smooshed into one string β 'UTN' in that example, iconic π
N1
!> N1 is INTEGER
!>
N2
!> N2 is INTEGER
!>
N3
!> N3 is INTEGER
!>
N4
!> N4 is INTEGER
!> Problem dimensions for the subroutine NAME; these may not all
!> be required.
!>
the problem dimensions bestie β not all of them are always needed π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
periodt, the whole squad π
π 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 dimensions 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 )
!>
okay so convention 1 is "keep the option order exactly, even the ones you don't use for this ISPEC" β fr fr, don't reorder π. Convention 2 is "dimensions go in argument-list order, unused ones get -1". And convention 3 is "the caller checks the returned value is valid" β like the STRTRI blocksize example up there π, main character energy.
alsooo, Definition at line 161 of file ilaenv.f. β bookmark that if you're the type to go read the source (iykyk) π
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code. not me being a whole auto-generated girlypop π«Ά
well bestie, that's the whole page β¨ β brought to you by LAPACK, Version 3.12.0, dated all the way back to the manual page footer, slay π ππ¦
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms