# hetri2 - Man Page

{he,sy}tri2: inverse

## Synopsis

### Functions

subroutine chetri2 (uplo, n, a, lda, ipiv, work, lwork, info)
CHETRI2
subroutine csytri2 (uplo, n, a, lda, ipiv, work, lwork, info)
CSYTRI2
subroutine dsytri2 (uplo, n, a, lda, ipiv, work, lwork, info)
DSYTRI2
subroutine ssytri2 (uplo, n, a, lda, ipiv, work, lwork, info)
SSYTRI2
subroutine zhetri2 (uplo, n, a, lda, ipiv, work, lwork, info)
ZHETRI2
subroutine zsytri2 (uplo, n, a, lda, ipiv, work, lwork, info)
ZSYTRI2

## Function Documentation

### subroutine chetri2 (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( * ) work, integer lwork, integer info)

CHETRI2

Purpose:

``` CHETRI2 computes the inverse of a COMPLEX hermitian indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
CHETRF. CHETRI2 set the LEADING DIMENSION of the workspace
before calling CHETRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is COMPLEX array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by CHETRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by CHETRF.```

WORK

`          WORK is COMPLEX array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley

NAG Ltd.

Definition at line 126 of file chetri2.f.

### subroutine csytri2 (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( * ) work, integer lwork, integer info)

CSYTRI2

Purpose:

``` CSYTRI2 computes the inverse of a COMPLEX symmetric indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
CSYTRF. CSYTRI2 sets the LEADING DIMENSION of the workspace
before calling CSYTRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is COMPLEX array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by CSYTRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by CSYTRF.```

WORK

`          WORK is COMPLEX array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley

NAG Ltd.

Definition at line 126 of file csytri2.f.

### subroutine dsytri2 (character uplo, integer n, double precision, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, double precision, dimension( * ) work, integer lwork, integer info)

DSYTRI2

Purpose:

``` DSYTRI2 computes the inverse of a DOUBLE PRECISION symmetric indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
DSYTRF. DSYTRI2 sets the LEADING DIMENSION of the workspace
before calling DSYTRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is DOUBLE PRECISION array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by DSYTRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by DSYTRF.```

WORK

`          WORK is DOUBLE PRECISION array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley

NAG Ltd.

Definition at line 126 of file dsytri2.f.

### subroutine ssytri2 (character uplo, integer n, real, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, real, dimension( * ) work, integer lwork, integer info)

SSYTRI2

Purpose:

``` SSYTRI2 computes the inverse of a REAL symmetric indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
SSYTRF. SSYTRI2 sets the LEADING DIMENSION of the workspace
before calling SSYTRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is REAL array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by SSYTRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by SSYTRF.```

WORK

`          WORK is REAL array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley

NAG Ltd.

Definition at line 126 of file ssytri2.f.

### subroutine zhetri2 (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex*16, dimension( * ) work, integer lwork, integer info)

ZHETRI2

Purpose:

``` ZHETRI2 computes the inverse of a COMPLEX*16 hermitian indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
ZHETRF. ZHETRI2 set the LEADING DIMENSION of the workspace
before calling ZHETRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is COMPLEX*16 array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by ZHETRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by ZHETRF.```

WORK

`          WORK is COMPLEX*16 array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley

NAG Ltd.

Definition at line 126 of file zhetri2.f.

### subroutine zsytri2 (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex*16, dimension( * ) work, integer lwork, integer info)

ZSYTRI2

Purpose:

``` ZSYTRI2 computes the inverse of a COMPLEX*16 symmetric indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
ZSYTRF. ZSYTRI2 sets the LEADING DIMENSION of the workspace
before calling ZSYTRI2X that actually computes the inverse.```
Parameters

UPLO

```          UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored
as an upper or lower triangular matrix.
= 'U':  Upper triangular, form is A = U*D*U**T;
= 'L':  Lower triangular, form is A = L*D*L**T.```

N

```          N is INTEGER
The order of the matrix A.  N >= 0.```

A

```          A is COMPLEX*16 array, dimension (LDA,N)
On entry, the block diagonal matrix D and the multipliers
used to obtain the factor U or L as computed by ZSYTRF.

On exit, if INFO = 0, the (symmetric) inverse of the original
matrix.  If UPLO = 'U', the upper triangular part of the
inverse is formed and the part of A below the diagonal is not
referenced; if UPLO = 'L' the lower triangular part of the
inverse is formed and the part of A above the diagonal is
not referenced.```

LDA

```          LDA is INTEGER
The leading dimension of the array A.  LDA >= max(1,N).```

IPIV

```          IPIV is INTEGER array, dimension (N)
Details of the interchanges and the block structure of D
as determined by ZSYTRF.```

WORK

`          WORK is COMPLEX*16 array, dimension (N+NB+1)*(NB+3)`

LWORK

```          LWORK is INTEGER
The dimension of the array WORK.
WORK is size >= (N+NB+1)*(NB+3)
If LDWORK = -1, then a workspace query is assumed; the routine
calculates:
- the optimal size of the WORK array, returns
this value as the first entry of the WORK array,
- and no error message related to LDWORK is issued by XERBLA.```

INFO

```          INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
inverse could not be computed.```
Author

Univ. of Tennessee

Univ. of California Berkeley