# ?pttrsv

Solves a symmetric (Hermitian) positive-definite tridiagonal system of linear equations, using the L*D*LH factorization computed by ?pttrf.

## Syntax

call spttrsv(trans, n, nrhs, d, e, b, ldb, info)

call dpttrsv(trans, n, nrhs, d, e, b, ldb, info)

call cpttrsv(uplo, trans, n, nrhs, d, e, b, ldb, info)

call zpttrsv(uplo, trans, n, nrhs, d, e, b, ldb, info)

## Description

This routine solves one of the triangular systems:

`LT*X = B`, or `L*X = B` for real flavors,

or

`L*X = B`, or `LH*X = B`,

`U*X = B`, or `UH*X = B` for complex flavors,

where L (or U for complex flavors) is the Cholesky factor of a Hermitian positive-definite tridiagonal matrix A such that

`A = L*D*LH` (computed by spttrf/dpttrf)

or

`A = UH*D*U` or `A = L*D*LH` (computed by cpttrf/zpttrf).

## Input Parameters

uplo

  CHARACTER*1. Must be 'U' or 'L'.

  Specifies whether the superdiagonal or the subdiagonal of the tridiagonal matrix A is stored and the form of the factorization:

  If `uplo = 'U'`, e is the superdiagonal of U, and ``A = UH*D*U` or `A = L*D*LH``;

  if `uplo = 'L'`, e is the subdiagonal of L, and `A = L*D*LH`.

  The two forms are equivalent, if A is real.

trans

  CHARACTER.

  Specifies the form of the system of equations:

  for real flavors:

  if `trans = 'N'`: `L*X = B` (no transpose)

  if `trans = 'T'`: `LT*X = B` (transpose)

  for complex flavors:

  if `trans = 'N'`: `U*X = B` or `L*X = B` (no transpose)

  if `trans = 'C'`: `UH*X = B` or `LH*X = B` (conjugate transpose).

n

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

nrhs

  INTEGER. The number of right hand sides, that is, the number of columns of the matrix B. `nrhs ≥ 0`.

d

  REAL array, DIMENSION (n). The n diagonal elements of the diagonal matrix D from the factorization computed by ?pttrf.

e

  COMPLEX array, DIMENSION`(n-1)`. The (n-1) off-diagonal elements of the unit bidiagonal factor U or L from the factorization computed by ?pttrf. See uplo.

b

  COMPLEX array, DIMENSION (ldb, nrhs).

  On entry, the right hand side matrix B.

ldb

  INTEGER.

  The leading dimension of the array b.

  `ldb ≥ max(1, n)`.

## Output Parameters

b

  On exit, the solution matrix X.

info

  INTEGER.

  `= 0`: successful exit

  `< 0`: if `info = -i`, the i-th argument had an illegal value.

Parent topic: Auxiliary Routines