[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]

*AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 2*

## STPMV, DTPMV, CTPMV, or ZTPMV Subroutine

### Purpose

Performs matrix-vector operations on a packed triangular matrix.

### Library

BLAS Library (**libblas.a**)

### FORTRAN Syntax

**SUBROUTINE STPMV(***UPLO***, ***TRANS***, ***DIAG***,**
*N***, ***AP***, ***X***, ***INCX***)**
**INTEGER** *INCX***,***N*
**CHARACTER*1** *DIAG***,***TRANS***,***UPLO*
**REAL** *AP***(*), ***X***(*)**

**SUBROUTINE DTPMV(***UPLO***, ***TRANS***, ***DIAG***,**
*N***, ***AP***, ***X***, ***INCX***)**
**INTEGER** *INCX***,***N*
**CHARACTER*1** *DIAG***,***TRANS***,***UPLO*
**DOUBLE PRECISION** *AP***(*), ***X***(*)**

**SUBROUTINE CTPMV(***UPLO***, ***TRANS***, ***DIAG***,**
*N***, ***AP***, ***X***, ***INCX***)**
**INTEGER** *INCX***,***N*
**CHARACTER*1** *DIAG***,***TRANS***,***UPLO*
**COMPLEX** *AP***(*), ***X***(*)**

**SUBROUTINE ZTPMV(***UPLO***, ***TRANS***, ***DIAG***,**
*N***, ***AP***, ***X***, ***INCX***)**
**INTEGER** *INCX***,***N*
**CHARACTER*1** *DIAG***,***TRANS***,***UPLO*
**COMPLEX*16** *AP***(*), ***X***(*)**

### Description

The **STPMV**, **DTPMV**, **CTPMV**, or **ZTPMV** subroutine performs one of the matrix-vector operations:

`x := `
`A`
` * x`

OR

`x := `
`A`
`' * x`

where x is an *N* element vector and *A* is an *N* by *N* unit, or non-unit, upper or lower triangular matrix, supplied in packed form.

### Parameters

*UPLO* |
On entry, *UPLO* specifies whether the matrix is an upper or lower triangular matrix as follows:
*UPLO *= 'U' or 'u' |
*A* is an upper triangular matrix. |
*UPLO* = 'L' or 'l' |
*A* is a lower triangular matrix. |
Unchanged on exit. |

*TRANS* |
On entry, *TRANS* specifies the operation to be performed as follows:
*TRANS *= 'N' or 'n' |
x := *A ** x |
*TRANS *= 'T' or 't' |
x := *A*' * x |
*TRANS* = 'C' or 'c' |
x := *A*' * x |
Unchanged on exit. |

*DIAG* |
On entry, *DIAG* specifies whether or not *A *is unit triangular as follows:
*DIAG* = 'U' or 'u' |
*A* is assumed to be unit triangular. |
*DIAG* = 'N' or 'n' |
*A* is not assumed to be unit triangular. |
Unchanged on exit. |

*N* |
On entry, *N *specifies the order of the matrix *A*; *N* must be at least 0; unchanged on exit. |

*AP* |
A vector of dimension at least ( ( *N* * (*N*+1) )/2 ). On entry with *UPLO* = 'U' or 'u', the array *AP* must contain the upper triangular matrix packed sequentially, column by column, so that *AP*(1) contains *A*(1,1), *AP*(2) and *AP*(3) contain *A*(1,2) and *A*(2,2) respectively, and so on. On entry with *UPLO *= 'L' or 'l', the array *AP* must contain the lower triangular matrix packed sequentially, column by column, so that *AP*(1) contains *A*(1,1), *AP*(2) and *AP*(3) contain *A*(2,1) and *A*(3,1) respectively, and so on. When *DIAG *= 'U' or 'u', the diagonal elements of *A* are not referenced, but are assumed to be unity; unchanged on exit. |

*X* |
A vector of dimension at least (1 + (*N*-1 ) * abs( *INCX* ) ); on entry, the incremented array *X *must contain the *N* element vector x; on exit, *X* is overwritten with the transformed vector x. |

*INCX* |
On entry,* INCX* specifies the increment for the elements of *X*; *INCX *must not be 0; unchanged on exit. |

[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]