dlasr(3F)

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,

Showing IRIX 6.5.30 (default release). Unchanged since IRIX 6.5.

NAME
     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 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 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).