# ?lagtm

Performs a matrix-matrix product of the form C = `alpha*`A*B+`beta*`C, where A is a tridiagonal matrix, B and C are rectangular matrices, and `alpha` and `beta` are scalars, which may be 0, 1, or -1.

## Syntax

call slagtm( trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, ldb )

call dlagtm( trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, ldb )

call clagtm( trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, ldb )

call zlagtm( trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, ldb )

## Description

This routine performs a matrix-vector product of the form:

`B := alpha*A*X + beta*B`

where A is a tridiagonal matrix of order n, B and X are n-by-nrhs matrices, and alpha and beta are real scalars, each of which may be 0., 1., or -1.

## Input Parameters

trans

  CHARACTER*1. Must be 'N' or 'T' or 'C'.

  Indicates the form of the equations:

  If `trans = 'N'`, then `B := alpha*A*X + beta*B` (no transpose);

  If `trans = 'T'`, then `B := alpha*AT*X + beta*B` (transpose);

  If `trans = 'C'`, then `B := alpha*AH*X + beta*B` (conjugate transpose)

n

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

nrhs

  INTEGER. The number of right-hand sides, i.e., the number of columns in X and B (`nrhs ≥ 0`).

alpha, beta

  REAL for slagtm/clagtm

  DOUBLE PRECISION for dlagtm/zlagtm

  Specify the scalars alpha and beta respectively. alpha must be 0., 1., or -1.; otherwise, it is assumed to be 0. beta must be 0., 1., or -1.; otherwise, it is assumed to be 1.

dl, d, du

  REAL for slagtm

  DOUBLE PRECISION for dlagtm

  COMPLEX for clagtm

  COMPLEX*16 for zlagtm.

  Arrays: dl(n - 1), d(n), du(n - 1).

  The array dl contains the (n - 1) sub-diagonal elements of T.

  The array d contains the n diagonal elements of T.

  The array du contains the (n - 1) super-diagonal elements of T.

x, b

  REAL for slagtm

  DOUBLE PRECISION for dlagtm

  COMPLEX for clagtm

  COMPLEX*16 for zlagtm.

  Arrays:

  `x(ldx,*)` contains the n-by-nrhs matrix X. The second dimension of x must be at least `max(1, nrhs)`.

  b(ldb,*) contains the n-by-nrhs matrix B. The second dimension of b must be at least `max(1, nrhs)`.

ldx

  INTEGER. The leading dimension of the array x; `ldx ≥ max(1, n)`.

ldb

  INTEGER. The leading dimension of the array b; `ldb ≥ max(1, n)`.

## Output Parameters

b

  Overwritten by the matrix expression `B := alpha*A*X + beta*B`

Parent topic: Auxiliary Routines