Previous: dlaset Up: ../lapack-d.html Next: dlassq


dlasr


 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 vectorizes 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 rota-
              tion 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).