NAME
     clasr - 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  complex
     matrix and P is an orthogonal matrix,
SYNOPSIS
     SUBROUTINE CLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
     CHARACTER DIRECT, PIVOT, SIDE
     INTEGER LDA, M, N
     REAL C( * ), S( * )
     COMPLEX A( LDA, * )
     #include <sunperf.h>
     void clasr(char side, char pivot, char direct, int m, int n,
               float *sc, float *s, complex *ca, int lda);
PURPOSE
     CLASR   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 ) )
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) REAL arrays,  dimension  (M-1)  if
               SIDE  = 'L' (N-1) if SIDE = 'R' c(k) and s(k) con-
               tain 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) COMPLEX 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).
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |