DLASR  - 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 DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A,  LDA
                         )

           CHARACTER     DIRECT, PIVOT, SIDE

           INTEGER       LDA, M, N

           DOUBLE        PRECISION A( LDA, * ), C( * ), S( * )


PURPOSE

       DLASR  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



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
               sequence 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
               rotation 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) DOUBLE PRECISION 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  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 ) )

       A       (input/output) DOUBLE PRECISION 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).


Man(1) output converted with man2html