# ?trtri

Computes inverse interval matrix to a triangular interval matrix.

## Syntax

call sitrtri(uplo, diag, n, a, lda, info)

call ditrtri(uplo, diag, n, a, lda, info)

call crtrtri(uplo, diag, n, a, lda, info)

call zrtrtri(uplo, diag, n, a, lda, info)

call cctrtri(uplo, diag, n, a, lda, info)

call zctrtri(uplo, diag, n, a, lda, info)

## Description

The routine ?trtri computes an interval enclosure of the inverse `inv(A)` of an interval triangular matrix A.

This routine implements a backward substitution algorithm and produces optimal enclosures of the inverse interval matrix, which is due to the simple structure of the matrix to be inverted.

## Input Parameters

uplo

  CHARACTER(1). Must be one of 'U' , 'L' , 'u', or 'l'.

  Indicates whether A is upper or lower triangular.

  If `uplo = 'U'` or 'u', then A is upper triangular.

  If `uplo = 'L'` or 'l', then A is lower triangular.

diag

  CHARACTER(1). Must be one of 'N', 'U', 'n', or 'u'.

  If `diag = 'N'` or 'n', then A is not a unit triangular matrix.

  If `diag = 'U'` or 'u', then A is unit triangular: diagonal elements of A are assumed to be 1 and not referenced in the array a.

n

  INTEGER. The order of the matrix A (`n ≥ 0`).

a

  S_INTERVAL for sitrtri.

  D_INTERVAL for ditrtri.

  CR_INTERVAL for crtrtri.

  ZR_INTERVAL for zrtrtri.

  CC_INTERVAL for cctrtri.

  ZC_INTERVAL for zctrtri.

  Array: DIMENSION (lda,*).

  Contains the matrix A.

  The second dimension of a must be at least max(1, n).

lda

  INTEGER. The first dimension of a, `lda ≥ max(1, n)`.

## Output Parameters

a

  Overwritten by an interval n-by-n matrix that encloses the inverse matrix `inv(A)`.

info

  INTEGER.

  If `info = 0`, the execution was successful.

  If `info = -i`, the i-th parameter has an illegal value.

  If info = i, the i-th diagonal element of A contains zero, A is singular, and its inversion could not be completed.

Parent topic: Routines for Inverting Interval Matrices