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( * )
#include <sunperf.h>
void slasr(char side, char pivot, char direct, int m, int n,
float *sc, float *s, float *sa, int lda);
PURPOSE
SLASR 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) 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) 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).
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |