1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
---
:name: csytri2
:md5sum: b6d9a32ccfff551e13aeac00195defaa
:category: :subroutine
:arguments:
- uplo:
:type: char
:intent: input
- n:
:type: integer
:intent: input
- a:
:type: complex
:intent: input/output
:dims:
- lda
- n
- lda:
:type: integer
:intent: input
- ipiv:
:type: integer
:intent: input
:dims:
- n
- work:
:type: complex
:intent: workspace
:dims:
- lwork
- lwork:
:type: integer
:intent: input
:option: true
:default: (n+nb+1)*(nb+3)
- info:
:type: integer
:intent: output
:substitutions:
c__1: "1"
c__m1: "-1"
nb: ilaenv_(&c__1, "CSYTRF", &uplo, &n, &c__m1, &c__m1, &c__m1)
:extras:
c__1: integer
c__m1: integer
nb: integer
:fortran_help: " SUBROUTINE CSYTRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )\n\n\
* Purpose\n\
* =======\n\
*\n\
* CSYTRI2 computes the inverse of a complex symmetric indefinite matrix\n\
* A using the factorization A = U*D*U**T or A = L*D*L**T computed by\n\
* CSYTRF. CSYTRI2 sets the LEADING DIMENSION of the workspace\n\
* before calling CSYTRI2X that actually computes the inverse.\n\
*\n\n\
* Arguments\n\
* =========\n\
*\n\
* UPLO (input) CHARACTER*1\n\
* Specifies whether the details of the factorization are stored\n\
* as an upper or lower triangular matrix.\n\
* = 'U': Upper triangular, form is A = U*D*U**T;\n\
* = 'L': Lower triangular, form is A = L*D*L**T.\n\
*\n\
* N (input) INTEGER\n\
* The order of the matrix A. N >= 0.\n\
*\n\
* A (input/output) COMPLEX array, dimension (LDA,N)\n\
* On entry, the NB diagonal matrix D and the multipliers\n\
* used to obtain the factor U or L as computed by CSYTRF.\n\
*\n\
* On exit, if INFO = 0, the (symmetric) inverse of the original\n\
* matrix. If UPLO = 'U', the upper triangular part of the\n\
* inverse is formed and the part of A below the diagonal is not\n\
* referenced; if UPLO = 'L' the lower triangular part of the\n\
* inverse is formed and the part of A above the diagonal is\n\
* not referenced.\n\
*\n\
* LDA (input) INTEGER\n\
* The leading dimension of the array A. LDA >= max(1,N).\n\
*\n\
* IPIV (input) INTEGER array, dimension (N)\n\
* Details of the interchanges and the NB structure of D\n\
* as determined by CSYTRF.\n\
*\n\
* WORK (workspace) COMPLEX array, dimension (N+NB+1)*(NB+3)\n\
*\n\
* LWORK (input) INTEGER\n\
* The dimension of the array WORK.\n\
* WORK is size >= (N+NB+1)*(NB+3)\n\
* If LDWORK = -1, then a workspace query is assumed; the routine\n\
* calculates:\n\
* - the optimal size of the WORK array, returns\n\
* this value as the first entry of the WORK array,\n\
* - and no error message related to LDWORK is issued by XERBLA.\n\
*\n\
* INFO (output) INTEGER\n\
* = 0: successful exit\n\
* < 0: if INFO = -i, the i-th argument had an illegal value\n\
* > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its\n\
* inverse could not be computed.\n\
*\n\n\
* =====================================================================\n\
*\n\
* .. Local Scalars ..\n LOGICAL UPPER, LQUERY\n INTEGER MINSIZE, NBMAX\n\
* ..\n\
* .. External Functions ..\n LOGICAL LSAME\n INTEGER ILAENV\n EXTERNAL LSAME, ILAENV\n\
* ..\n\
* .. External Subroutines ..\n EXTERNAL CSYTRI2X\n\
* ..\n"
|