NAG FL Interface
f06pgf (dtbmv)

Settings help

FL Name Style:


FL Specification Language:


1 Purpose

f06pgf computes the matrix-vector product for a real triangular band matrix or its transpose.

2 Specification

Fortran Interface
Subroutine f06pgf ( uplo, trans, diag, n, k, a, lda, x, incx)
Integer, Intent (In) :: n, k, lda, incx
Real (Kind=nag_wp), Intent (In) :: a(lda,*)
Real (Kind=nag_wp), Intent (Inout) :: x(*)
Character (1), Intent (In) :: uplo, trans, diag
C Header Interface
#include <nag.h>
void  f06pgf_ (const char *uplo, const char *trans, const char *diag, const Integer *n, const Integer *k, const double a[], const Integer *lda, double x[], const Integer *incx, const Charlen length_uplo, const Charlen length_trans, const Charlen length_diag)
The routine may be called by the names f06pgf, nagf_blas_dtbmv or its BLAS name dtbmv.

3 Description

f06pgf performs one of the matrix-vector operations
xAx   or   xATx ,  
where A is an n×n real triangular band matrix with k subdiagonals or superdiagonals, and x is an n-element real vector.

4 References

None.

5 Arguments

1: uplo Character(1) Input
On entry: specifies whether A is upper or lower triangular.
uplo='U'
A is upper triangular.
uplo='L'
A is lower triangular.
Constraint: uplo='U' or 'L'.
2: trans Character(1) Input
On entry: specifies the operation to be performed.
trans='N'
xAx.
trans='T' or 'C'
xATx.
Constraint: trans='N', 'T' or 'C'.
3: diag Character(1) Input
On entry: specifies whether A has nonunit or unit diagonal elements.
diag='N'
The diagonal elements are stored explicitly.
diag='U'
The diagonal elements are assumed to be 1, and are not referenced.
Constraint: diag='N' or 'U'.
4: n Integer Input
On entry: n, the order of the matrix A.
Constraint: n0.
5: k Integer Input
On entry: k, the number of subdiagonals or superdiagonals of the matrix A.
Constraint: k0.
6: a(lda,*) Real (Kind=nag_wp) array Input
Note: the second dimension of the array a must be at least n.
On entry: the n×n triangular band matrix A
The matrix is stored in rows 1 to k+1, more precisely,
  • if uplo='U', the elements of the upper triangle of A within the band must be stored with element Aij in a(k+1+i-j,j)​ for ​max(1,j-k)ij;
  • if uplo='L', the elements of the lower triangle of A within the band must be stored with element Aij in a(1+i-j,j)​ for ​jimin(n,j+k).
If diag='U', the diagonal elements of A are assumed to be 1, and are not referenced.
7: lda Integer Input
On entry: the first dimension of the array a as declared in the (sub)program from which f06pgf is called.
Constraint: ldak+1.
8: x(*) Real (Kind=nag_wp) array Input/Output
Note: the dimension of the array x must be at least max(1, 1+(n-1) ×|incx| ) .
On entry: the n-element vector x.
If incx>0, xi must be stored in x(1+(i1)×incx) , for i=1,2,,n.
If incx<0, xi must be stored in x(1(ni)×incx) , for i=1,2,,n.
On exit: the updated vector x stored in the array elements used to supply the original vector x.
9: incx Integer Input
On entry: the increment in the subscripts of x between successive elements of x.
Constraint: incx0.

6 Error Indicators and Warnings

None.

7 Accuracy

Not applicable.

8 Parallelism and Performance

f06pgf is not threaded in any implementation.

9 Further Comments

None.

10 Example

None.