slasr(3)
NAME
- SLASR - perform the transformation A := P*A, when SIDE =
- 'L' or 'l' ( Left-hand side ) A := A*P', when SIDE = 'R' or 'r'
- ( Right-hand side ) where A is an m by n real matrix and P is an
- orthogonal matrix,
SYNOPSIS
SUBROUTINE SLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA
)
CHARACTER DIRECT, PIVOT, SIDE
INTEGER LDA, M, N
REAL A( LDA, * ), C( * ), S( * )
PURPOSE
- SLASR performs the transformation A := P*A, when SIDE =
- 'L' or 'l' ( Left-hand side ) A := A*P', when SIDE = 'R' or 'r' (
- Right-hand side ) where A is an m by n real matrix and P is an
- orthogonal matrix, consisting of a sequence of plane rotations
- determined by the parameters PIVOT and DIRECT as follows ( z = m
- when SIDE = 'L' or 'l' and z = n when SIDE = 'R' or 'r' ):
- When DIRECT = 'F' or 'f' ( Forward sequence ) then
P = P( z - 1 )*...*P( 2 )*P( 1 ),
- and when DIRECT = 'B' or 'b' ( Backward sequence ) then
P = P( 1 )*P( 2 )*...*P( z - 1 ),
- where P( k ) is a plane rotation matrix for the following
- planes:
when PIVOT = 'V' or 'v' ( Variable pivot ),
the plane ( k, k + 1 )
- when PIVOT = 'T' or 't' ( Top pivot ),
the plane ( 1, k + 1 )
- when PIVOT = 'B' or 'b' ( Bottom pivot ),
the plane ( k, z )
- c( k ) and s( k ) must contain the cosine and sine that
- define the matrix P( k ). The two by two plane rotation part of
- the matrix P( k ), R( k ), is assumed to be of the form
R( k ) = ( c( k ) s( k ) ).
( -s( k ) c( k ) )
- This version vectorises across rows of the array A when
- SIDE = 'L'.
ARGUMENTS
- SIDE (input) CHARACTER*1
- Specifies whether the plane rotation matrix P is
- applied to A on the left or the right. = 'L': Left, compute A
- := P*A
= 'R': Right, compute A:= A*P'
- DIRECT (input) CHARACTER*1
- Specifies whether P is a forward or backward se
- quence of plane rotations. = 'F': Forward, P = P( z - 1
- )*...*P( 2 )*P( 1 )
= 'B': Backward, P = P( 1 )*P( 2 )*...*P( z - 1 )
- PIVOT (input) CHARACTER*1
- Specifies the plane for which P(k) is a plane ro
- tation matrix. = 'V': Variable pivot, the plane (k,k+1)
= 'T': Top pivot, the plane (1,k+1)
= 'B': Bottom pivot, the plane (k,z)
- M (input) INTEGER
- The number of rows of the matrix A. If m <= 1, an
- immediate return is effected.
- N (input) INTEGER
- The number of columns of the matrix A. If n <= 1,
- an immediate return is effected.
- C, S (input) REAL arrays, dimension (M-1) if
- SIDE = 'L' (N-1) if SIDE = 'R' c(k) and s(k) contain the cosine
- and sine that define the matrix P(k). The two by two plane rota
- tion part of the matrix P(k), R(k), is assumed to be of the form
- R( k ) = ( c( k ) s( k ) ). ( -s( k ) c( k ) )
- A (input/output) REAL array, dimension (LDA,N)
- The m by n matrix A. On exit, A is overwritten by
- P*A if SIDE = 'R' or by A*P' if SIDE = 'L'.
- LDA (input) INTEGER
- The leading dimension of the array A. LDA >=
- max(1,M).
- LAPACK version 3.0 15 June 2000